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!


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:1615, 1616.

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:1516.

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:1672, 1874.

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:1530, 1759, 1816.

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:515, 1216, 1240, 1306, 1496, 1524, 1525, 1541, 1701, 1788, 1850.

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 LABjs to asynchronously load all JS files, using an home-made dependency system. LABjs, however, is now deprecated. We would like to port our JS loading to use AMD and, specifically, RequireJS. That would also give an easier way to automatically scrape dependencies and, eventually, using grunt (which we have already integrated into the code base), compile and concatenate all our JS at runtime.

Captured Issue:1748

Relevant Skills: Javascript

Probable Mentor: Mario Ferraro


Every student is encouraged to clone our git repository and work through our GettingStarted guide. We've created a special “Bienvenue” label in our issue tracker 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 our mailing list (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!