Difference between revisions of "Development/Summer of Code/Getting started"

From MusicBrainz Wiki
m (Contributing to development: Update link to Jira.)
(Rewrite. I won't be offended if somebody wants to revert this.)
Line 1: Line 1:
So you're looking to apply for Google Summer of Code, GSoC, and you find the idea of [[About|MusicBrainz]] or some other project under the [http://metabrainz.org/ MetaBrainz] umbrella intriguing. But where do you go now? How do you get started? This document intends to guide you along that path.
+
==Get familiar==
 +
'''Do some homework.'''
 +
:Have you read about the [[meb:projects|MeB projects]]? Do you understand what we do and why we're excited to be contributers?
 +
:Have you looked at the ideas pages for [[Development/Summer_of_Code/2017#Projects|each project]]?
 +
   
 +
==Get motivated==
  
== So how do I get involved with the project? ==
+
MetaBrainz tends to choose students who take initiative, who jump in and start doing things, who can find answers to their own questions.
  
All MetaBrainz projects are dedicated to collecting and organising information about music<ref>Except for BookBrainz, which is about books, literature, and other printed materials. :)</ref>. Therefore an important aspect of contributing to them is being able to add information, as well as developing the software.
+
At this point, you should be familiar with basic open source development tools and workflows, and your [http://lmgtfy.com/?q=google-fu Google-fu] should be excellent.
 +
   
 +
==Get inspired==
 +
So, you've done your homework. You've looked at the ideas pages. Excellent.
 +
:What looks interesting?
 +
:Have you read the related tickets and comments? Having done that, have you read related forum posts or blog posts, if any?
 +
:Are the technologies in your skillset? (Or can you pick up the required skills quickly on your own?)
  
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.
+
At this point, if you're interested in working on a project you might seek out a mentor on [[IRC]] to discuss the project and learn more about what it entails. However, "what do I do next?" is not the right question to be asking.
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.
 
  
If you want to contribute to AcousticBrainz development, you should first try and submit some data to AcousticBrainz. Follow the links from the [http://acousticbrainz.org/ home page].
+
==Get involved==
 +
'''MetaBrainz tends to choose students who are active community members, who get involved at all levels.'''
 +
:Have you created an account?
 +
:Have you submitted any data?
 +
:Have you installed and tried [[Picard]] or the [[AcousticBrainz]] submission tool? Written a review on [[CritiqueBrainz]]?
 +
:Have you said "hi" in [[IRC]]? Maybe even lurked in a [[MetaBrainz_Meeting|dev meeting]]?
  
If you are interested in ListenBrainz, you could import data from Last.fm or Libre.fm to your account on ListenBrainz.
+
==Get ready==
 +
'''Do more homework:'''
 +
:Have you found and cloned the relevant git repo(s) and done a successful local installation?
 +
:Have you tried fixing a few small bugs/issues? Each project has its own specific contribution instructions, but the basic [[#Git_Workflow|workflow]] is the same. Use the [[Bug_Tracker|issue tracker]] to find something to work on, and use [[#Git_workflow|git]] to submit patches.
  
If you want to contribute to CritiqueBrainz you should first write a review of a release.
+
==Get to work==
 +
'''The ideas pages describe a problem that needs to be solved. It's up to you to decide how you'd solve it.'''
  
If you want to work on BookBrainz, try and add some new books to the database.
+
This is not the part where you should be asking for help. This is the part where you show us that you understand the problem and that you have a good plan for fixing it. (When/ if you're chosen for the program, then of course mentors will be there to help.)
  
== Contributing to development ==
+
But at the same time, 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:
  
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.
+
*Come into [[IRC|#metabrainz]] and saying "hi".
 +
*Post a message in the [https://community.metabrainz.org/t/introduction-thread/59 forums].
  
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!
+
We '''strongly''' suggest that prospective students send drafts of their proposals to our [[discourse:metabrainz/gsoc-applications|forums]] before they apply on the GSoC website.
  
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'''.
+
We have a [[Development/Summer_of_Code/Application_Template|template]] which we would like you to use when you write on the forum. If you do not add this information then we may not respond until you've added it.  
  
The development process for MusicBrainz, including tools, source control usage, and [[Development/Git#Submitting_a_patch|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.
+
==Git workflow==
 
+
New to [[Development/Git|Git]]? You could do worse than to start with [https://guides.github.com/introduction/flow/index.html Understanding the GitHub Flow].
'''BookBrainz''' is written in Node.js
+
   
 
+
==Getting feedback==
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.
+
If the docs aren't enough to get you started planning your proposal, please leave a comment on the talk page explaining what you're looking for and how this doc could be improved.
 
 
Our developers all use IRC, and are in the #metabrainz [[Communication/IRC|IRC channel]]. Come and say hi if you want to know more about the development process.
 
 
 
Our ticket system is at https://tickets.metabrainz.org. 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:
 
 
 
* Coming into #metabrainz and saying hi
 
* Post a message on [https://community.metabrainz.org https://community.metabrainz.org]
 
 
 
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 [https://community.metabrainz.org/c/metabrainz/gsoc-applications send drafts of their proposal to our forums] before they apply on the GSoC website.
 
 
 
We have a [[Development/Summer_of_Code/Application_Template]] which we would like you to use when you write on the forum. If you do not add this information then we may not talk to you until you add it.
 
 
 
== I have more questions… ==
 
 
 
Great! The [[Communication]] page describes how to reach other MusicBrainz contributors via [[Communication/IRC|IRC]] (#metabrainz for most GSoC related topics) or other channels.
 
 
 
== Footnotes ==
 
 
 
<references/>
 

Revision as of 18:31, 17 February 2017

Get familiar

Do some homework.

Have you read about the MeB projects? Do you understand what we do and why we're excited to be contributers?
Have you looked at the ideas pages for each project?

Get motivated

MetaBrainz tends to choose students who take initiative, who jump in and start doing things, who can find answers to their own questions.

At this point, you should be familiar with basic open source development tools and workflows, and your Google-fu should be excellent.

Get inspired

So, you've done your homework. You've looked at the ideas pages. Excellent.

What looks interesting?
Have you read the related tickets and comments? Having done that, have you read related forum posts or blog posts, if any?
Are the technologies in your skillset? (Or can you pick up the required skills quickly on your own?)


At this point, if you're interested in working on a project you might seek out a mentor on IRC to discuss the project and learn more about what it entails. However, "what do I do next?" is not the right question to be asking.

Get involved

MetaBrainz tends to choose students who are active community members, who get involved at all levels.

Have you created an account?
Have you submitted any data?
Have you installed and tried Picard or the AcousticBrainz submission tool? Written a review on CritiqueBrainz?
Have you said "hi" in IRC? Maybe even lurked in a dev meeting?

Get ready

Do more homework:

Have you found and cloned the relevant git repo(s) and done a successful local installation?
Have you tried fixing a few small bugs/issues? Each project has its own specific contribution instructions, but the basic workflow is the same. Use the issue tracker to find something to work on, and use git to submit patches.

Get to work

The ideas pages describe a problem that needs to be solved. It's up to you to decide how you'd solve it.

This is not the part where you should be asking for help. This is the part where you show us that you understand the problem and that you have a good plan for fixing it. (When/ if you're chosen for the program, then of course mentors will be there to help.)

But at the same time, 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:

We strongly suggest that prospective students send drafts of their proposals to our forums before they apply on the GSoC website.

We have a template which we would like you to use when you write on the forum. If you do not add this information then we may not respond until you've added it.


Git workflow

New to Git? You could do worse than to start with Understanding the GitHub Flow.

Getting feedback

If the docs aren't enough to get you started planning your proposal, please leave a comment on the talk page explaining what you're looking for and how this doc could be improved.