#summary How to get started with Melange
#labels Featured,Phase-Guidelines,Contents-Draft

= Prerequisites =

Melange is a web application that runs on
[http://code.google.com/appengine/ Google App Engine].  Google App Engine requires
Python 2.5 or later.  Please follow the instructions for your development platform
[http://www.python.org/download/releases/2.5.2/ here] to install Python.

= Checking Out the Code =

Follow the instructions [http://code.google.com/p/soc/source/checkout here] to create an SVN working copy by checking out the Melange source code.  If you are not yet a
[ContributionReviews#Committers committer] to the Melange project, you will need to
follow the instructions for checking out a read-only working copy.

= Running the Code =

Change directories into your SVN working copy (into the `trunk/` directory if you have
customized your working copy).  There is currently no _build_ step for the Melange web
application (though one will soon be needed in order to upload Melange to a Google
App Engine instance).  However, you will need to create your own `app/app.yaml` file from
the existing `app/app.yaml.template` file.  On a UNIX system, in the working copy using
shell commands, this can be done with something like:

{{{
cp app/app.yaml.template app/app.yaml
}}}

Then, edit the newly-created `app.yaml` file with your favorite editor, changing these
lines:

{{{
# TODO(proto): uncomment and supply a Google App Engine application instance
# application: FIXME
}}}

to something like:

{{{
application: your-app-engine-name
}}}

where `your-app-engine-name` is the name of one of your Google App Engine slots (or
just some made-up string if you only want to run the `dev_appserver.py` that comes
with the
[http://code.google.com/appengine/downloads.html Google App Engine SDK].

The Melange web application can the be started from the SVN working copy with this
command line (since `thirdparty/google_appengine` is checked into the Melange SVN
repository because tests need it to run):

{{{
thirdparty/google_appengine/dev_appserver.py app
}}}

Melange should then be running on [http://localhost:8080/ your workstation on port 8080].

= Contributing =

There are a number of ways that you can contribute to the Melange project.

== Discussion ==

If you are interested in contributing to the Melange project, please join our
[MailingListsGuidelines#General_discussion_list general discussion mailing list].
Also,feel free to join us [IrcChannelGuidelines on IRC].

== User Stories, Feature Requests, and Mock-Ups ==

If you are a past mentor or student participant in GSoC or GHOP but do not have the time
to contribute patches to Melange, we can still use your help.  While there is some code
already submitted for Melange, large parts of the web application are not yet defined.
Please consider writing up a feature request, [UserStories User Story], or even
creating a [http://soc.googlecode.com/svn/trunk/mockups/sitehome.html mock-up] of
something you would like to see in Melange.  You can also take a look at the existing
[http://code.google.com/p/soc/issues/list?q=type:Story User Stories] and add your
comments and suggestions.

== Patches ==

[ContributionReviews#Patches Patches] to the code are also welcome,
[ContributionReviews#Suggested_patches_from_casual_contributors even from non-committers].

= Gory Details =

If you enjoy reading dry design documents, you can find some of them
[MelangeIntro here] and [SoCOverview here].  Please bear in mind that this effort is in its very early stages and is being carried out in public view.  Much of the documentation is very incomplete and will evolve over time.