Thomas Schedler
Thomas Schedler
Co-Founder & CEO – Sulu GmbH
Sulu's technical Master Blaster. Tries to keep our code on it's toes and to master Heston Blumenthal recipes on his very seldom free days.
@chirimoya

Sulu 2.0 - New major release ahead!

As mentioned on the blog the Sulu 1.6 release is the last one of the 1.x series. There are many reasons why we made this decision and it’s time to share our thoughts with our community.

Software and especially the technology which is used to build the software evolves over time. This is challenging for everybody involved, but the Sulu team has always been very committed to the project forward with the best available solutions. Building a large legacy codebase has never been our goal. So a new major version allows us to introduce breaking changes und clean up existing code.

Luckily we decided early on to separate the back office admin into a frontend-application and backend-application. They only communicate via REST API with each other. So it's basically a classic single page application. This allows us to move forward with a different pace for each technology. And exactly this is what we are going to do. 

JavaScript development changed massive in the last five years and so our frontend stack became outdated. AuraJS, a scalable, event-driven JavaScript architecture for developing component-based applications, sounded promising back then and was backed by big names in the JavaScript world like Addy Osmani. But it didn't developed as hoped. Angular, React or VueJS are now the market leaders and so we have to adopt.

But not only technology has moved us to this step, also the complexity to add own modules based on the current architecture was an issue. Adding your own module forced our users to write JavaScript code and dig into AuraJS with all the underlying technologies like RequireJS and Backbone. We also had to accept that not every PHP Developer wants to write JavaScript code and vice versa. 

So in spring 2017 we decided to finalize the feature set for the 1.x series and introduced Audience Targeting in 1.6. Afterwards we started moving forward regarding the frontend issues. We quickly realized that it won't be a refactoring of the existing code and we need to start over again.

At this point we already had some experience with Angular and React and to be honest, after our past decision only frameworks from big players were taken into account, at best when they are using the technology heavily it self.

Long story short, after some proof of concepts we decided to go for React and till today we are completely happy with this decision. By all the blames Facebook received within the last weeks, and I won't comment on that, but how they push open source technology forward and especially how they handle backwards compatibility and upgrades within the react project is really outstanding. Kudos to Dan Abramov, Andrew Clark and the whole react team! There will be a separate blog post about all the technology details. Which state management library we are using and how we reach our goal not to write any JavaScript code to add own modules.

On the other hand the PHP ecosystem fortunately doesn't develop that quickly and we are really happy to have chosen Symfony as our foundation. So regarding PHP we will only update all the dependencies and will introduces smaller breaking change which should not affect a lot of projects. We are also going to rise the minimal PHP version to 7.1 and will support Symfony 3.4 and 4.x.

What exactly means this for upgrades from 1.6 to 2.0?

If you haven’t used custom built modules the upgrade path should be fairly smooth. Only smaller BC breaks need to be adopted. The data structure will stay the same and there will be obviously an upgrade guidance.

If you have added your own modules the good news is that all the backend stuff like controllers, models, services, REST API's etc. will stay in place. You only need to check that your code is at least Symfony 3.4 compatible and runs with PHP 7.1. 

Now regarding your back office frontend code it's time so say goodbye. In the most cases with the new frontend architecture you only need to add additional Symfony configurations and define form metadata like you are used to from the pages or snippets modules. But it will still be possible to add your own components and extend existing JavaScript code, but now in a state of the art way and with bulletproof libraries. But as already mentioned, more technical details will follow soonish.

When will Sulu 2.0 be released?

That's a good question. Our initial goal was to release at the beginning of 2018, but things don't always play out like we want. Our current plan is to release Sulu 2.0 in autumn. There will be a developer preview in summer. 

What about 1.x support?

We are aware of the fact that Sulu is used for all kinds of websites and even mission critical web applications. That's exactly the reason why we are going to announce today that Sulu is going to have LTS - Long Term Support - versions. What does that mean exactly? The last release of every major series is a LTS version and will be maintained until the release after the next major release. So 1.6 will be supported till the release of 3.0. We are planning to ship new major versions every 2 to 3 years to keep up with the evolution.

So stay tuned for the upcoming blog posts with more details about Sulu 2.0. It's going to be an amazing journey.