- Full library browsing, with browse by artist and album funcionality
- Live find-as-you-type searching
- Ability to handle large music libraries (tens of thousands of songs)
- Finally, the focus of this post, shuffle-by-album. In case it's not clear, that means the ability to listen to all of the songs of an album in order, and then choose another album at random to play afterwards. This is particularly useful to me since I prefer listening to full albums, but I have enough albums that if I don't play them at random I'll end up listening to only a small subset of them.
Amarok is another very popular media player for Linux, so I gave that a shot as well. I realized pretty quickly that it wasn't going to work for me. My initial impression was that the interface is a total mess, and while I might have eventually become accustomed to it after a lot of use, I didn't want to bother:
More importantly, though, it seems to be more of a playlist based media player (like Winamp) than a library based media player like iTunes, Rhythmbox, or Windows Media Player, which is what I prefer.
I tried another program, Banshee. I had used Banshee for a while a few years ago, but stopped because it was slow or buggy. The latest version was much better, and it even had the option to shuffle by song, artist, or album. Sort of. The GUI options for shuffle by song and shuffle by album are both greyed out, and not selectable. Wondering why, I did a few quick searches and all that I could find was a single thread on the Banshee forums asking the same question, with zero responses. Digging further, I went into the Banshee development IRC channel and asked about it:
Me: i've got a quick question re: shuffle Me: does banshee *actually* have shuffle by artist/album Some dude: AFAIK "nearly" for a very very long time Me: so, then, why are the options listed on the shuffle menu and grayed out Me: instead of just not there at all? Me: because, frankly, that's obnoxious and counterintuitive Me: i just tried switching to banshee from rhythmbox specifically because i was tired of not having shuffle by album Some dude: bug 348582 Some dude: needs fixing. i don't know why nobody's just done it though.The bug in question: Random by Album. It was created nearly 3 years ago. After about 8 months, Banshee was updated to include a GUI widget to select shuffle type, but nothing in the backend of the application was actually added to provide the real functionality. Ever. The glory of open source is that I can go and look at the source code myself. So I did. The only piece of backend code that I was able to find that even referenced an ability to shuffle by album or artist was the following:
public enum PlaybackShuffleMode
{
Linear,
Song,
Artist,
Album
}
That's it. Why on earth would they actually bother to put UI elements in their software for features that don't actually exist yet? As far as I can tell, nobody is even working on it. I don't think I've ever seen that in a release version of a widely-used application.
This brings me to what I suppose is the point of all this, which is what I see as a flaw in the open source development model: frequent lack of control, organization, focus, drive, whatever you want to call it. I can promise you that this would never happen in an application from a major software company. However, the open source model clearly does work for quite a lot of other applications; what's the difference here? I think that it has to do with the number of competing offerings in a particular area, and it seems to have an effect opposite that in commercial software development. Having a large number of commercial software offerings targeted to the same audience tends to result in better applications; more competition drives further innovation to sell more software. This obviously isn't the case for most open source software; too many competing offerings dilutes available developer time, talent, and effort, and shrinks the userbases for each which results in less feedback and input. Since the developers aren't making money off of the software, they won't be as driven to compete. There are fewer developers to implement new features, to write bug fixes and to improve usability. Fewer developers means that the personal preferences of a few of them are much more likely to have a significant impact on the software, instead of focusing on what the users really want or need. As a result, we've got the situation that I saw with Linux media players. They've all got the general idea right, but the development is so spread out that the overall quality is less. In my personal experience, the software is less reliable and harder to use on average than iTunes or Windows Media Player.
Of course, like I said, some open source software is very successful, and works incredibly well. I thought about every single piece of software that I use on a regular basis, and almost all of the ones that I didn't particularly like have a number of competitors, whereas the great ones all seem to either stand alone or have one or two alternatives. Banshee, Amarok, Rhythmbox, Quod Libet, and a number of others are one example of the former, and there are a number of the latter: gcc, make, emacs/vim, pidgin, Firefox, the Linux kernel itself, etc.
I wonder how different Rhythmbox and Banshee would be if the developers had worked together to create just one application? Obviously at this point it wouldn't be feasible for them to combine into one application, but things might have gone differently if they had started together from the outset. I don't see anything in particular that distinghuishes them from eachother, why not have twice as many people working together?
At any rate, if you're a good user of open source software, you should have one thing to say to me right now: "Submit a patch." And you're right; this is the real solution for all of the above problems, and is the only way that I'm able to be using all of this free software right now. So I think I'm going to. I've never actually contributed to an open source software project before, and I think its about time that I do. It'll probably take me a little while to find time in my schedule to work on it, and there'll some potentially significant ramp-up time to get a general sense of how Banshee's codebase is organized. It's also written in C#, which I've never used before, but picking up another new language is never that difficult and is almost always useful. Call me out on this in a few months if I haven't done anything.
BTW- you should use Quodlibet and add the shuffle by library if you want. Maybe I'll help you with this, since I might use such a shuffle as well. Its python, so it is pretty easy to modify. I just sent them a patch to fix something that was bothering me (lack of support for recursing symlinks in folders/libraries)
{
Linear,
PlaybackShuffleMode
}

