This meta issue tracks certain Entity API improvements as well as defines a roadmap for an Entity Serialization API needed to make web services (e.g. content staging) easier to accomplish in contrib. This meta issue won't cover the RESTful interface itself, only the components such an serialization interface that we'll need.
All of the things below was identified, discussed and sketched on during the WSCCI Web Services Format Sprint in Paris, June 3rd - 6th. Report from that sprint is available here: http://groups.drupal.org/node/237443
We've already identified that people talk about some different things when mentioning 'content staging'. The two primary things are:
- Moving content between different physical environments (editorial staging > quality assurance > production)
- Content moderation and content preview on one and the same environment
While both are immensely important for large scale Drupal implementations and both sometimes can solve the same problem, they are technically different. The former has some more history as being referred to as 'content staging' and the later to just 'moderation' and/or 'content preview'.
Once we have a good framework for moving content between environments we can build more workflows on top of that. So this meta issue is going to focus on 'content staging' in the first sense.
Step 1: #1368394: Convert all core entities to classed objects Done! A lot of the patches in those sub-issues are, or are quite close to RTBC, let's push those through first.
Step 2: Finish the UUID implementation
In order to identify entities across environments we need UUIDs.
- #1252486: Low level UUID API in core has follow-up issues:
- #1637370: Add UUID support to core entity types
Step 3: Entity Property API
In order to do things like entity serialization we need an Entity Property API that should provide better introspection of entities. Done at #1696640: Implement API to unify entity properties and fields.
Step 4: Entity Reference module in core (optional)
#1801304: Add Entity reference field. This would replace the File Field and Taxonomy Term Reference Field in core, as well as all pseudo-references like node author, parent node for comments etc.
This step is not required, it would just add a lot more consistency to the whole API. But considering the time constraints we have, we might skip this.
- Start a branch in the Entity API Improvements sandbox
- Create an issue in the core queue with initial patch once we have a working prototype with passing tests.
Step 5: Entity Serialization API
Lin Clark completed this work - #1832840: Enable fieldtype-specific JSON-LD normalization
During the WSCII sprint (mentioned above) we more or less decided to move forward with JSON-LD as the serialization format for core. We also identified that we need something similar to the AtomPub specification (definition of collections, support for paging etc.). We might end up replicating that in JSON-LD.
Step 6: Start work on Deploy for Drupal 8
After we're done with step 1-5 we can start doing some first test implementations in contrib to experiment with a UI and so on.
Related discussions around content moderation, content preview etc are here: