The past couple of months have been an exceptional time for many of us. Due to the coronavirus outbreak many people have needed to change their daily routines at work as well as at leisure. We at Ibexa are no exception, but we've already been used to working distributedly. Our routines have changed but our work has not been disrupted.
So we've not been resting on our laurels, but have been working perhaps harder then ever this past Spring. This is why I thought it would be timely to share some key technical highlights from our latest release, eZ Platform version 3.0.0. This version brings many new user facing features, but a lot of work has been behind the scenes.
eZ Platform now runs on Symfony 5
eZ Platform 3 is a major engineering effort to enable building an even better product in the future. While in eZ Platform 2 we revamped the front-end architecture, in version 3 we've kept the UI concepts much unchanged. For version 3 we undertook a reworking of our internals, some API changes and repository enhancements.
A huge overarching task that touched many parts of our codebase was an upgrade of the Symfony framework. The process was detailed in a blog post last November by Maciej Kobus, who led our migration from Symfony 3.4:
I think the single biggest issue we had was simply the amount of packages we maintain. It was mentioned in previous answer, but I will repeat myself: it isn't easy if you are dealing with that many dependencies.
eZ Platform v3.0 runs on Symfony 5.0. This is the latest version of the popular general purpose PHP framework. Using this as our foundation allows us to accelerate development internally, but because of the back-to-basics approach back in Symfony 4, I believe our partners will also be able to enjoy an higher development velocity in implementation projects with eZ Platform 3.x. In addition developers get access to the latest features in the Symfony ecosystem.
Get ready to upgrade to PHP 7.4
In addition to a lot of internal rework to make eZ Platform compatible with Symfony 5, our engineering team spent a lot of time in making the code compatible with (and to leverage new features of) the latest versions of the PHP runtime that powers millions of websites around the world. Using latest versions of the PHP runtime is not just for show, but give real-world benefits: unlocking performance gains and allow writing cleaner code with new syntax and features.
At the time of the release of eZ Platform 3.0.0 in early April we did not yet officially support 7.4 - the latest version of PHP. This is the last in line for the 7.x series, before the next leap to the brave new world of PHP 8. The latest stable version comes with speed and language feature improvements like the Foreign Function Interface (FFI) and OPCache Preloading. Adding support for PHP 7.4 in eZ Platform was a matter of validation. I was happy to notice that this effort is now complete and the latest patch update, eZ Platform v3.0.2 is compatible with PHP 7.4. Though I've yet to try it for myself.
The most interesting feature in PHP 7.4 for me is OPCache Preloading. It allows significant improvements in performance for complex apps (like eZ Platform), enabling us to do more with less computing resources. My initial experiences with OPCache Preloading showed that achieving compatibility is not straightforward. The Symfony team has been working on compatibility and Nicolas Grekas gave an update at the Symfony Live Online conference.
As you might imagine, getting eZ Platform validated and up-to-speed with OPCaching is an unknown at this point. I am a mere marketing peasant so I can't make any promises on engineering timelines, but I will certainly be exploring what kind of performance improvements OPCache Preloading can enable for our partners and customers.
We're eating our own dog food now
So you can see engineering has had a busy start to the year. But as you may have noticed, we've gone through a larger transformation as a company as we changed our name from eZ Systems to Ibexa just yesterday. For me and some others in the company this feels like an eternity ago as we've been working on the site renewal.
The old eZ Systems site was getting a long in the tooth. It had a history dating back to 2009, had been subject to a number of navigation redesigns and visual refreshes. You know the drill. So as a part of the brand renewal we wanted to do a complete overhaul of our public web presence. Quite obviously we were building with eZ Platform, but which version? We had a battle-tested version at our disposal, but were also tempted by the latest and greatest.
At the time when we made the decision to go ahead with a technical replatforming eZ Platform 3.0.0 Beta 5 was just released in late January 2020. After some initial prototyping to find out the stability I decided that we aim for a release with 3.0, but keep a backdoor to port to eZ Platform 2.5 LTS in case there were any blockers. In the months ahead there were some surprises, but site development went forward without major technical hickups.
Leading to the launch of 3.0.0 final documentation improvements (a big hand to the docs team in Kraków!) and added stability made working faster. But we still had some issues with key dependencies (Netgen Tags and Novactive SEO Bundle) that I'd rather not live without. We collaborated with our community on these packages and together we managed to get stable eZ Platform v3 compatible versions of both packages by the launch of this site.
Today live with the latest version of eZ Platform, hosted on eZ Platform Cloud. We're now officially now eating our own dog food at Ibexa. Bleeding edge DXP dog food, even. A big thank you to everyone who made this possible.
P.S. High fives are still okay, just remember to keep washing your hands :)