#summary An introduction to Melange
#labels Contents-Draft,Phase-Guidelines,Importance-Overview

= Melange, the Spice of Creation =

== What is Melange? ==

Melange is the combination of a [SoCOverview framework] and multiple web
applications (including [GSoC GSoC] and [GHOP GHOP]) implemented to be
[AppEngine deployed on Google App Engine].

=== Replacing the GSoC web application ===

Originally, Melange was envisioned as an effort to produce an
open-source implementation of the [GSoC Google Summer of Code]^TM^ web
application.  At first, the GSoC web application appears to be part
[http://en.wikipedia.org/wiki/Content_management_system content management system],
part
[http://en.wikipedia.org/wiki/Ticketing_system issue tracking system],
and part
[http://en.wikipedia.org/wiki/Customer_relationship_management customer relationship manager].

But, while the GSoC web application shares some features in common with
those systems, it is quite different in its purpose.  The purpose of GSoC
(which is facilitiated by the web application) is to serve as a catalyst
for introducing college students to open source and free software
communities, in the hopes that these students would find a homes in those
communities and thrive.  To that end, the GSoC web application tends to
be more specific and less general than existing systems like those
mentioned previously.

As much as GSoC attempts to inspire new open source developers, it has not
previously been able to actually embrace them in the development of the
GSoC web application itself.  Initially, with the launch of the enabling
[http://code.google.com/appengine/ Google App Engine], the plan was to create
an open-sourced GSoC web application.  It would have to be created from
scratch, because the existing code is (unfortunately) wired directly to
Google infrastructure interfaces, which are old enough to be quite
unlike AppEngine.

The [http://code.google.com/opensource/ Open Source Programs Office (OSPO)]
at Google believes in promoting the release of Google source code under
open source licenses.  [GSoC Google Summer of Code]^TM^ is a major
program for the OSPO team.  So, it makes sense for the OSPO team to
develop the GSoC web application as open source and in the open.  And,
now that hosting infrastructure with Google scalability is available
via AppEngine, we intend to do just that.

=== Moving beyond the GSoC web application ===

It seems there are other real-world programs and sponsors that are
interested in a workflow similar to that found in the GSoC web
application.  In order to take advantage of hosting on AppEngine,
the existing GSoC web application needs to be rewritten from scratch.
Given that necessity, _now_ seems like the ideal time involve the
community of users (mentors, students, and organization administrators)
of the existing web application in the creation of something that can
be used not just by Google, but by anyone, to host programs like the
[GSoC GSoC] and [GHOP GHOP], to the continued benefit of open source
and free software.

So, the goal of this project is not merely to open-source the GSoC web
application, but to create a framework for representing open source and
free software contribution workflows. Using this framework, and copying
and modifying the Melange web applications built upon it, it should be
possible for anyone to host future programs similar to
[GSoC GSoC] and the
[GHOP Google Highly Open Participation]^TM^ Contest) on the
[http://code.google.com/appengine/ Google App Engine].

This project will be a success if these real-world programs continue
to bring students and other open source and free software contributors
together with existing open source and free software organizations.
As previous years of _Google Summer of Code_ have shown, the open source
and free software communities benefit greatly from the catalyst for
development that these programs provide.

=== Building a community to help open source and free software build theirs ===

This project is not just about code.  It is about forming a thriving
community. The results of the Melange project will not be
[http://www.youtube.com/watch?v=ZtYJoatnHb8 thrown over the wall or worked on in secret],
with only occasional releases and annual sponsorship of
_Google Summer of Code_ programs. Instead, we will actively engage the
open source and free software community to continue to make these
programs, and the web applications that make them possible, better and
more effective at welcoming new contributors to the community.

=== Contributing ===

To expand the usefulness of the fruits of this development effort, we
seek suggestions, guidance, and contributions (in the form of source
code, of course!) from the open source and free software community.
Please see the [ContributionTerms guidelines for contributors] if you are
interested in contributing to the design and development of Melange and
the [SoCOverview SoC framework].

=== Concept Diagram ===

[http://soc.googlecode.com/svn/wiki/images/MelangeOverview.dot http://soc.googlecode.com/svn/wiki/images/MelangeOverview.dot.png]

== Legend ==

|| *-------* || direct dependency (inheritance, method call, etc.) ||
|| *- - - -* || indirect dependency (call-back, etc.) ||

----
_Copyright 2008 Google Inc._
_This work is licensed under a_
[http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-attribution-2_5.html Creative Commons Attribution 2.5 License].
[http://creativecommons.org/licenses/by/2.5/ http://soc.googlecode.com/svn/wiki/html/licenses/cc-by-2_5-88x31.png]