ramblings on PHP, SQL, the web, politics, ultimate frisbee and what else is on in my life
State of the Symfony2 CMF
People keep asking me when the CMF will be ready. Or they say that they will join once its further along because they think its too far away to be relevant for their clients today. So the good news is that Liip already has a huge client using CMF components. The combination of Jackalope with Jackrabbit and the PHPCR ODM (provides a similar API than the other Doctrine ORM/ODM) is ready for prime time. There are also already a fair number of components in different state that are close to be finished, simply concepts or not yet compatible. In other words we sort of have all the ideas and many pieces. We just need to put them all together which I will hope will be done no later than Q1 2012. I think we can hit this date even if no new contributors join and we just have the same slow but steady stream of patches. That being said, right now I would guess that 80% of the work is done by Liip employees, either sponsored by Liip, directly funded through client projects or done during spare time. Essentially the only other significant code contributions have been made by Ideato as well as Uwe, Johannes, Thomas and since very recently Nacho. So the numbers are growing, but given the over 200 people on the mailing list this previous list seems a bit short.
The power plug metaphor
Was talking with my dad about Hermann's blog post today, where I propose the following metaphor: Interfaces are exactly like wall sockets. Would you say that having the same wall sockets has stifled innovation? Would you say its a good thing that we have different plugs in different regions of the world?
Auth checks and varnish
These days everybody seems to be using Varnish to speed up their site. Things are quite simple until you have to do authentication. IIRC it was my Liip co-worker Stefan Paschke who come up with a nice and simply solution to the dilemma that while you may have some content cached in Varnish, you still need to figure out if you can serve the content. The solution is as always by leveraging the HTTP specification. When we need to serve protected content, we simply turn GET requests into HEAD requests, send them to our app and check for HEAD requests inside a listener after the auth checks. In case of a HEAD request we then return the response early and Varnish can check the response to determine if to serve the original GET request or not. The good news is that its all nicely implemented in LiipCacheControlBundle, along with various other tools to better leverage Varnish, ESI and all that good stuff that is well integrated in Symfony2.
In my previous blog post I was brainstorming the possibility of collaboration between various frameworks to define a set of common interfaces. But I kind of failed to explain why this would be useful. Herman's "rebuttal" made this omission on my part quite clear. He and other critics of this idea pointed out that PHP's success over Java in the web world should be seen as an indicator that standardization efforts stifle innovation and slow down development. I totally see where this view point is coming from, but believe that they are looking at certain facts and come to the wrong conclusion. That being said the open questions left in my previous blog might still prevent this idea to take off, even if I manage to convince the general community that the above mentioned negative effects are not such a significant concern.
Interfacing the PHP world
I have done a few tweets in the past weeks hinting at wanting to create a set of common interfaces for things like logging, caching etc. Now I pondered this some more and there are a couple of problems which I am not yet sure how to overcome them. Obviously the goal would be to make it easier to drop in components from one library/framework into another. If you want to see a concrete case where such interfaces could help just have a look at the recently created Doctrine Search project which needs an HTTP client.