Wednesday February 02, 2005
The state of VoIP on Unix, or, my life in software hell
Voicestream (now T-Mobile, though voicestream.com hasn't worked in months) has unlimited Internet for $20/month in the US. Unlike 802.11 hotspots, this works while on the move and just about anywhere humans (in the US) actually go. So I got this bright idea to cancel my voice plan and just do data, and use my laptop as my cell phone by way of Voice over IP since I take it with me almost everywhere I go anyway (especially anywhere I go for an extended period of time, such as vacation or the coffee house). So I start investigating VoIP. Here are my findings.
"SIP", or H323, is the most common standard for VoIP. It's what Microsoft Netmeeting uses and it's what most of the big-boys like Vontage use. Vontage seems creepy and like most commercial providers, they're obsessed with physical Ethernet or wireless Ethernet phones. Thier service might work with a software phone but they won't tell you that it does and they're going to give you this stupid hardware phone "for free" and then lock you into a contract to recoup the cost. And of course the thought of lugging around a software phone that's about 20 times the size of a cell phone with my laptop to Starbucks and plugging it into the laptop with a crossover cable so I can receive calls is absurd. http://sipphone.com is Lindow's venture into VoIP and they get it. They'll sell you an inexpensive adapter (D-Link brand) that you can plug into your Ethernet lan and then plug your standard RJ7 analog phones into. You could have the circa 1930 Swiss phone that served as the hardline in The Matrix and when someone calls you, it'll ring. But they'll also just let you use a bloody software phone and tell you how to configure it yourself. You'd think the hundreds of other players would get the clue and just state they support software phones but instead they're all trying to emulate each other even though none of them are making any money yet but they're going to make a whole lot of money real soon because hey VoIP is going to be big, right? Idiots. Lindows also wrote and released phone-gaim, a hacked up version of Gaim that supports SIP VoIP. So I'll talk about SIP softphones next.
They all suck. phone-gaim might be really spiffy but due to deep and severe brain damage in GTK manifested as chicken and egg scenarios, I can't build it, and they don't offer a nice simple statically linked executable you can download and run. However, if you happen to run Lindows OS, you can grab it from click-n-run. So, if you aren't a Lindows customer, screw you, we don't want you as a SIPPhone customer either. No problem. SIP is a standard, right? There are plenty of other software phones. Next up: Gnomemeeting. I had to download and build ALSA, the more complicated therefore better sound system for Linux, to meet the requirements for Gnomemeeting as Gnomemeeting doesn't work without ALSA. It turns out that Gnomoemeeting also doesn't work with ALSA. Next! kphone looks small and simple, the Qt people are on a lot less crack than the GTK people (binary gconf points to the config files which point to the binary which points to the config files that point to the libdir, bindir, and includedir, and if you aren't root, you're completely hosed, even if you change your environment variables to heck, and have fun trying to install gconf and a billion other things to find this out). So I fire up kphone. Naturally, it isn't conrrectly configured for what the Lindows people are offering. That's okay. I change the settings. In order for the changes to take affect, I have to restart kphone. No problem. I quit out, saving things as I go and picking the nice "Exit" option from the menu and start it up again, and lo, there is the new user configuration screen, blank as a sheet, ready to accept changes that will need a restart before they take affect. Yet another chicken and egg problem. I sence a theme. Next up: Linphone. Linphone has lots of blanks that aren't clearly labeled and have no examples of how the data should be input, and the SIP community hasn't standardized on URL-like things, values broken out into individual fields, host:port notation, user@host notation, or so on. Getting it wrong in Linphone won't stop Linphone from trying with obviously bad values, and when it times out from trying, it gives the only error message it has: "Not permitted". After failing to obtain a permit after a few dozen tries, I moved on. olphone is a command line application. If there's sanity anywhere, it's in command line applications. olphone probably works great, but I can't figure out SIP well enough to turn all of the right things on and all of the wrong things off. When I last left it, it couldn't find a "gateway server", I don't know what the hell a gateway server is, and I can't convince it not to look for one. Next!
Oh, crud, that's all of the SIP clients I could find, so that's the end of the road for http://www.sipphone.com. I remember hearing about Skype from one of those P2P software companies. It's either the one that makes Morpheus or Kazaa. I don't remember which it is but it's one of the evil ones where the client is full of spyware even though they say it isn't and they either try to lock everyone else out of the network or they don't place nice on the network. So, against better judgement, I download the static executable for Linux (they support Linux as well as MacOS X and Windows! Yay! They have a static executable! Yay!) and run it. Under Knoppix. Let's see it infect Knoppix with spyware. That'll be good for a laugh. If it fails to install spyware, it fails silently, but maybe it's trying to distract me with pointless forms while it does. I have no idea. I can't see a damn thing. The window is 65,536 pixels wide and 65,536 pixels tall. Haha, software pulled a boner. That's okay. I'll just use the -geometry command line argument that every X program since the dawn of time recognizes. Except this one. It's 65,536 pixels tall and wide or nothing. I think I see the edge of a small control on the screen but I'm not sure. I could move the border over then drag the window back onto the screen and repeat about 65 times to make it narrow enough to fit on to the screen and then repeat about 80 times to make it tall enough to fit on the screen (the LCD's resolution is 1024x800) but that would take a while. And besides, the bad feeling I had about this program got worse after visiting the site to file a bug report, being directed by the FAQ to visit the users forum to get support if I'm having problems (I'm fine, it's your software that's sucking eggs), having to create yet another user id in addition to the one I already created on the site to post to the forum, and seeing about 25 pages worth of Linux users screaming "it doesn't work!" in all of its various and sundry permutations. This software doesn't work.
Nothing works. The editors choice is: tin cans with a string. As a tie breaker for second place, though, Skype works through a firewall, and SIP doesn't. So let me take a moment to pontificate on how utterly stupid it is to make a protocol that requires users to open up ports in their firewall in order to work. A lot of us work at jobs where we don't control the firewall. A lot of us have GPRS service from providers that run a firewall that we don't control. The rest of us are merely too stupid to know that that shiney little 802.11 AP has a firewall built in that needs to be opened (and that WEP should be turned on). Especially since there are well known techniques for puncturing holes through firewalls that only require a neutral 3rd server that isn't firewalled to coordinate the hole poking (when two firewalled hosts want to talk to each other, they just send each other a nice little UDP packet and then the firewalls start letting UDP packets to the same port in from the other host - SIP is UDP based for voice data, so this would be trivial).
Everyone is on crack. No one can write software. In the rare case that something actually starts to work acceptably well, a million zealots descend from the sky and decry it to be old and in need of massive overhaul that increases the complexity thirty times while failing to offer any new utility and then use the oppertunity to demonstrate their inability to design.