Development/Summer of Code/Getting started

From MusicBrainz Wiki
< Development‎ | Summer of Code
Revision as of 09:38, 3 March 2016 by Alastairp (talk | contribs) (Contributing to development)

So you're looking to apply for Google Summer of Code, GSoC, and you find the idea of MusicBrainz or some other project under the MetaBrainz umbrella intriguing. But where do you go now? How do you get started? This document intends to guide you along that path.

So how do I get involved with the project?

Most of the MusicBrainz development community are people who were first contributors to the MusicBrainz database. We tend to choose students for SoC who have an established history of editing on MusicBrainz.

Are you not a current MusicBrainz contributor? Don't worry! You can start now. There is an introductory document at How to Contribute. You should check if your favourite band has an entry in MusicBrainz (again, we tend to gather developers who are passionate about music and metadata). If not, add them! If they exist, make sure all their albums are added or help with some cleanup. There is a great community available to help you make edits to the MusicBrainz database. Check out the forums or the IRC channel if you have any questions.

Contributing to development

MetaBrainz is the umbrella organisation for a number of websites, which are written in a number of different programming languages. You may want to choose a potential project based on your language preferences.

The MusicBrainz server is a large application, mostly written in Perl. If you want to help work on it, you should at least try and install it yourself first. This can be difficult if you've not worked on a large project before, but our INSTALL document is quite complete. If you have any problems during the installation that you manage to fix yourself, maybe your first contribution to MusicBrainz could be an update to the INSTALL document!

As the main MusicBrainz server is written in Perl, many of our proposed projects require at least some Perl knowledge, or a willingness to learn. Many other parts of MusicBrainz are written in other languages, including Python, and Java.

The development process for MusicBrainz, including tools, source control usage, and code-review is described in more detail at Development#MusicBrainz_server.

AcousticBrainz, ListenBrainz, and CritiqueBrainz are written in Python, using the Flask webserver. They all use Postgresql as a database server, but ListenBrainz also uses Cassandra and Kafka for data storage.

BookBrainz is written in Node.js

Some projects may require new components to be written. The choice of language here is open for discussion, but bear in mind that it should be maintainable in the future, and therefore would likely be one of the existing languages in the MusicBrainz ecosystem.

Our developers all use IRC, and are in the #metabrainz IRC channel. Come and say hi if you want to know more about the development process.

Our ticket system is at Many of these tickets require additional knowledge to get started that may not be present in the ticket. Join the IRC channel if you have any questions and we'll try to help.

Information from previous years and a link to the page with ideas for the current year can be found at Development/Summer of Code.

The application process

Don't apply to become a student without talking to us first! We like to know who you are. Some ways you could do this include:

If you're interested in working on a project you should seek out a mentor on IRC to discuss the project and discover more about what it entails. We strongly recommend potential students to send drafts of their proposal to our forms before they apply on the GSoC website.

I have more questions…

Great! The Communication page describes how to reach other MusicBrainz contributors via IRC (#metabrainz for most GSoC related topics) or other channels.