Mixxx is DJ mixing software created and maintained by the open source community. It's free, offers great basic capabilities, and supports around 30 external midi DJ controllers. It's where any aspiring DJ should start off, and it's good enough that you may never leave it, unless you're an FX junkie.
To describe Mixxx is to describe just about any DJ software. Basically it mimics a two-turntable physical setup with two wave displays, two sets of controls, two digital turntables and a fader control. At the bottom there's a list pane that displays all the files in the library, playlists, iTunes playlists, Crates (user libraries such as rock, techno, trance...), etc. You can also record with Mixxx, and there's a separate list of your recordings.
The best thing about Mixxx is how easy it is to use as well as be musical with it. My favourite feature is the automatic beat looping buttons. Clicking one of these automatically creates a loop (from eighth notes to 16 bars) and starts playing it. Hot cues (markers you jump to) are provided and of course you can reverse playback, as well as scrub (play at high speed) in either direction. There are also three shelving EQ buttons that morph into filters (blocking the frequencies that they normally boost) with the simple press of a button.
Mixxx, as is other DJ software, is too complex to list all the other features here. Important ones include beat matching, Icecast Internet broadcasting, mic controls, pitch change, time code control from external turntables and four samplers (which play files but lack advanced controls).
Which brings me to Mixxx's only weakness. Other than the flange effect found on the main page, there are no FX or support for DirectX or VST plugins. If you love applying reverb, chorus, metallizers, etc. then Mixxx may not your cup of tea. Note: Linux users can use a program called JACK Rack to add FX, but that's not as nice as having them integrated. Integrated effects are, however, in the works.
If you're a pro, you're probably using a high quality sound interface that comes with its own ASIO drivers. If you're not, then installing ASIO4ALL will greatly reduce the latency of Windows audio and make using Mixxx much smoother. Latency is the time between your computer playing a sound file and when you actually hear it. In this instance, it affects the time between using any playback control and when you hear its effect.
With the standard WDM audio drivers latency is usually anywhere from 20ms (doable) to 60ms (not doable) depending on the PC. With ASIO4ALL installed I was able to knock my latency down to less than 3ms which feels instantaneous.
There are a lot of open source programs that are usable, but feel clunky and are, to be blunt, second rate. Mixxx is not among them. It's exceptionally easy to use, performs well and is stable. Even rarer for open source, it's fast and good looking.