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

= 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]