The symfony web application framework project turned two years old yesterday. Based on timestamps on our servers, my experiences with symfony date back almost three months. At that time I decided again to look for an object-relational mapping solution for my PHP coding. I found the effort of trudging up the mountain of writing my own at the beginning of a project made me exhausted when I got to the good stuff, the code that gives a site its soul. I say look again because I had looked a couple of years ago and found nothing that impressed me.
My search was quickly and richly rewarded. I found lots of glowing references for the symfony framework. Symfony is so much more than what I was looking for, but exactly what I was yearning for. If you haven’t heard of symfony, take a few minutes and browse through their site, look through their extensive and well-written documentation, and skim through the abundant user community contributions.
If you are wavering on adopting symfony, keep in mind that Yahoo! currently uses symfony as the framework for their Bookmarks site which boasts a user population of over 20 million. Rapid application development is nice, but being able to scale for the real world is everything. Yahoo! is also rewriting del.icio.us using symfony. This level of adoption for a relatively young framework is rare and speaks volumes about the current state and long-term viability of symfony.
For my part, I keep thinking that I couldn’t be more excited about symfony, but after each new revelation, I get a little giddier. After three months of coding with it, I cannot imagine going back to the way things were. Symfony allows my web applications to become what they always wanted to be but couldn’t because I lacked the time or ability. I’ve yet to come upon the first thing that I would change about it. Here’s my list of characteristics that I adore in symfony that I think someone deciding on a web framework should consider:
- Awesome documentation – there’s already a well-written book (both hardcopy
and web-accessible) that will quickly teach you what you need to know to become a symfony superstar.
- Approachable tutorials – the first tutorial is pure candy — nearly trivial to try and a great appetizer — I’ve gotten several people in the past week to try it. Just download a complete symfony sandbox and get to playing.. no database setup required (SQLite included), no web server configuration required.
- Scalability – You can write the world’s best application, but if only two people can use it simultaneously, well, only two people will use it. Yahoo! … 20 million users… built-in caching… enough said.
- PHP5 and nothing but PHP – If you or your code monkeys already know PHP, they won’t need to learn another programming language.
- Stand on the shoulders of giants.. standing on the shoulders of giants – symfony is built around several other mature and popular components. It uses Propel for object-relational mapping and Creole for database abstraction, for example.
- Plugin architecture – Still not sure about Symfony? Look at the plugins page. Prefer Doctrine over Propel? There is a plugin that lets you use Doctrine instead. Want to create or digest RSS feeds? Want to add CMS or forum functionality to your application? There are plugins to do 99% of the work for you.
- Don’t code, configure – Many mundane coding tasks are accomlished by editing simple YAML configuration files (YAML: think human-readable XML). If you have ever coded form validation tasks, look at this example of form validation using a YAML file. I abhor writing very similar code over and over. Web forms may be the worst example of this. Writing web forms in symfony is fun.
My experiences with symfony this far have been extremely positive. I’ll write more about the specific projects that we are deploying with symfony as we get them farther along. In the mean time, do yourself a favor and take a look at symfony.
Happy birthday, symfony, and many happy returns!