The disappointingly ongoing success of WvDial
For those who don't know, I'm one of the original two authors of WvDial (Oh yes, that's a real
Wikipedia link!)... back in 1998. WvDial and its spinoff C++ library, WvStreams (notably not
a Wikipedia link), were the absolute first code written as part of Weaver,
our startup's commercial product, which became Nitix (Wikipedia again, but
article is outdated) and later Lotus Foundations
(Wikipedia "stub" article).
The Wikipedia articles make a pretty good proxy for the comparative success
of those programs. Another silly statistic I like is Twitter search (Lotus
Foundations seems most popular in Japan at the moment).
Yes, yes, so WvDial remains popular. Yay us, right?
See, that's the funny thing. First of all, wvdial maintenance has been
almost zero (not quite zero1) for most of the last ten
years. WvDial has no GUI; it's purely a command-line tool. WvDial is a
modem dialer and nobody uses modems anymore. WvDial is written in
C++, which is generally unpopular for small tools and makes it ABI-unstable
and bigger than you'd like. WvDial has no unit tests and so everyone is
(rightly) afraid to change its rotting guts. And perhaps most oddly of all,
none of the problems WvDial originally set out to solve are problems
today.
This story is not a story of WvDial's awesomeness. It's a story of the open
source world's pure unadulterated fabulous nonstop 12-year marathon of suck.
I tried Twitter a while back and I'm pretty much over it, but I do still
subscribe to some Twitter search RSS feeds just in case anything interesting
happens (it never does). Every single day, several people recommend wvdial
to their friends. With comments like "wvdial always works, let me help you
set it up." In multiple languages.
Speaking of suck, that Twitter search is how I learned that Ubuntu's most
recent release(s?) have dropped wvdial from the CD in favour of
NetworkManager. You can still download wvdial from the Ubuntu repo,
except... whoops. You can't get online without wvdial. Because speaking of
suck, NetworkManager apparently does. (I've never tried it; I haven't used
a modem in years.) So we have people who can't get
online, downloading the .deb files on another computer and moving them via
sneakernet over to their laptop. And so on. People can't live without the
thing. I would say they love it, but I still hope that isn't it.
Why WvDial was created
We originally created wvdial back in the late 1990's because setting up pppd
'chat' scripts was too annoying. At the time, a lot of dialup Internet
providers required you to answer some menu items, log in, etc before you
could start an actual PPP session, and every ISP did it differently... so
everyone needed a different chat script. It was all gross.
The point of WvDial is that it would read the stupid inconsistent
menus and prompts for you and answer them. For the first few
versions, it failed almost every time. But we got lots of feedback from
lots of people all over the Internet, and we fixed it. Eventually,
it got to the point where basically nobody wrote to us anymore asking
why wvdial didn't work with their ISP, even though thousands and thousands
of people were downloading wvdial every month. (And that's just from us; we
didn't have any stats on who installed it from a real Linux distro.)
But here's the thing. Windows 95 and later have a built-in dial-up PPP
feature that doesn't even support anything like chat scripts. All
they do is dial up and start PPP, and if your ISP can't handle it, well,
that's too bad. Oh, there were ways of working around it, but they were
gross, and it didn't take long before most ISPs abandoned their menu
structures and just did things the easy way. In WvDial, we called the
Windows 95 behaviour "stupid mode" since it was the opposite of wvdial's
evolved, intelligent conversation style.
Unsurprisingly, some combination of Worse is Better and
"everybody runs Windows" conspired to make wvdial's cutesy
menu-guessing features completely obsolete. WvDial is, therefore,
completely obsolete. Or so you'd think.
People keep using WvDial because everything else is worse
Why do people keep using WvDial? Well, it's hard to tell from a bunch of
foreign-language 140-character Twitter posts. But I've observed the
following: a) it's not for modems, it's for coupling to data networks via
your cell phone and bluetooth that emulates a modem; and b) just
things like detecting the right serial port, baud rate, and init strings,
and redialing when you get disconnected,2 are apparently still
big problems.
This all makes me extremely sad. First of all, pretending your advanced
cell phone network is a modem, and thus bringing up questions like
"should I use touch tone or pulse dialing?" and "do you think 19200 bps is
fast enough?" and "what happens if I get a busy signal?" is a joke.
Secondly, the fact that someone couldn't fudge up a bluetooth-cellphone
interface for Linux that's more reliable than wvdial, even though wvdial
was never designed for this use case at all, just really scares me. I
mean, yes, I realized at the time that nobody had ever designed a tool like
WvDial on any OS... but surely all the individual parts had been done
before? You know, modem detection? Max baud rate detection? Init string
detection? And now, more than 10 years later, surely someone has put the
still-necessary parts together into a more sensible package? You know,
maybe one with a GUI?
Nope.
I can't quite figure out what people like about wvdial so much; why it's the
fallback that people still recommend to all their friends when
Ubuntu/Gnome's default (GUI, at least, thank God) dialer can't take the
pressure. I suspect it's just the fact that wvdialconf tries all your
serial ports one by one to guess which one is right, rather than making you
do it for yourself.
Perhaps I'll never know.
Happy birthday,
WvDial.
(See also: other things that are
still not dead.)
Footnotes
1 I haven't been involved in wvdial maintenance for quite a long
time. Thanks to Patrick Patterson, Simon Law, William Lachance, and
possibly others (Jim Morrison?) for keeping up with the maintenance over the
years.
2 Okay, I admit it. WvDial's redialing support is pretty
frickin' awesome. If you think about it, it's actually impossible to
implement a redial backoff timer correctly using chat scripts. Do I don't
think anybody else has even tried.
December 24, 2009 01:34