Non-functional features are as important as functional features in determining the success of an open-source application. Users should be able to download and try most of the functionality, without complicated installation steps. Equally important is the ease with which it can be deployed.
While striving to keep these boundary conditions for end-users, developers prefer a language (and framework) that enable them to transform their brilliant ideas into working code quickly.
With such a thought process, I searched for a framework to develop YATSY - an open source helpdesk application for small businesses. As the title says, I settled on web2py because of the following reasons:
It is on Python: If you didn’t know, Python can be learned intuitively. In the recent years lots of Python-based frameworks have evolved improving developer’s productivity drastically. Python places minimal constraints on the developer; hence development is generally quick.
It adapts to Schema Changes: Schema changes are an inherent part of development; especially if you follow the open-source mantra of ‘release early; release often’. Web2py automatically changes db schema if it detects a change in the underlying model. You don’t need to drop and recreate schema or issue alter table commands. One less head-ache for developers.
Its a self-contained Framework: web2py is based on MVC pattern and it comes bundled with most of the components needed for web-development - authentication, authorization, form generation & validation, internationalization, admin interface, ajax (jQuery) and so on.
Its well documented: Yes it is a pity that the official manual has to be bought but Massimo, the lead developer, seems to have a justification for it. I went ahead and bought the manual and I should it is fantastic - he explains each component of the stack pretty well.
It can be installed easily: It is based on Python, but it is not a pre-requisite to run web2py. Download, Unzip, Execute are all that is needed to get started with web2py development - on any OS.
It can be hosted on AppEngine: This is a big plus for me. Google AppEngine is the only cloud hosting that I am aware of that provides a free hosting for Python based applications. So potential users of YATSY can try free GAE hosting before moving to paid hosting. Deploying web2py application to AppEngine is a one-click affair.
It can be hosted elsewhere too: Web2py provides the flexibility to host the developed application anywhere Python can be installed. This means that users are not tied to GAE. If they want to install in their own servers, it is no problem.