For a long time now, we’ve had two serialization formats. One intended for external usage, and one intended for internal usage. The former one is the format our web API uses. The latter one is the format in which entities are stored in the Wikibase Repo database, and is what ends up in the current dumps.
The code responsible for serialization and deserialization is for both formats not reusable and has a high degree of associated technical debt. To tackle both the reusability and design problems, we started work on two new components. One for the external format and one for the internal one.
* External one: https://github.com/wmde/
* Internal one: https://github.com/wmde/
They are now both essentially feature complete. The next step will be to replace usage of our existing code with usage of these new components, so the old code can be removed. Once this is done, the components will be 100% feature complete and very well tested, at which point their 1.0 versions will be released.
For a description of the responsibility of both components and an explanation of how to use them, see their README files.