This page collects some introductory information which we hope will be of use to our students, especially during the community bonding phase of GSoC 2008.
As you all already know, Mixxx is a cross-platform DJing application which recreates in software many of the features of a traditional hardware DJing setup.
Mixxx was originally written by Tue Haste Andersen and Ken Haste Andersen in 2002 partly as a research project into user interface design for Tue's PhD. The project continued to develop until some time around 2004 when Tue moved on to full-time employment and no longer had time to manage the project. Although development continued, there were no new releases and Mixxx drifted somewhat in this period until early 2006 when Adam Davison became the lead developer and released Mixxx 1.5.0. For the last 2 years, the project has been steadily growing leading up to our inclusion in Summer of Code for the first time last year.
Mixxx was designed with a strong focus on cross-platform portability. Qt gives us a very strong cross-platform graphics toolkit and has additional benefits like a thorough set of portable data structure implementations (eg. QMap, QList, etc.). Mixxx was originally written using Qt 3, but during the summer of 2007, Mixxx was ported to Qt 4. At the same time, we moved away from a custom qmake-based build system, instead opting for SCONS.
SCONS is a python-based build system that has easy syntax, and is still very powerful. Our single SConscript file (in the “src” directory) checks all of our dependencies and builds Mixxx on Windows, OS X, and Linux.
New experimental (and potentially unstable) features are coded such that they are only enabled when they are turned on at compile-time. For example, during its development, recording was turned on by compiling with scons recording=1. Now that recording is stable and reasonably well tested, the compile flag has disappeared and it is always built into Mixxx. For a full list of build flags, run scons —-help
One of our goals is to minimize the amount of platform-specific code we have. Before we moved our audio core to PortAudio, we had separate backend for ALSA, CoreAudio, ASIO, WMME, etc. This is a losing strategy for several reasons:
By switching to PortAudio, the platform-specific audio code moves to an external library, our audio core is now much more flexible and any improvements we make to PortAudio will be of benefit to the whole open source community. Currently, our MIDI code still has three different backends (Windows, CoreMidi, and ALSA-seq), although creating a single PortMidi-based backend is something we will consider in the future.
As with any project, there are some names which you will see. Here's a list of some:
Albert and Garth are based in Canada (EST -5), while Adam can be found in either London or Geneva (GMT +0 or CET +1 respectively).
On IRC, Garth is jumpkick, Albert is asantoni, Adam is adam_d.
When you enter the work world, you'll hear managers drone-on about how with better communication all the bad things that happened could have been avoided.
Its only partially true… Problems are almost assured to crop up from time to time. To be really successful in handling them, you must also include how you deal with the people you report to and the clients you provide service to in your approach to solving them. [In this case mentors and the community of Mixxx users]. This is called managing expectations.
You've been selected because you presented great proposals, you've got the skills to pull them off and because we sense in each of you a passion for Music/DJing.
You all have an assigned mentor, he has the following responsibilities:
In the highly unlikely event that you have a problem with your assigned mentor, you should attempt to discuss it with them. Should this fail, Adam Davison is the organisation administrator and will deal with any such matters in confidence. If Adam is your mentor, you're screwed… just kidding :) you can speak to any other member of the mentoring team if you feel more comfortable.
In addition to this, you will be getting support from all 3 mentors. Each member of the mentoring team has different expertise, different insights and not least of all different timezones. The whole team will do the following:
Up to a point, the more people that you discuss a technical issue with, the better. The recommended ways for having technical discussions are in #mixxx on IRC or on mixxx-devel
You're probably wondering what exactly you can do in the community bonding phase. Here is a list of things:
We understand that many of you will have varying levels of school commitments over the next few weeks but you should try to do as many of these things as possible, this will leave you in an excellent position to start work as soon as the coding phases begin.
There are a bunch of places where you can interact with the Mixxx community, here's a list of the main ones: