2.x Revamp, Round Two: Overall Technology Direction and Next Steps

Thank you to everyone who has provided feedback on the future of eZ Platform! We have discussed, considered, and taken into account each and every comment, and we’re ready to to begin the journey together.

Our first steps will be specifications and prototyping. We’ll create and/or facilitate some prototypes to get a clear picture of the technical challenges (and opportunities) before us, and this can be a great opportunity for you and your team to contribute to the process and development.

For our efforts, our first steps will be to put our energy into a hybrid approach. We want to stay true to our roots, and ensure that eZ Platform really is *the* Symfony CMS. This means creating a better Developer Experience for Symfony developers, making it easy to extend the UI without learning too many new things on the front end.

So what exactly do we mean by Hybrid? Well, a Single Page App (SPA) is built entirely in JavaScript, or one of the languages that compiles to JavaScript. It connects to eZ Platform using only the REST API, making calls to the server and then taking responsibility for the response it gets back in return. With Hybrid this is rather handled by Symfony by default, with routing and extension points in Symfony, letting you extend the UI as you would normally expect in a traditional multi-page website while still using JS for enhanced functionality in the browser.

Now, we know that everyone that has tasted the power of modern front end frameworks and libraries such as Angular, Ember, React, etc. will want to avail themselves of the power those tools bring as well, so during our prototyping phase we’ll be doing a spike to explore how to wrap the front end pieces as webcomponents in such a way that they play well with others. Examples we have in mind, for instance, include a Developer wanting to write a full-scale SPA application for a part of the interface, e.g. if a partner wants to use Angular for their shopping features, or if eZ wants to do a Platform or Enterprise feature using React and Redux.

We’re not going to try to be everything to everyone, but there are some smart choices we can make to increase the universal flexibility of the hybrid solution.

Identified Themes

For the overall 2.x refactoring work we have identified a few connected themes that we will drive from eZ’s side, but where we want to involve partners and the community, with specifications coming out in the next few months on our newly-opened https://github.com/ezsystems/specs repository.

v2 UI Foundation & JavaScript Frameworks & Libraries

We will do a Spike on the Admin UI Architecture to identify the best approach for routing, extending, etc. Here we will also spend time identifying all the extension points that we have and work through iterations on how we can simplify them. Field Types, Menu Items, Action Buttons, etc.

For work with Javascript Frameworks and Libraries we will make a separate spike on this and test out and specify how you load the popular suspects. This is an Agile process, so code reviews, comments, Pull Requests, and feedback will help us to fail early and often, and produce the best possible solution for you.

PHP API

Work planned on the APIs are to simplify how you interact with it, to help speed up the work when we and you work on building parts of Admin UI, both also for front end.

This work takes inspiration from feedback from the community as well as identifying some of the needs made apparent by different attempts to wrap or extend the API, this includes languages handling, location drafts, location visibility and more outlined in this spike.

REST API

For decoupled Use Cases, as well as for needs in the Admin UI, we need to significantly improve the Developer Experience for our REST API.

Here we will aim towards releasing an update to the API documentation with simple testing and complete SDKs with examples in popular languages and stacks. More details to come.

Deployment

This is another important aspect of Developer Experience. Today it is a bit too much work to get a localhost developer environment up and running. Especially when working in teams, we can make it more efficient.

We need to aim to solve three Use Cases, but unlike the current Beta bundled in eZ Platform, these needs can and should be solved by different means:

  • Simple demo image
  • Development environment
  • Full clusterize production environment

With 2.x aiming to be on Symfony 3.x with its built-in environment variable support essential to container solutions, we will also have the opportunity to simplify how configuration can be injected into the application.

While this theme is a bit disconnected from the others, this important to both increase developer adoption as well as streamline the best practices for development and deployment.

Next Steps

We are also in touch with community members and partners that will propose features in other categories as contribution work soon as well, and if you have other things you’d like to propose don’t hesitate to get in touch.

So, definitely more to come soon, but now you at least know the direction we are moving. And we hope you all want to join us and contribute to the discussions around the specs coming out soon.

 

(Additional contributions to this blog post were provided by Bård Farstad, Roland Benedetti, and David Liedle.)

Leave us a comment
blog comments powered by Disqus