Quickie: Open Source Annoyances

As many of you know I’m a strong promoter of open source. I use a lot of F/OSS (Free/Open Source Software) applications and quite a few commercial ones. In many cases, I have found the the F/OSS apps are useful precisely because they don’t get in the way (OpenOffice.org versus Microsoft Office is a great example where the commercial application is a greater nuisance).

However, I have my share of gripes. I plan on writing a lengthy essay on one such complaint of mine, but that’s reserved for the future! This one is a lot more simple. Here:

Rhythmbox Screenshot

Meet Rhythmbox. It ships with Ubuntu (and Ubuntu variants like Linux Mint) as the default media player.

It’s a damn nuisance! It’s uselessness rivals that of Windows Media Player. Though, I think that’s an unfair comparison. WMP ships with useful codecs and is fairly capable in its own right.

Aside from the obvious issue of duplication effort–and there are a lot of free media players on the market these days–it’s increasingly obvious to me that some developers focus more on simplicity and less on usability. Here’s a short use case that they evidently didn’t plan for and it’s really simple. I like to listen to specific songs repeatedly. In fact, I’ll listen to exactly the same song over and over and over and over again until the neighbors lose their mind. If I like a song, I am going to put it on repeat and listen to it over and over again.

You can’t do this in Rhythmbox unless you use the search or artist features to limit the song displayed to one single track. I’m sure the developers would probably suggest that this is intentional–my use case has already been considered–and that the best way is to make sure my current play list shows only one song. I can work with that but it’s inconvenient. If I want to change songs, I have to use the search feature again which completely eliminates the point of having a playlist, album list, or artist list. I kind of like to browse through my list of songs before selecting one to place on repeat, and resorting to a search feature to repeat one track alone is a bit stupid.

Oh, and there’s a HUGE gap between the end of one track and the beginning of another. This occurs even if you have one song on your playlist. The last time I had such a huge gap in playback was when MP3s were first becoming popular and I had an early Pentium clocked at a whopping 200 MHz.

I’m glad I have Amarok to compete against nonsense like this.

Anyway, this rant has a reason. Open source developers often say one of two things: “It works exactly as intended and we have no reason to supply additional functionality” or the dismissive “I write this for my own enjoyment and if you don’t like it, tough!” In the former case, I’m glad there’s competition, and this is precisely why duplication of effort isn’t necessarily a bad thing: The more projects that provide the same service, the more potential competitors there are who are each likely to provide functionality a specific subset of people want. In the case of the latter, if a developer writes the software exclusively for himself and not for the hopes that someone else might make use of it (Pidgin developers, I’m lookin’ at you), that developer has no business encouraging their software to be included in a major public distro like Ubuntu. No, really.

I don’t want to get ahead of myself, though. This rant is one that’s been bugging me for a while now. I’ll have to write it up this weekend!

I think I went a little longer than I expected. If you have corrections or suggestions to make, post them and I’ll make good on any mistakes I’ve made. However, you won’t change my mind: Rhythmbox sucks. I suspect that there are only three types of people who use it: The Rhythmbox developers, poor SOBs who don’t know any better, and people who have extremely limited needs. I suspect the latter group could be mixed in with either of the former.

No comments.
***

Build Pidgin (or Carrier) in Ubuntu

I had a request from Will to give a run down on how to build Pidgin (Carrier, rather) from scratch in Ubuntu. It’s not too difficult, but Ubuntu doesn’t ship with many of the development headers and libraries required to build either of these two applications. Worse, Carrier doesn’t ship with a working configure script, so you need the auto* tools to build that first.

Now, I’m sure someone will probably say “But you can just download the .deb and install it from there, it’s easy!”

Yeah, you can. This post isn’t about easy: It’s about giving the user a choice. After all, that’s what open source is about, right? :) So, for the sake of argument, let’s assume that the individual reading this post has absolutely no other choice but to build Pidgin/Carrier from scratch.

Easy enough?

I’ve listed the packages that are required to have a fully functioning IM client. I also have “barely optional” and “optional” packages listed as well. Barely optional are packages which you don’t need to install, but if you don’t, certain things probably won’t work and your IM client might not play very nicely with other applications like the desktop environment. Optional packages are those which you really don’t need, but if you have a really morbid fascination for installing everything, you can choose to grab them all.

