This page has some general advice for people 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.
In general, your project proposal can be inspired by any of the following:
You are more than welcome to contact us before submitting your application, we will be happy to advise on most aspects of the process. Getting in touch first is especially recommended if you are planning to apply to work on an original idea, rather than one of our suggestions from the ideas page.
So if you'd like to discuss your application, your ideas or just introduce yourself, then feel free to get in touch in one of the following ways:
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é.
We also very much value the contributions students make. Because Mixxx is relatively small, 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 is a common question asked by prospective students, the answer is generally: “Yes”. The Mixxx Summer of Code team value intelligence and enthusiasm above specific knowledge of the libraries or algorithms we use. We have found in the past that an interested and motivated student who is willing to learn is more valuable than anything else.
We also value general software design and development experience above specific knowledge of a library or API. 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
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 devs 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 that though.
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