With Melange having elements of issue-tracker, content-management-software, wiki and social-networking-software, a natural question is: “Why not leverage existing open source software and adapt it to the Melange role?”.
There are several restrictions and requirements that have resulted in things being the way they are, with little opportunity to change them. We hope that by documenting these restrictions the design decisions that were (and will be) made will make more sense.
GSoC and GHOP are Google programs and need to run on Google infrastructure. Google engineers, particularly security engineers, can then step in to sort out problems if they arise. It is not sensible/practical/part-of-the-google-culture to run on, say, an arbitrary LAMP stack of non standard configuration. In short, running on Google infrastructure is a hard requirement that cannot be removed.
When the development of Melange started (mid-2008) the only language supported on Google AppEngine was Python. It now does support a number of other languages that run on the JVM, but it would be counter-productive to re-re-implement the GSoC framework.
The kind of applications that AppEngine is designed to host do not quite include Melange. Most pages in Melange need to present the user with a lot of data, while the philosophy behind AppEngine is that if you need to show more than 10 results at a time you‘re doing something wrong (viz. the Google search results). Since we really do need to show users (and in particular the Program Administrators from the Google site) we are regularly pushing AppEngine’s limits, which results in slightly awkward user interfaces, slow page load times, and similar issues.
MediaWiki and Drupal, both of which could otherwise be used as a basis for Melange are written in Php, which ruled them out at the time frameworks were chosen. Django is a server side page formatting library written in Python that runs on GAE. Version 1.1 is being used in Melange. Django had ‘native’ support on AppEngine from the beginning, with its major aspects having been already ported by the AppEngine team.