ramblings on PHP, SQL, the web, politics, ultimate frisbee and what else is on in my life
back

Symfony2 community pushing the PHP ecosystem

Even if you don't care about Symfony2 or Silex and instead prefer some other framework, there is stuff to benefit from going on inside the Symfony2 community. Not only are the Symfony2 components all build to also work standalone, but key contributors are also building libraries and tools that should proof useful for the entire PHP ecosystem. For an overview of the components part of Symfony2 I refer you all the Symfony2 site. Here is a short overview in alphabetical order of libraries that have spawned around Symfony2 (and just to clarify not at all focused on just Symfony2). Common to all of them are that they require PHP 5.3 and follow the PSR-0 for class loading.

Assetic
Assetic is a port of the python webassets asset management library. It provides a tool chain to manage, filter and optimize assets like css and javascript files. It looks like it will soon also offer image related capabilities for example to generate CSS sprites.

Behat
Behat is actually a github organization that has created a bunch of libraries. The main one is of course Behat itself, which is a BDD framework. But there is also the Gherkin parser, Mink for browser testing and SahiClient for JS test automation.

Buzz
Buzz is a lightweight HTTP client library.

Gaufrette
Gaufrette provides a filesystem abstraction layer already supporting lots of different adapters.

Imagine
Imagine provides various tools for image manipulation.

Jackalope
Jackalope implements the PHPCR interfaces and provides compatibility with JCR implementations like Jackrabbit. FYI the process of submitting PHPCR to JCR has now been "formally" started

Monolog
Yet another port of a python library Monolog provides a flexible logging toolchain. One of the coolest loggers is the fingers crossed logger, which collects information in memory but only logs the data in case an error occured.

Snappy
Snappy uses wkhtmltopdf to generate PDF's and image snapshots of HTML using webkit for rendering.

Twig
Continuing with the theme of python inspired libraries Twig is a lean, yet extensible, template engine inspired by Django and Jinja template languages

PS: I guess I could also add Doctrine2 to that list. While the Doctrine2 community is of course much bigger than "just" Symfony2, a lot of contributions have spawned out of the Symfony2 community.

PPS: Maybe the next big contribution to come out of Symfony2 will be composer.

Update: Shortly after I published this post, Fabien releases Sismo. Sismo is a simple Continuous Testing Server based on Silex that is especially optimized to run locally.

Comments



Re: Symfony2 community pushing the PHP ecosystem

Thanks for the nice roundup. What I really like about the Symfony2 approach is the (architectural) embracing of other libraries without building everything on its own.

For me it feels that 2011 will push PHP forward. I mean not the language itself (release of 5.4...6... anyone?) but the whole echosystem and the ability of writing high quality software.

Re: Symfony2 community pushing the PHP ecosystem

These are all great components. I'm curious why there has been a divergence over the past few years from having components in PEAR. It seems like it could benefit the community more if these could be actively maintained as PEAR packages.

Re: Symfony2 community pushing the PHP ecosystem

I have a very first hand, therefore biased, POV of why PEAR is not the main repository for libraries anymore today. I guess I can one of these days write it all down in a blog post. That being said, I do not know how to really fix this. Maybe the time has come for the community to put their heads together to define what they would want the official php.net library repository to be these days?

Re: Symfony2 community pushing the PHP ecosystem

That's a great set of software. I have a tiny framework that only a few people use, but am taking the same approach of trying to keep generally useful things decoupled from the framework and sharing them independently.

I also have a biased view on why PEAR doesn't work, and am also hopeful that the community can and will find another path forward to share code in a more productive ways. There is a lot the PHP community can learn from the success of the Ruby and Python communities. I have also been porting over packages I've found impressive in the Ruby world like factory_girl (nee fixturenator in php).

I hope that the leaders in the community choose to improve PHP rather than jumping ship to another language. PHP is a great, proven language with lots of interesting new features coming up (I am a big fan of traits in particular).

I do think that improvements in the surrounding ecosystem can make it easier for the community to adopt newer versions more quickly. For instance if there were tools to more easily juggle multiple binary versions on the same system then more people would be using 5.3.

Anyway, great post!