Funding Request: Event Sourced Content Repository - First Release

(David Spiola) #1

Hello Neos team and enthusiasts,

we (Sebastian Kurfürst, Bernhard Schmitt, Daniel Lienert, Bastian Waidelich and myself) would like to submit a funding request for the reboot of the Content Repository rewrite. We had a meeting on Sept 13th 2018 where we talked about the current status of the project. The general understanding among all participants was that the project made good progress but that it needs a boost to be more visible/attractive to other team members, early adopters and eventually for agencies and users. The “technical preview” was the first major milestone for the project, now it’s time to make the next - Release 0.1

In order to get a first release ready, we want to manage expectations and reduce the feature set to a minimum viable product (MVP). The main goal of the release is to make it accessible for people. The general idea is to make it an “optional” Neos package that you can download, install alongside the current CR, and use for some very basic scenarios. If you leave features like content dimension out of the picture (and some other things of course) a first release is not that far away anymore.

No, the first release will not be feature complete by far if you compare it to the current content repository. But it will have features and the foundation which the current CR will not be able to provide due the fact of its conceptual limitations. After we have released 0.1, we aim for having a straight roadmap, so that the new CR will grow with every release and will eventually make the current implementation obsolete. On the way we hope to attract other team members and Neos enthusiasts to be able to improve the feature set with every new release.

Included with 0.1

  • Install the Event Sourced Content Repository alongside the current CR as an extra package
  • Have a big switch, whether to use the new or the old CR for reading nodes.
  • Command API for CR mutations (AddNode, RemoveNode, …)
  • With soft- and hard-constraint checks to avoid inconsistent state
  • Core Domain Events for CR changes (NodeWasAdded, …)
  • That can be consumed by 3rd parties, too
  • Core projection(s)
  • The main Read Model (a graph based Node Tree that is very performant, …)
  • Migration from existing NodeData model
  • Ability to reverse-traverse reference nodes

Maybe included with 0.1

  • Hiding of nodes (with inheritance)
  • Change node type

Not included with 0.1, but with later releases

  • Multi-Tree support
  • Dimension fallbacks
  • Node.contentObject
  • UI for conflict resolution (instead probably: last publish wins like today)

What do we need
In order to get the first 0.1 release ready we roughly estimated 20 working days (16k Euro) for the first release. But we are happy about every bit of money we get. If you consider the work that has been already done, we are not that far away from release 0.1.

If we get funding granted, we are aiming to have the 0.1 version released somewhen in December 2018 or January 2019.

Last famous words
We consider this project a major cornerstone for the Neos project that will enable unique features in the future, like a “content time-travel” like we envisioned them in our very first concepts. But to push this forward there should be an general agreement among the team whether or not this is something we would like to see in future Neos CMS releases.

Spending available 2018 budget