#summary Ideas List for GSoC 2014
#labels Importance-Useful,Featured

*Melange* is the software that powers Google Summer of Code. If improving the way that Google Summer of Code is run as your Google Summer of Code project sounds attractively recursive, please read on!

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

== Parameterized Layout ==

Isn't it a bummer that the homepage for Google Summer of Code 2014 looks almost exactly the same as the homepage for GSoC 2013? And 2012, and 2011? We'd like to afford programs greater freedom in their graphic presentation on Melange. To do that, we'll need to support multiple program presentations, and support programs choosing one presentation over another. We'll also need to make decisions about how much a program's graphic presentation can be made customizable versus how much must be programmatically fixed.

*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1615">1615</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1616">1616</a>.

*Relevant Skills:* Python, App Engine, HTML, CSS, Javascript, LESS

*Probable Mentor:* Nathaniel Manista, Mario Ferraro

== Responsive Layout  ==

Isn't it a bummer that Melange's pages don't fit on your phone's screen? Modern web sites are written with the entire ecosystem of web-enabled devices in mind and cooperate with the user's device toward the goal of best displaying themselves on the screen available to them. Melange should too.

*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1516">1516</a>.

*Relevant Skills:* HTML, CSS, Javascript, LESS

*Probable Mentor:* Nathaniel Manista, Mario Ferraro

== Javascript Tests == 

Melange has a great deal of Javascript code that needs to be refined and tested.
We already have a testing architecture in place (using Testem, Jasmine, PhantomJS) but we need to start writing tests.

*Relevant Skills:* Javascript

*Probable Mentor:* Mario Ferraro

== User data dashboard and dependencies ==

The project would be to implement a simple dashboard that would list all artifacts associated with the specified user or profile. It would look somehow like a tree (or a graph, to be more precise). A very simple example is outlined below:

  * userA
    * profileA
      * proposalA
        * commentA
      * proposalB
        * commentA
        * commentB
        * commentC
      * projectA
        * codeSubmissionA
        * evaluationA
    * profileB
      * commentA
etc.

It would help us understand what the exact layout of our data design is and what exactly has to be processed so that data is not broken after an account is deleted. It looks relatively easy, but it definitely is not. There are at least two open end questions:

  * how to present the data
  * how to collect the data so that it does not break down when a user has a lot of artifacts, for example comments.

Another part of this project would be to generate a graph of reverse references of models. It would give us visualization of what dependencies between the models are.

*Relevant Skills:* AppEngine, Python

*Probable Mentor:* Daniel Hans

== Resource Hosting ==

Running a program on Melange involves distributing a lot of documents and serving a lot of content - from user images to translated contest rules and everything in between. Melange doesn't yet have a subsystem that makes resource ingestion, hosting, and distribution easy for both users and feature developers. It should.

*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1672">1672</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1874">1874</a>.

*Relevant Skills:* App Engine, Python

*Probable Mentor:* Nathaniel Manista, Daniel Hans

== Student Flow ==

On Melange, signing up as a student and applying for summer projects is harder than it should be. We would love to see a student project focused on making the whole process easier.

*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=1530">1530</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1759">1759</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1816">1816</a>.

*Relevant Skills:* Javascript, Python, HTML and CSS

*Probable Mentor:* Nathaniel Manista, Madhusudan C.S., Daniel Hans

== Mentor Flow ==

On Melange, participating as a mentor is harder than it should be. We would love to see a student project focused on making the mentor experience better.

*Captured Issues: <a href="https://code.google.com/p/soc/issues/detail?id=515">515</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1216">1216</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1240">1240</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1306">1306</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1496">1496</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1524">1524</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1525">1525</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1541">1541</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1701">1701</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1788">1788</a>, <a href="https://code.google.com/p/soc/issues/detail?id=1850">1850</a>.

*Relevant Skills:* Python, HTML, Javascript, CSS

*Probable Mentor:* Nathaniel Manista, Daniel Hans, Madhusudan C.S.

== Renovate Our Test Data Seeder ==

Melange uses a test data seeder to generate fake program data for both its test suite and for use during development. Our old test data seeder has proven somewhat hard to work with and has broken several times during recent changes because it itself is not covered by our tests. Our long-term goal is to run several Melange programs inside our test suite, and we would be excited to receive student proposals that would move us toward that objective by affording us an updated, more usable, and more maintainable data seeder.

*Relevant Skills:* Python, App Engine

*Probable Mentor:* Nathaniel Manista, Daniel Hans, Chong Liu (Leo), Madhusudan C.S.

== Port Melange to AMD == 

Currently Melange is using <a href="http://labjs.com/">LABjs</a> to asynchronously load all JS files, using an home-made <a href="https://code.google.com/p/soc/source/browse/app/soc/content/js/melange.dependency.js">dependency system</a>. LABjs, however, is now deprecated. We would like to port our JS loading to use AMD and, specifically, <a href="http://requirejs.org/">RequireJS</a>. That would also give an easier way to automatically scrape dependencies and, eventually, using <a href="http://gruntjs.com/">grunt</a> (which we have already integrated into the code base), compile and concatenate all our JS at runtime.

*Captured Issue: <a href="https://code.google.com/p/soc/issues/detail?id=1748">1748</a>

*Relevant Skills:* Javascript

*Probable Mentor:* Mario Ferraro

= Orientation =

Every student is encouraged to clone our <a href="http://code.google.com/p/soc/source/checkout>git repository</a> and work through our GettingStarted guide. We've created a special <a href="https://code.google.com/p/soc/issues/list?q=label:Bienvenue">"Bienvenue" label in our issue tracker</a> for issues that we think are particularly good places for new contributors to Melange to make a small, independent change as a first contribution.

We would like our prospective students to propose new project ideas and discuss with Melange developers via [MailingListsGuidelines our mailing list melange-soc-dev@googlegroups.com] (please be mindful that the list is moderated, hence your posts won't show up immediately). When introducing yourself to us, please tell us something interesting that you learned from having built Melange, run its test suite, and played around with it a bit.

*Please don't contact mentors directly in a private email, and keep the list on CC at all times.*

Also, it's always nice to see prospective students showing they're able to do their own research, so make sure you've looked at the recent list archives, to check whether your questions have been already answered, before posting, so we can develop more engaging conversations on the projects of your interest!