ramblings on PHP, SQL, the web, politics, ultimate frisbee and what else is on in my life
Travis, CI for OSS
Continuous integration is one of these topics that had a slow start, but in recent years has really taken off. The slow start is likely to be attributed to the fact that it was perceived as hard to setup and maintain. But solutions around Jenkins and Sismo are making it easier and easier. But thanks to the new Travis CI service, its now essentially so easy that there is no excuse not to use CI for PHP projects, at least if you are hosting your OSS code on github.com. What makes this service so crazy cool is that you can run your tests against multiple PHP versions, multiples databases (heck even RabbitMQ) and against multiple versions of various libraries. For a prime example of this check out Doctrine2 on Travis. You can configure tons of stuff, like various ways to get notified in case a build fails and you can even include a little status icon that gets updated automatically into your project description. In short this is amazingly awesome and again its free to use for any open source project out there!
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.