November 15th, 2010

Demons of stupidity

Because APIs are apparently crazy hard

Today's annoyance is discovering that to compile Wireshark for Windows, you must first install Cygwin. This is because the build environment relies on various *nix tools to work, despite the fact that I'm compiling it with a Windows compiler (Visual Studio 6) for a Windows operating system (for the terminally curious, the problem is it needs bash and there's no native Win32 bash so you need Cygwin).

Actually, that was the second annoyance. The *first* annoyance was discovering that the Wireshark folks have never bothered to maintain binary compatibility between releases, which means that whenever a new version of Wireshark comes out (usually once every other week to patch a security hole), there's a high chance that any custom plugins will stop working. Because keeping an API compatible is apparently impossibly hard.

And by "stop working", what they really mean is "crash randomly". Because version checking is apparently impossibly hard.

On its own this wouldn't be so bad, except they've neglected to provide import libraries, or a decent API that you could use without import libraries. This means that to compile a plugin, you must first compile Wireshark, hence the first half of this rant. Because providing import libraries you can link against is apparently impossibly hard.

Contrast this with, say, Windows Media Player, which despite several major version changes and at least one complete rewrite is perfectly capable of using a 6-year-old video codec. More importantly, it is perfectly capable of using a 6-year-old video codec without me needing to recompile anything. Oh, and I can develop a video codec without needing any of the source code to Windows Media Player.