#summary Melange is a work in progress, done in the open!
#labels Featured,Importance-Featured,Contents-Complete

To those of you who are taking a look at this project with an interest in contributing:

  * this was a new project, not a port of existing GSoC source code, so it started from scratch.  There are part that are not done yet, or incomplete.

Parts of the code are not finished yet, but we're slowly getting there. As of January 29, 2010 we have successfully ran GSoC09. We are working towards making it better for the next GSoC and are also thinking about running the Google Highly Open Participation Contest.

We have had some emails like "I wanted to contribute, but I can't find anything".  We'd like your help to change that.  

=How to Help=

Tell us what you expected to find.  Tell us where you'd expect to find it.  Help us get more organised.  Use whatever route you find works best.  There's an IRC channel (#melange on irc.freenode.net). There is a developers mailing list, and some for commits, comments and issues.  Comments on wiki pages are welcome.  New issues on the [http://tinyurl.com/melange-issue-grid issue tracker] are encouraged, but please check if your issue is in the tracker already (make sure to check closed issues as well!). 

If you're interested in working on something that is unlikely to be fixed by the team anytime soon, have a look at the [http://tinyurl.com/melange-todo-issue-grid unassigned issues] grid. We welcome patches, even (especially!) on issues that we have marked as '!WontFix'. See GettingStarted for details on how to get hacking, and ContributionReviews on how to submit patches!

=What we are Working on=

Have a look at the [http://tinyurl.com/melange-assigned-issue-grid issue tracker] grid.  This will give you a good idea of what we are each working on at this moment. The high priority issues will in general be worked on first, although medium/low priority might be done sooner if they are easy to fix.