Hi all,

Over the weekend, Adam, Garth, and I represented Mixxx at Google's  
Summer of Code Mentor Summit. Adam and I spoke about "Monetizing your  
Open Source Project (without being evil)" and Garth gave a great talk  
about "What can GSoC Mentors take from Commercial Software  
Development". Session notes from these talks will be available online  
sometime in the next few weeks, and we'll post some pictures on the  
Mixxx blog when we get a chance.

When we weren't exchanging ideas with other developers, we had some  
time to do some Mixxx hacking which resulted in LADSPA being enabled  
by default in trunk. There's still a handful of issues that need to be  
resolved before LADSPA is ready for a release though. These are  
summarised on the LADSPA wiki page:
www.mixxx.org/wiki/doku.php/ladspa
(Note that the on/off button is still broken, arrgh!)

On to something else - Earlier this week, I started hacking the  
library in an attempt to make it use SQLite through Qt. I've  
summarised some details of this library rework in point form below:

Motivation:

     * XML library doesn't scale:
           o Slow to load
           o Slow to save
           o I don't even want to know what happens when you have  
100,000 songs in your library
     * We're seeing lots of bug reports about the library (loading/ 
saving the XML, delete not working, etc.)
     * Too much code sprawl - We've been doing incremental fixes but  
there's still major problems that need to be resolved (TrackCollection  
sucking, etc.)


Proposed Solution:

     * Goodbye Track - This "Track" class we have doesn't need to  
exist. All of the code in it should be elsewhere.
     * A single data view will be created in MixxxView (like it is now)
     * All the data models will be created in MixxxView (to keep the  
view separate from the models)
     * The data models will access the underlying data structures  
(TrackCollection, TrackPlaylist)
     * TrackCollection will use SQLite through Qt and will do all the  
database stuff.
     * TrackPlaylist will do all the playlist stuff

     * The view should only ever talk to the data models (eg.  
QSqlTableModel, PlaylistModel), not the underlying data structures  
(eg. TrackCollection, TrackPlaylist)
     * Each data model should have properties associated with it, from  
which the context menu is generated (eg. songs are deletable, etc.)
           o Keeps the view code generic


Original Plan (attempted this over the last few days):

     * Rewrite TrackCollection to use DB
     * Fix WTrackTableView and Track up.
     * Result: WTrackTableView is a nightmare to fix because the way  
we used model/view was wrong. I spent several days hacking on this and  
it's clear to me that a bigger reworking (ie. the proposed solution)  
is necessary for us to both fix and expand the library code.


Proposed Solution (Action Plan):

     * Rewrite WTrackTableView, will still talk to Player, but will  
access the data models properly instead of the underlying data  
structures.
     * Continue rewriting TrackCollection to use DB (I can reuse what  
I've written)
     * Completely eliminate Track
           o Stuff like "loadSelectedTrackIntoPlayer1()" from  
track.cpp are tied to the GUI, so they should be in WTrackTableView.
           o Will have to shuffle some slot/signal connections around,  
but end result should be much cleaner.

I've just created a Features_sqlite branch which I hope will end up  
containing all of these changes. 
https://mixxx.svn.sourceforge.net/svnroot/mixxx/branches/Features_sqlite/

The way the library code ended up like this is not really anyone's  
fault (it just ended up as sprawl), and it's certainly not Nathan's  
fault. Nathan made many improvements to the library's GUI and showed  
us how to do certain things properly with Qt 4 like the search box.  
The library code started as a mess before any of the current  
development team got involved, and we've just never managed to make it  
as flexible as it should be. The important part is that I think we've  
learnt a lot from trying to work with the existing code, and this  
experience has lead us to a better (and simpler) design.

Thanks,
Albert

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel

Reply via email to