RFC: ESCR / Neos UI integration

Hello, fellow Neosians!

now that the event sourced content repository’s API has become pretty stable, we would like to start evaluating how it can be properly integrated with the Neos UI (or vice versa).
Currently, we have something I like to call a “corruption layer” that translates the new models to the legacy ones so that the legacy API can still be used. We’d like to get rid oft that.

One idea that came up lately is to start this as a new project at the after-Con sprint in Dresden. Topics of discussion would be

  • what models does the UI actually need instead of nodes, node types etc.?
  • how can we get rid of (duplicate) CR domain logic in the UI?
  • what messages need to be exchanged between UI and PHP endpoint instead?
  • what technology do we want to use for message exchange? REST, GraphQL, …?
  • how do we structure packages properly? Can we build the UI package without PHP whatsoever?
  • which components can we start refactoring as a proof of concept?
  • you name it

An example: Moving nodes
When moving a node (as in an instance of a minimalistic UI specific node model) we need to decide where it can be placed. By specification, this is determined by the new ancestors, to be exact by their types and names alone.
The messages could look like this:
UI: I want to move the node with address {“contentStreamIdentifier”: “csi”, “nodeAggregateIdentifier”: “nody-mc-nodeface”, “dimensionSpacePoint”:{“language”:“ltz”}}, where can I put it?
Enpoint: All ancestors with the following node type specification / mask: {“parent”:[“Acme.Site:WebPage”], “grandParent”:"*"}
Why this is the case (might be grand parent restrictions or the new parent’s restrictions towards the to-be-moved’s children) is irrelevant to the UI, all it needs to know is each node’s name, its type’s name and the structure (this must be provided by the document/content tree model)

Wilhelm would like to join the sprint remotely for some modeling and prototyping sessions :partying_face:. We’d love to have a pre-sprint kickoff meeting though to discuss the basics, see and introduce the team etc.

So, who’s interested? :slight_smile:


I have written up a proof of concept proposing a new API Design tailored towards assisting with the ESCR integration: [Proof of concept]: Neos UI API by grebaldi · Pull Request #3331 · neos/neos-ui · GitHub