In-Depth
/* Microsoft Should Go To Hell...*/: Developers Rip Microsoft in Source Code
Releasing frustration one line of code at a time.
- By David Ramel
- October 19, 2010
/* Microsoft should go to hell....*/
So reads one of hundreds of anti-Microsoft comments you can find in source code files by looking through Google Labs' Code Search.
Or maybe thousands. And this one's pretty tame, considering some of the foul vitriol lurking in programming code in projects, big and small, hobbyist and commercial, Perl and Python, C++ and C# and in every other language you can think of.
Just what is it about our friends in Redmond that raises such ire among coders? Some of it is just clearly ignorant or mean -- there are more "Microsoft sucks!" and "F _ _ _ Microsoft!" comments out there than I'd care to count. A lot of it stems from Microsoft's perceived eschewing of standards -- of doing things its own way -- that requires special effort from programmers. Much of it stems from frustration with Microsoft-caused bugs.
Maybe some of it is just because Microsoft is No. 1 in the dev tools space (and, well, just about every software space) and is seen as the big, monolithic bully, pushing everybody around and imposing its will and inferior products on the industry through sheer marketing muscle and M$ financial force.
Maybe it's best left for psychologists to figure out. Anyway, the comments do give you an idea of what many developers think of Microsoft -- and it's kind of fun reading some of this stuff. Let's dig in. (Note: All examples are presented unedited except for the removal of profanity.)
Bill Gates
One thing you notice right away is that -- even though he's been out of the picture for a while now -- Bill Gates certainly serves as target No. 1 for the Microsoft bashers in code, both old and new. Rips on Bill range from the mild ("Ask Bill Gates why we need this") to the unprintable. Here are some samples:
- // I HATE MICROSOFT I HATE MICROSOFT I HATE MICROSOFT I HATE MICROSOFT
// These two functions are not necessary under gcc 2.95, but MSVC++ won't compile
// without them. BILL GATES MUST DIE!
(see code)
- damn you bill gates (see code)
- Ask Bill Gates what this is all about. (see code)
Strangely, Steve Ballmer doesn't seem to inspire nearly the ire. Maybe you devs still have a soft spot in your hearts for him since that bizarre, sweat-stained "Developers! developers! developers! ..." chant.
The Standards Breaker
Moving on to more impersonal observations, a lot of programmers blast Microsoft for supposedly not following standards and just doing things its own way. By far, this the biggest source of complaints. Here's an example:
A Python coder lamented: "Attempts to print message to screen. However Microsoft sucks and wont update cmd to support unicode." (see code)
(Really? Is this still the case? Someone let me know in the comments.)
Actually, Unicode seems to be quite a sore point, as evidenced by these quips:
- "**** Microsoft and it's lame-ass unicode crap." (see code)
- "It seems that Microsoft didn't provide Unicode version of gethostbyname() and related functions." (Note: This no longer appears in the Code Search results, but can be found in this compressed tar.gz file (in bs.cpp) that can only be downloaded here.
- "Network APIs think only in UNICODE. Yes, Microsoft screwed up the function prototypes." (Note: This no longer appears in the Code Search results, but can be found in this .zip file (in cnetshar.cpp) that can only be downloaded here.
Some clear-thinking person coding in C on a project apparently called Glide3 said: "A clear thinking person might assume that this should go in grGlideShutdown, however Microsoft claims it should go here in DLL_PROCESS_DETACH..." (see code)
A multimedia C coder let his thoughts about pointers be known: "I consider this technique of passing a pointer via an integer as fundamentally broken but thats the way microsoft has defined the interface." (see code)
A C coder having to write a big switch block complained "Microsoft just had to invent its own charsets! (see code)
Somebody writing a parser in C commented: "Special-case 'foo = NULL' and 'NULL = foo' for compatibility with standards-broken products (like Microsoft's)." (see code)
A C++ programmer apparently writing some antivirus code provided plenty of details about his gripe, along with some instructions for anybody who has to deal with possible errors:
"JMO: It is beginning to seem like Microsoft Visual C++ is the only CRT distribution whose version of vswprintf takes THREE arguments. All others seem to take FOUR arguments. Therefore instead of checking for every possible distro here, I'll assume that unless I am running with Microsoft's CRT, then vswprintf takes four arguments. If you get a compilation error here, then you can just change this code to call the three-argument version." (see code)
Another C++ developer working on some old optimization code said: "First off, VC7 does not allow a lot of the linker command options in pragma's. There is no honest or good reason why Microsoft decided to make this change, it just doesn't." (see code)
It's not clear with this project was about (a game, maybe?), but a C++ programmer asked: "(if someone knows why Microsoft doesn't allow to do it by just setting TVIS_FOCUSED flag, please tell me!)" (see code)
Here's a rare Pascal code comment in an audio I/O project, actually SHOUTING in frustration: "This just trys to find the correct avgbytes and blockalign that one needs to use for the format. I DO NOT UNDERSTAND WHY MICROSOFT did this." (see code)
This C programmer managed to slip in a dig against Apple with his Microsoft complaint: "NOTE: seems like Microsoft and Apple don't bother verifying the clear 'took,' so some devices could lock up if you check... such as the Hagiwara FlashGate DUAL. So we won't bother." (see code)
This C programmer was working on an SMTP e-mail thing and didn't like the Outlook way of doing things: "Some servers will list AUTH twice, once the standard way and once the way Microsoft Outlook requires them to be." (see code)
A C++ programmer doing something with a FLAC codec wrote:
#ifndef M_LN2
/* math.h in VC++ doesn't seem to have this (how Microsoft is that?) */
#define M_LN2 0.69314718055994530942
#endif
(see code)
This is clearly from a Unix person: "Microsoft has their own way of handling shared libraries that requires additional qualifiers on extern variables. Unix systems don't need it." (see code)
A C# programmer dealing with a media browser just threw in the towel, putting this in an otherwise empty catch block: "thats it, I give up, Microsoft went and changed interfaces internally." (see code)
There are too many anti-Microsoft goodies out there to list here, but here are some more choice ones, roughly categorized.
Security (or Lack Thereof)
Are you tired of the constant stream of Microsoft bug fixes and security updates? Many programmers are. Here's proof:
- "Microsoft is notorious for leaving these exploitable and users still have not gotten the patches they need." (see code)
- "Blocks Microsoft ISA Server 2004 in strict mode. Contact Microsoft to obtain a hotfix." (see code)
- // stupid microsoft security haha
String pwdPad=PWDPAD.substring(0, PWDPAD.length()-this.getPassword().length()); (see code)
Bugs, Flaws or Features?
Perhaps not surprisingly, the "bugs" category rivals the "go your own way" category in coder complaints:
- "Use function file_length_fd() instead of file_length() to overcome stupid win32 bug. ******* hell Microsoft sucks so much." (see code — by the way, there are several more Microsoft digs in this, which is actually a changelog)
- "This is a WinUsb design flaw. Microsoft is aware of this and (hopefuly) future versions of WinUsb framework will accept a timeout parameter in WinUsb_Read/Write..." (See Code)
- "microsoft is obviously unable to correctly implement even mime headers ... sigh"
(See Code)
- "HACK: Microsoft has a known bug where SerialPort.GetPortNames() returns faulty portnames, because a Windows register string is not null-terminated." (see code)
- "IShellFolder2 has worked. Hopefully, Microsoft will fix this bug in a future release of ShellControls." (see code)
- "using the srgs library because of a bug that microsoft hasn't fixed yet:" (Note: This code now requires a login with username and password to view)
- The following code is a hack to work around a microsoft bug with lockfile. (see code)
Backhanded Compliments
Sometimes, even when comments aren't exactly negative, they aren't exactly positive, either:
- "Borland's interface for tlib (making a static library) is most stupid ever seen. For example, it does not accept '-' in file names, not is it able to handle forward slashes in pathnames. Even Microsoft can do this." (see code)
- "Microsoft made a great language, but forgot to document it well." (see code)
- "For windows I personally recommend Monotype.com, free from Microsoft (not that I like Microsoft, but Monotype is a decent fixed width font)." (see code)
Here's the Love
Or not:
- "Yes, that means that there's no compatibility between Win32 and Win32CE - neither direction. I love Microsoft." (Note: This is a readme file.)
- "(Don't you love Microsoft's abbreviations?)" (see code)
- "close handle whatever it has been .... hmmmmm. I just love Microsoft!" (see code)
How About Some 'Like'?
There must be something positive out there, right? The slightest sign of affection? Like a little "like," even? Oops:
So what strange, funny or interesting source code comments have you found out there? Comment below or send me an e-mail at [email protected].