Standing on the shoulders of giants

FOSSBazaar is no longer being updated. The information on this site is preserved for your convenience but may be out of date. Please visit Linux Foundation's Open Compliance Program for current information and activities.

cfarrell's picture
Recently, I began looking around for a web framework with which to develop a new web application. My requirements were fairly simple – I wanted something which wouldn't cost me much (if anything), which would let me develop in my programming language of choice (Python), my database of choice (PostgreSQL) and which would allow me to modify and distribute the framework itself. Are you beginning to notice a trend here? My basic requirements had already more or less reduced my choices to Free/Open Source Software – not necessarily because I ultimately wanted to save costs, but rather because I wanted to have the freedom to change, not just my own application, but also the framework and development components which I anticipated using to create the application.

After spending some time checking out the various web frameworks on offer, I more or less settled on the upcoming version 2.0 TurboGears framework. I read up on the TurboGears project and liked what I was reading. I thought that TurboGears is a good illustration of how the development model of Open Source Software (in this case, I am referring more to Open Source Software than to Free Software) can make life easier for developers, and simply make software better. The TurboGears project describes itself as “standing on the shoulders of giants”. This phrase, borrowed of course, from none other than Isaac Newton, relates to how TurboGears did not proverbially reinvent the (web framework) wheel, but rather chose to build upon pre-existing, proven web technologies. Thus, the TurboGears project aims to seamlessly link such big names as Pylons, Genshi, mako, jQuery, SQLAlchemy (to name but a few) and provide these to web developers through a simplified and solidified interface. The sum of the parts can then be served to the web audience through Apache, running (e.g.) on Linux.

Apart from the enormous cumulation of technical knowledge involved in the individual components, as well as the TurboGears project itself, what makes all this possible? Let's work backwards from the base of the stack. In my own example, my web application will be running on a minimal openSUSE server. This bunch of components is licensed to me under the GPLv2 (i.e. the collective work copyright). No issues there – should I make modifications, I'll gladly contribute them back to the canonical project under the appropriate license. As I am developing a web application, it isn't, however, very likely that I'll need to modify or distribute my base operating system. Moving up the stack, I need a web server and a database in order to be able to run my web application properly. I choose to deploy the Apache web server (licensed to me under the Apache Software License) and the PostgreSQL database (a BSD type license). Neither of these licenses require me to pay a penny, and both of them allow me to make modifications, should I wish to do so (also not likely, in my situation). Moving further up the stack, the TurboGears framework (MIT licensed) links components such as the object relational mapper SQLAlchemy (MIT licensed), the web framework Pylons (BSD type license) and a templating framework such as Genshi (BSD licensed) or mako (MIT licensed). Should I wish to make life easier for the users of my web application, by using ajax to improve the usability, I can easily integrate jQuery (MIT license) or Prototype (MIT license).

In my particular situation, it doesn't matter very much how I license the code for my web application. I would have no problem with making it available under a Free/Open Source license. However, if you are thinking of developing a “commercial” web application, the code of which you would like to keep secret, I'm sure you've also been following this article with interest. You will no doubt have noticed that I have nowhere mentioned obligations to make your “secret” code “public” - i.e. copyleft type obligations. Granted, the situation is easier than with standard application software, because a web application is accessed remotely, through a web server. The code is not transferred, meaning that even if there were GPL obligations affecting the code itself, it would not be very likely that they would be triggered by making the web application available in this manner. Now consider the benefits which you could obtain, by building your web application on top of tried and tested Free/Open Source components.