blob: 8dec53926bc298fa2794256b57e91d25f9fce690 [file] [log] [blame]
#summary What software are we building Melange on - and Why
#labels Importance-Useful,Phase-Design,Contents-Complete
_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?"._
== Restrictions ==
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.
=== Melange must run on Google Infrastructure ===
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.
=== Google !AppEngine supported only Python ===
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.
=== !AppEngine is not quite designed for Melange ===
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.
== Frameworks ==
=== JQuery ===
[http://jquery.com/ jQuery] is a client side javascript library running in the client's browser. The jQuery library (and several plugins) have been added to Melange to gain its benefits. jQuery is used for various things in Melange, some of which _require_ it (such as the lists).
=== Django ===
!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. [http://www.djangoproject.com/ 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.