Thursday, January 31, 2008

Muine Thoughts

I made branches off of muine trunk in SVK for my C# 3.0 lambda and addins experiments. I may possibly create a muine-experimental tree completely separate from the Gnome SVN, possibly in Google Code (or, I could just get a new screenname for svn.gnome.org).

Muine was popular back in 2004-2005, when Mono was still brand new and Muine was one of few examples of real programs written in Gtk#. Now we have the huge Banshee project and Muine has rather stagnated and slipped into the shadows. However, there's something to be said about a smaller program that doesn't try to do everything (although we still have plugins, through the new and old interfaces). I also prefer the simple playlist-oriented GUI of Muine over the more iTunes-like projects such as Rythmbox and Banshee. If anyone wants to suggest a name other than muine-experimental or muine-zoe, feel free. We could totally fork instead. Perhaps I can use the "Calliope" name I was throwing around a few months ago.

Some Muine Thoughts:

  • C# 3.0 lambda expressions for short callbacks/delegates
  • Don't do any real work (dozens of lines) in a callback or delegate, call another method instead.
  • Eliminate all pointer passing within Muine. I did a bunch a couple years ago, it's really a mess in there.
  • Use TagLib# to process metadata.
  • Remove Gnome dependency
  • Don't use plain Berkley DB, at least use SQLite. LINQ can make it a beautiful thing. Do all database stuff in managed code.
  • Eliminate all C code that isn't strictly needed (Nobody's successfully tackled a Gst# binding yet so we at least need that).
  • Make music playing independent. We can still distribute it in the tree but make it a totally independent library with C# binding. Eliminate all P/Invokes.
  • Move to a new build system, possibly NAnt.
  • Rework the whole structure. The Global control center thing just has always grated on me.
  • Tackle PlaylistWindow.cs
  • Implement a new Addins library.
  • Port existing plugins to the Addins framework (there are only a handful, consider hosting them too).
  • Remove the old plugin framework.
  • Move some currently built-in functionality to plugins (e.g. DBus, Amazon, MusicBrainz).
  • Hack Diebold, elect Dennis Kucinich.
  • Combine the notion of "Song" and "Album" in the GUI, some sort of tree drop-down within the list is what we've talked about in the past. This goes for both the "Add{Song,Album}" dialog and the main playlist.
  • Show the album name in the main window.
  • Make the playlist hideable (I had a patch to do this before, Jorn didn't like the idea but other people have expressed an interest in it).
  • Turn the buttons into a real toolbar (the only question is what to do with the volume).
  • Make a slider in the main window instead of the Skip To dialog.
  • Anything else you can think of

Muine has the potential to be a great piece of software. It just needs some love!

No comments: