Development / Summer of Code / Getting started
So you're looking to apply for Google Summer of Code, GSoC, and you are interested in a MetaBrainz project. This page will help you get started.
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 contributors who take initiative, jump in and start doing things, and 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 involved
MetaBrainz tends to choose contributors 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 signed up for ListenBrainz? Written a review on CritiqueBrainz?
- Have you said "hi" in the dev chat? Maybe even lurked in a dev meeting?
- Have you submitted any data?
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 (including the comments)? Having done that, have you read related forum posts or blog posts, if any?
- Are the technologies in your skill set? Or can you pick up the required skills quickly on your own?
- Have you read the related tickets (including the comments)? Having done that, have you read related forum posts or blog posts, if any?
At this point you might seek out a mentor in the dev chat to discuss the project. However, "what do I do next?" is a question you should be asking. Which leads us to:
Getting answers on IRC
While it's true that "there are no dumb questions", there are better and worse places to ask some questions. Again, MetaBrainz tends to choose contributors who … can find answers to their own questions. There are also better and worse ways to ask.
Before you ask a question in chat, search the forums to see if it has already been answered. If not, and other contributors may have the same question, consider asking your question in the forums.
Good questions (examples)
- "I'm looking at ticket X, but I can't reproduce it. The ticket says that the Frob page has no Frob button, but when I go to the page I see it. The button is also there when I log in (I see that the frob page has some slightly different behaviour for logged in users)"
- "Ticket Y says that we need to add a "sort" field to all tables, but doesn't say what the tables are. I've found tables on page a, b, c and d. Are there any other ones that need to be sortable?"
- "On ticket Z, there are two possible solutions for solving the problem. I think that thing a is the better option because ______. Should I go ahead with this solution?"
- "I'm trying to set up a local MusicBrainz server, but get <this error>. It looks like package x is missing, but I installed it and still get the same error. Can somebody point me in the right direction?"
Not-so-good questions (examples)
- "Hey, can somebody answer my questions about GSoC?"
- Don't ask to ask, just ask.
- "How do I start contributing?"
- If this doc doesn't help you get started, please re-read the last section.
- "Where can I see the source code?"
- This is the sort of question that can be answered by searching the wiki/docs.
- "I am interested in working on your project! Can you please guide me as to how to set it up and where I can find some tasks to work on?"
- We work on multiple projects under the MetaBrainz umbrella. We expect you to identify the project that you want to work on and that you have tried to set up a development environment. Project pages on our main SoC wiki page often have a link to a page in our Jira issue tracker listing potential tasks. If you have questions about a specific task then please provide a link to the task, along with your questions.
The proposal-writing period is your chance to demonstrate that you're motivated and can solve problems on your own. If/when your proposal is accepted then our mentors will work with you one-on-one.
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.
- Looking for your first issue to work on? Try searching for issues labeled "Beginner", "Good First Bug" etc.
- 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 problems that needs to be solved. It's up to you to come up with a solution and a plan.
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.)
We strongly suggest that prospective contributors send drafts of their proposals to our forums before they apply on the GSoC website.
- Come to the #metabrainz chat and say "hi".
- Post a message in the forums.
We have a template which we would like you to use when you write on the forum. If you do not use the template then we may not respond.
Git workflow
New to Git? Start with Understanding the GitHub Flow.
Getting feedback
If this page isn't enough to get you started, please leave a comment on the discussion page telling us what could be improved.