Today we will release the second beta version of FLOW3 1.1. For keeping you updated, I'll quickly brief you with the newest details and my plans for the next few weeks.
In the run-up to this release we worked intensively on a few last features related to the new HTTP support and focussed on reviewing and integrating dozens of patches which were still pending in our review queue. The seamless integration of an API truly reflecting the HTTP 1.1 standard is an important step for making FLOW3 and Phoenix good citizens in the web services community. It also is a prerequisite for proper caching by the help of reverse proxies such as our favorite one, Varnish. In general, it's a foundation every modern Content Management System or, in general, a web application needs.
Most of the time I've been sitting with printed versions of RFCs 2616, 2617, 2965 and the ESI specification in front of my Mac, going through all the MUSTs, SHOULDs and MAYs. This was a prime example for Test-Driven Development, as I could just phrase the requirements as tests, refer to the corresponding section of the RFC and then implement the APIs until tests were succeeding. The hard task was not so much creating the actual functionality, but rather the smooth integration into the framework and the design of an API which puts a smile on developers faces (if they are into that stuff).
I love the result. The Http sub package is probably the cleanest and best covered part (100%) of FLOW3 at the moment and it's a joy to work with it.
One of the highlights from the last-minutes features are the content negotiation support and a few tweaks which make it a lot easier to implement truly RESTful services. FLOW3 negotiates on the media type supported by a controller and reliably evaluates Accept headers. Another long anticipated feature is the Cache-Control support which allows you to take fine-grained control over cache lifetimes and controlling shared caches, such as Varnish. We won't be able to squeeze all the features from our wishlist into FLOW3 1.1 - but certainly most of them will end up in the next version.
Today I'm also getting into conference mode: There's still a lot to prepare for the upcoming events, starting with the International PHP Conference next Sunday. I'll be away from office, family and espresso machine for a whole two weeks, giving talks in Berlin, Amsterdam and at T3CON12 in Québec, Canada. On my return on June 19th, we will - hopefully - release the first release candidate of FLOW3 1.1.
We did not manage to prepare all the documentation for today's beta release, like we wanted. But writing will be the main assignment of Karsten and me during the next two weeks and so we're confident that we have a lot more to offer for the RC1 release.
My family and I will take a break after the 1.1 release and enjoy our first four-person-family-holidays. A highly needed opportunity to refuel and get a clear mind again for diving deep into Phoenix development shortly after. What an exciting summer!