Thank you for your interest in working on Mixxx with Google Summer of Code! GSOC can be a fun and rewarding way to put your coding skills to use by contributing to free software. GSOC students gain valuable experience not only in programming, but also collaborating with an international community to make awesome software used by thousands of people around the world. We welcome you into our community and hope that you find working on Mixxx as fun as we do!
Mixxx is relatively small project, so students' work often makes a large impact. During and after your Summer of Code project you will have the opportunity to put your work in the hands of real DJs and hear how they've used it. Past students have had a lot of fun working on Mixxx and learned a lot at the same time. If you want challenging problems, freedom to develop your ideas, interesting people and an all-round brilliant summer, then apply to work on Mixxx.
This page has some general advice for students thinking about applying for Summer of Code with Mixxx. If you wish to apply for the program then you will need to visit the official Google Summer of Code website.
We consider more than the words in your application when deciding which students to accept. We look for signs that you will become an active participant in our community. Although it is not a requirement, we hope you continue to stay involved after GSOC ends. The best way to show us you will become a part of our community is to get involved before beginning your application. Here are some ways to get started:
We expect that you make an effort to answer your own questions before asking us. We are happy to give you guidance and assist you when you get stuck working on code, but we will not do work for you.
GSOC lasts several months, so it is important that you choose a project that you are personally passionate about that you will be excited to work on for an extended period. We cannot tell you want you want to work on, but we have some suggestions for project ideas. Before thinking too much about what project you want to work on, we suggest spending time using Mixxx and Getting Involved in the community. This will help you understand what Mixxx currently does well and what areas could be improved. In general, your project proposal can be inspired by any of the following:
The Mixxx development environment is cooperative and relatively informal. Our community is small but unusually diverse. Working on Mixxx you would have an opportunity to interact with a unique mixture of programmers, artists and DJs. Mixxx as a piece of software also offers some unique challenges, we are both cross-platform and (soft) real-time and support a huge range of MIDI and audio hardware devices. Students with Mixxx will have an opportunity to learn advanced skills like low-latency programming and cross-platform application deployment which will look great on your resumé.
This is a common question asked by prospective students, the answer is generally: “Yes”. You do need some prior experience with C++, even if it was only for a small school project, but you do not need experience with the specific libraries or algorithms Mixxx uses.
We value general software design and development experience above specific knowledge of a library or API. We have found in the past that an interested and motivated student who is willing to learn is more valuable than anything else. For example, if you've never used Qt before but have done lots of Java and Gtk+ UI development then you should make sure you let us know about it in your application.
Of course if you do have direct experience with the tools we use, you should definitely tell us about that too. The main external tools we rely on are Qt, SQLite, and Git.
Firstly, think about your choice of project carefully. You're going to be doing it for a couple of months, so it's important that you choose something you're going to enjoy. Once you've made your mind up:
Overall, your application should make us believe that you are capable of completing the project and delivering the functionality to our users. If you aren't sure about anything, get in touch with us, we're happy to advise you.
We require our students to merge some of their code into our master branch before the end of the summer. The best way to achieve this is to divide your project into small self contained subprojects and plan to merge at least one of them around midterm.
A good example for this is 'Improve our track managment':
Another approach is to analyze what the absolute minimal requirements are and then adding features on top of that. eg 'implement cover art in Mixxx':
During your summer you'll encounter bugs in Mixxx or find code that can be refactored to help you implement your ideas. You can also immediately fix them in the master branch and help us all out. This has several advantages. All your pull request will only concentrate on specific features and are much better to review. And you'll also get direct feedback from other developers and user during the summer.
Since this is a hard requirement we as mentors will also have an eye on that and check if your proposal incorporates it and also warn you ahead of time during the summer if we see that you might not make it. Communicating with us on a regular basis is vital for keeping your project on track.
To get a feeling for the code and get some experience with our code you can go and tackle some of our easy bugs. Look at the code that you want to change, check if it follows our coding guidelines. Do some research on the API's you want to use, plan what classes you will add and how their public API will look. Write down your algorithms in pseudo code. The better your research is and the better you plan ahead the easier it will be to judge how long a given task will take. For your time estimates you should also consider that you can do less stuff during exams and try to be a bit conservative. If you have never done anything like GSoC before you will tend to underestimate the time to complete a task. I know that giving these estimates is not easy and that also professionals have problems with it. Having a good plan, knowing its weak and strong points are can help a lot.
We look forward to your application! :) - The Mixxx Development Team