This email is meant to provide an overview of the plans regarding the reorganization of the components in the DataValues.git repository.
Current component situation:
* ValueParsers, depends on DataValues
* ValueValidators, depends on DataValues
* ValueFormatters, depends on DataValues
* DataTypes, depends on all the above
* ValueView, depends on all the above
All of these are bundling inheritance hierarchies and are both defining interfaces as well as complex implementations.
* DataValues, will hold interfaces, exceptions and trivial implementations of current DataValues
* DataValues interfaces (still need a good name for this), will hold interfaces, exceptions and trivial implementations of ValueParsers, ValueFormatters and ValueValidators. Depends on DataValues
* DataValues implementations (still need a good name for this), will hold common non-trivial implementations of the interfaces defined by the above two components
* DataTypes, unchanged, now only dependent on DataValues and DataValues interfaces
* ValueView, unchanged, now only dependent on DataTypes, DataValues and DataValues interfaces
Dependencies are thus minimized and users are no longer forced to depend on unstable concrete classes for no reason. Coincidentally the number of components also drops by one.
Git repository wise, everything is currently in a single repository. Each component will go into its own repo, with the exception of ValueView and DataTypes, which we'll at least initially put together. This means creation of 3 new git repos. The DataTypes git repo has already been created and we are awaiting removal of the old DataTypes code from DataValues.git which currently is blocked by WMF configuration update. Once this is done we can proceed with the remaining two repos.
When this reorganization is done and the components reside in their own repos, we can make the two abstract ones releasable. These are the ones most dependent upon, and some of the current users have their own releases blocked due to the lack of any released version of their DataValues dependencies.