Running Symfony in the cloud
The keynote was held by Fabien Potencier, founder of the Symfony framework. It seems like the most important improvements for him were the ones which enable Symfony to run in the cloud. This was especially important because he was also announcing the SensioCloud. We are already super excited to see if we get Sulu running on that cloud. We are pretty confident since it seems to be based on platform.sh on which Sulu is already working.
Caching with PSR-6
Nicolas Grekas, another Symfony contributer, was talking about the PSR-6 caching interface – developed by the Framework Interoperability Group. This was by the way the topic of a talk by Micheal Cullum. Nicolas also focused on the Symfony Cache implementation and shared benchmarks with the competitors.
The interface is very interesting for us because it also contains tag-based invalidation of caches. That would be a great addition for Sulu because it would allow us to clear the cache not only for the page being currently saved itself but also for all other pages referencing the page via an internal link or the navigation. This is already working if you use Sulu with Varnish, but not for the Symfony HTTPCache. The problem is that this is only implemented for the Cache but not for the HTTPCache component. There was already a Pull Request, which is not merged yet, because there was no consens reached.
When to abstract
One of my favourite talks was from Kore Nordmann, who philosophised about how much abstraction is right. A term that sticked from the talk was "pattern recognition machines". The connection is that developers tend to recognize a design pattern in every problem once they learned about it. Another analogy would be "Everything looks like a nail if a hammer is the only thing you've got".
Another important take away is that you shouldn't build abstraction if you don't have at least to different implementations for them because you won't know the domain too well and forget about important arguments anyway.
But the most important distinction for me was the one between libraries, projects and products. That means that not everything we do in Sulu, which is a product, makes sense in projects which are using Sulu. We build a lot of abstractions to match as many use cases as possible because people will also use Sulu this way. But that does not necessarily mean that this also makes sense for projects built on top of Sulu.
The next day started with another keynote from Fabien. He talked about all the different Symfony distributions out there (symfony-standard, symfony-rest, symfony-cmf-sandbox, ...) and that he doesn't like the way they are handled. The problem is that applications forking from symfony-standard are basically inheriting from them. But a very basic rule of object oriented programming is "Composition over inheritance" and that's what he has been following with Symfony Flex. This is a tool which allows you to compose your application from different bundles, without starting from a distribution like symfony-standard.
But it also solves another problem. It will automatize a few tasks which must be done during the installation of a bundle. Another positive side effect on Symfony is that the FrameworkBundle was decoupled from a lot of dependencies so that you really only have to install what you need to. So there is not even a need to install the console component!
We are really looking forward to this and hope that we can integrate Sulu somehow in this process. This would also make our distributions obsolete and make the installation a lot more flexible.
Don't kill the chef
Probably the most entertaining presentation was from Andrew Carter who talked about keeping PHP alive between requests. The analogy of a web request as a restaurant was hilarious! Definitely the slide of the conference.
The talk was about not killing the chef, meaning that the PHP process and even Symfony will be kept alive. Libraries helping you with that are PHP-PM and PHPFastCGI. That's another way to get performance improvements, but Andrew also warned of the consequences. You'll have to fight problems, which you won't have otherwise. In addition to that also 3rd party libraries do not handle these issues well (e.g. memory leaks, sessions, ...)
SymfonyCon 2016 was lots of great people, talks and discussions. We also heard about a few new ideas and products which might also turn out to be very interesting for Sulu. So stay tuned and check out the progress we make over time.