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