#summary Ideas List for GSoC 2013
#labels Importance-Useful

= Ideas! =

We welcome your ideas, whatever they might be for Melange - but here are a few of our own for what we think might be good student summer projects:

== Developer Workflow Improvements ==

In the last year Melange has gotten serious about mature software development practices, but our work in this area is far from complete. A project oriented around developer workflow would involve removing derived assets from source control, making derivation of those derived assets part of our build process, and running static analysis tools such as lint and documentation extraction over our source code.

== Integration of Summer of Code's "Connections" subsystem with Code-in. ==

Melange recently gained a "Connections" subsystem for building relationships between participants, but Connections is only integrated with Summer of Code, one of the two programs that Melange powers. Empowering Code-in with Connections would be a suitable student effort.

== Javascript Tests == 

Melange has a great deal of Javascript code that needs to be extracted from templates and other hiding holes, refined, and tested.

== Javascript List Enhancements ==

Our current lists are always asynchronous and load some time after the page on which they are displayed is loaded. They should be enhanced to be able to be included in the page and viewed statically when as the server deems appropriate. This work would cover both client and server domains and would make use of Javascript, Python, HTML and CSS.

== Functional Tests ==

Functional tests verify the complete and fully integrated functioning of the entire Melange system and are phrased in approachable language stated in terms of user experience. Melange has far too few.

== Enhanced Registration Workflow ==

Registering for Melange is too hard and requires too much developer and administrator intervention. This user experience can be greatly smoothed!

== Messaging System ==

Melange has a need to proxy messages between participants (because Code-in participants are minors who may not be able to reveal their email addresses). Melange should be able to mediate communication between all program participants regardless of constraints about physical location and email availability.

= Orientation =

We would like our prospective students to propose new project ideas and discuss with Melange developers either here(in comments), #melange or our mailing list melange-soc-dev@googlegroups.com. 

Every student is encouraged to clone our <a href="http://code.google.com/p/soc/source/checkout>git repository</a>, solve <a href="http://code.google.com/p/soc/issues/list">issues</a> and submit patches as part of the application process. <a href="http://code.google.com/p/soc/wiki/GettingStarted">Here</a> is our getting started guide.