Log in

No account? Create an account
Because APIs are apparently crazy hard - 'Twas brillig, and the slithy toves did gyre and gimble in the wabe [entries|archive|friends|userinfo]

[ website | Beware the Jabberwock... ]
[ deviantArt | the-boggyb ]
[ FanFiction | Torkell ]
[ Tumblr | torkellr ]

[Random links| BBC news | Vulture Central | Slashdot | Dangerous Prototypes | LWN | Raspberry Pi]
[Fellow blogs| a Half Empty Glass | the Broken Cube | The Music Jungle | Please remove your feet | A letter from home]
[Other haunts| Un4seen Developments | Jazz 2 Online | EmuTalk.net | Feng's shui]

Because APIs are apparently crazy hard [Monday 15th November 2010 at 8:16 pm]

[Tags|, ]
[Feeling |annoyedannoyed]

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.
Link | Previous Entry | Share | Next Entry[ 2 pennies | Penny for your thoughts? ]

[User Picture]From: olego
Tuesday 16th November 2010 at 1:41 am (UTC)
Well, since I work at Microsoft, I'm going to go ahead and say that COM architecture is very backward-compatible... :-)
(Reply) (Thread)
[User Picture]From: boggyb
Tuesday 16th November 2010 at 11:44 pm (UTC)
I do like the COM architecture, though I've only used it in anger with VB (so all the nasty implementation details are abstracted away). There's several nice things about it, but the main one I've found in comparision to C++ is the separation of interface and implementation. This means that I can do whatever I like to my implementation, and nothing that uses my class needs to know or care about that. This is much nicer than in C++, where adding a private member variable means recompiling everything that uses your class.

Possibly a more C-like example would be the core Windows API. I can take a program compiled 15 years ago (targetting Windows 95) and, assuming it doesn't do anything Win95-specific, run it natively on Windows 7. Now *that's* backwards compatability.
(Reply) (Parent) (Thread)