I’d like to update everybody on the current state of the event-sourced content repository, as we’ve worked on a budget as originally stated by Funding Request: Event Sourced Content Repository - First Release.
The status so far
We did the following in this time:
Originally Planned Goals reached
- The Event Sourced Content Repository is installable alongside the current CR as an extra package. Same for the Neos Adjustments package.
- There exists a Command API for CR mutations (AddNode, RemoveNode, …)
- We have soft- (and some hard)-constraint checks to avoid inconsistent state
- The main Read Model (a graph based Node Tree that is very performant) has been improved further
- Migration from existing NodeData model is possible using a command
- Ability to reverse-traverse reference nodes is possible.
- Show/Hide of Nodes is possible; visibility is taken into account in the read model.
Originally Planned Goals which were not reached
- We did not implement a big switch, whether to use the new or the old CR for reading nodes. This turned out to be more difficult than expected; that’s why we did not do this but instead you can always install/remove the new packages.
- Optional Goal: Work on changing node types has not yet been started.
Additional goals reached
- There is an additional package on top of the Event Sourced CR, which adjusts the Neos package to the new APIs. It is built in a way to be able to quite easily merge it back to the Neos core when it is ready.
- the package has a proper README with detailed setup instructions.
- A core change of Neos is almost finished; when this is done, the new CR is installable without an additional core patch.
- We simplified and streamlined the read API, by removing the NodeIdentifier; and using NodeAggregateIdentifier everywhere. (Note that NodeIdentifier is not yet fully removed in the write side yet)
- the full test cases now run with Travis on every commit; and they have been stabilized and improved a lot.
- We now have started an end-to-end Behat test suite which “emulates” the UI (but still works performantly with the internal browser). This helps catch errors in the Neos Integration layer (which is also quite big).
- Dimension fallbacks are not yet officially stable/supported, but all APIs support it.
- We started rewriting the Event Sourcing core package; switching to Symfony Serializer along the way. This is not yet merged, but hopefully soon ready.
- Deleting nodes has been implemented, though not yet connected in the UI.
- We recorded two webcasts for interested people to get into the concept.
Personal Summary: We’ve spent 70% of the originally allocated budget; and we were able to do more than the expected goals. I’d have wished for more people to work on the topic, but I know of course it’s a difficult topic to start with.
I am doing a new funding request now because we’ve planned the original funding request to last until end of December 2018.
The next request for funding
For me and Bastian, the working mode of being able to focus on the CR rewrite worked quite well. Although I am only currently working for two days a week because of parental leave, I was still able to allocate quite some thoughts (and time) on the CR rewrite.
Starting in March, I will again work full-week – that’s why some funding again would be very helpful for me to ensure the CR will continue to get a high priority. (I hope I can continue the same streak even without funding; but I cannot promise it yet.)
So the goal would be to have CR work in February/March/April funded with another 10.000 €, to have a good state to show for Neos Conference.
Next Steps to work on
- implement “Publish a single page” (that’s actually harder than it sounds at the first sight)
- get the Neos core change ready for merge.
- finalize the Event Sourcing core package.
- Connect “Delete node” in the UI.
- actually try to edit more and more content and see where things break.
Note I am not promising to reach a certain feature level yet with the next round of funding. I can only promise that we try to stay focused on the critical path as we see it; and work on the most critical issues we see which block actual usage of the new CR. We’ll keep you updated here as usual.
Neos team members, please vote on how to progress:
- Yes, let’s grant another 10.000 € to work on the ES CR in February/March/April.
- No, don’t grant that budget.
- I still have open questions (please add question below)
Closing Thoughts and Links
- Check out our work at https://github.com/neos/contentrepository-development-collection
- visit us on slack.neos.io in #project-cr-rewrite - and be very very welcome to join our discussion.
- I’d love if others would join our efforts; and I will personally do everything I can to get you onboarded quickly. We have currently most of our infrastructure and architecture in place; and quite some features can be easily implemented with just a little guidance. So don’t be afraid; you are very welcome to join the efforts .