If you’re installing from Synaptic, here’s the list of packages you’ll need:

  • Required Packages
    • automake
    • libtool
    • gettext
    • libglib2.0-dev
    • libgtk2.0-dev
    • libxss-dev
    • libstartup-notification0-dev
    • libgtkspell-dev
    • libxml2-dev
    • libgstreamer0.10-dev
    • libnss3-dev
    • libgnutls-dev
  • Barely Optional Packages
    • libdbus-glib-1-dev
    • libnm-glib-dev
  • Optional Packages
    • libmeanwhile-dev
    • libavahi-client-dev
    • libperl-dev
    • tcl8.5-dev

I’ll explain more about each of the optional categories in a moment. First, let’s map out the commands you’ll need to run to get this started:

Install the Packages

You will probably need to update Ubuntu first. If you don’t, you’ll have to reinstall a bunch of packages down the road. Though, I suspect that if you’re going this far, you’re already expecting to install a lot of things. In that case…

Here’s the command line you’ll need to get started:

apt-get install automake libtool gettext libglib2.0-dev libgtk2.0-dev libxss-dev libstartup-notification0-dev libgtkspell-dev libxml2-dev libgstreamer0.10-dev libnss3-dev libgnutls-dev libdbus-glib-1-dev libnm-glib-dev

Then, unpack the Pidgin or Carrier sources:

Pidgin
tar jxvf pidgin*.tar.bz2 (Use zxvf if you have a gzip instead)

Carrier
tar jxvf carrier*.tar.bz2 (Use zxvf if you have a gzip instead)

Carrier only
Create the configure script for the next step:
./autogen.sh

Carrier and Pidgin Both
./configure --disable-meanwhile --disable-avahi --disable-perl --disable-tcl

And that’s it. Before I close this post, though…

What are all these darned packages anyway?

I’m glad you asked. It’s a mess, I’ll give you a short drill-down:

Barely Optional Packages:

  • libdbus-glib-1-dev: D-Bus support. This handles communication between user applications, the system–heck–even the kernel. You can read more about D-Bus. To disable D-Bus support use: --disable-dbus. Be careful, though. Disabling this might cause minor problems with Pidgin’s ability to interface with your desktop environment. Then again, maybe you want this…
  • libnm-glib-dev: NetworkManager. This handles network connectivity from the desktop environment. I’m not sure why libpurple or Pidgin would need this, but I imagine it has something to do with Pidgin’s ability to start when the desktop environment starts. To disable NetworkManager support use: --disable-nm. Note that you might not want to do this.

Optional Packages:

  • libmeanwhile-dev: Meanwhile/Sametime IM support. Use --disable-meanwhile to disable this.
  • libavahi-client-dev libavahi-glib-dev: Avahi/Bonjour autodiscovery support. This isn’t really necessary. If you plan on enabling it, you do need both libraries installed. Use --disable-avahi to disable this.
  • libperl-dev: Perl scripting support. Yep, some people use this. Use --disable-perl to disable this.
  • tcl8.5-dev: Tcl scripting support. Use --disable-tcl to disable this.

Other noteworthy things…

  • Installing libgtk-dev pulls in a lot of packages. In fact, it pulls in about 53 dependencies.
  • libxss-dev is required for Pidgin to track mouse/keyboard activity.
  • libxml2-dev is needed for–you guessed it–XML-related stuff. Incidentally, if you’re building PHP from scratch, you’ll need this.
  • It isn’t recommended to disable NSS and GnuTLS support with --disable-nss and --disable-gnutls; if you do, MSN, Novell Groupwise, and Google Talk support won’t be built.

So there you have it: Building Pidgin or Carrier yourself should be (reasonably) easy!

6 comments.
***

Quickie: Linux Mint

If you’re into the whole Linux thing, you might be interested in Linux Mint. It’s an Ubuntu-base distribution and aims to ship with more of the software one might expect of Windows and the likes. Personally, I like the GTK theme Mint uses over Ubuntu’s (though, I don’t like GTK in general). Let’s take a look:

screenshot-17

Unlike Ubuntu, the Linux Mint folks have altered the default layout of the theme to be more in line with Windows. I kinda like the application (Mint?) menu, though it is a little buggy. Admittedly, some of the mouse-overs on the various submenus are a bit of a nuisance. Though, being as it’s based on Ubuntu 9.04, the fonts look really quite nice.

Here’s a shot of the terminal window:

screenshot-20

Interestingly, sound worked right off the bat for me–and they’re using PulseAudio.

All in all, it looks like it’ll be worthwhile to play around with. I might even install it on a spare drive!

If you like Ubuntu, give it a try.

4 comments.
***