Saturday, September 23, 2006

The Framework War

In the midst of thousands of competing and evolving PHP frameworks, finding a suitable rapid web application development framework can be as arduous as finding a perfect bride. Nevertheless, the quest for a perfect framework is an interesting process of excitement and frustration, learning new things and abandoning previously held mental concepts. For long, I have wandered the maze of internet, open source projects and online forums, looking for a perfect web application development framework. I was looking for a framework that is easy-to-learn, has a vast resource of tutorial and an active user forum, and does only things that I want it to do. In precise, I wanted a framework that takes care of rudimentary database connections and query handling. In my quest, I experimented Drupal, Qcodo, Ruby on rails, and finally settled for CakePHP. Drupal is a PHP based content based management system. An excellent framework that provides pre-built website templates, modules, and extensive set of functionalities that takes care of rudimentary work. Nevertheless, it has a very long learning curve. Even after playing with Drupal for more than three months, Drupal remained as a black hole to me. In a way, Drupal was doing much more than I wanted to him to do. Drupal was more meant to provide a prebuilt content management website and less for handling database interactions. After abandoning Drupal, I experimented Qcodo. Qcodo is again a PHP based rapid application development framework. There motto is "Code less. Do More". I found that motto interesting. Intial experiment with Qcodo, showed interesting results. Neverthless, Qcodo creates individual classes for each database table and, thereby, exposes lot of code that is especially frustrating for me. Definitely many developer's will argue that this provides flexibility; but I believe there is no necessity to have individual classes for each table. Theoretically, select, delete, and update should are handled the same way for each table and thus there is no need to implement individual classes for each table.

After looking for another framework, I stumbled into Ruby on Rails. Although, Ruby on rails is not based on PHP, it is easy to setup and get basic web application running within 5-10 minutes. It’s scaffold techniques provides all the necessary element to get website running within minutes. The ease with which I was able to build my website made me to think to abandon PHP and start learning ruby on rails. But, luckily, before I made a move, I found about CakePHP. CakePHP is replication of "Ruby on Rails" but in PHP. It provides the same functionalities as in "Ruby on rails", but has an added advantage of being in written in PHP.

After a long and tiring search and experiments with many different frameworks, I finally found a perfect framework. In the process I learnt many lessons. Some of my key lessons are
1. The most important thing when selecting a suitable framework is to know functionalities you desire to have in your web applications. Having a list in hand is always useful as it allows you to evaluate functionalities and compare frameworks. In my search for a framework I made a mistake that I kept losing focus of things that I want to have in my browsers.
2. Pick a framework that is easy to learn, has many tutorials, and an active developers and users community.
3. Finally use google, blogger, and forums to know about frameworks and what other people talk about it.