Giving Up on Microsoft

“NewsGator is one.”

That was strategy. Newsgator was designed to be acquired by Microsoft, so they chose to use as much Microsoft stuff as possible. Did not work too well so far though…

I am one of those people who avoid Microsoft software at almost any cost. I work in a industrial research lab writing prototypes and definitely know my way around Visual Studio and .NET, including the Compact Framework. This is sometimes just an impossible thing to fight, such as when developing something to run on Windows Mobile – you just have little choice but buy into the MS tools. We have some Python scripts running on Win32 talking to the database and doing things, but that’s about it. I also work on a system that uses Lisp (SBCL), Java, and Python with more or less equal importance, and has worked out beautifully despite leveraging all sorts of random work people have done.

The MS stack works together great until you hit some obscure bug or have to do something unusual (working in research exacerbates this problem), at which case you are powerless to switch that component out for another. We write prototypes, so waiting for a fix is generally wishful thinking…some are too obscure to get real attention anyway. You could try to rely on third party libraries, but far less glue code seems to get written for the MS platform – MS integrate with integrate what they will, and then you are largely stuck. I can’t buy into VS with the confidence that I could buy into GCC for my compiler should that become necessary. I can’t use “a database,” I must use “SQL Server” because no one seems to maintain a decent .NET binding capable of speaking, say, Postgres’ wire protocol over IP and that compiles nicely under Compact Framework. Naturally you discover some of these things after the fact and the pain is unbearable. Sometimes I am temporarily given reprieve when someone does write good integrations and I stumble upon them, like the excellent SQLite binding for .NET that works on Compact and desktop, and everything is peachy. Definitely the exception.

It’s a small matter of incentives: MS is not inclined to make their software play nice with anyone else because they have a “perfectly good offering!” in that space already (or soon will. Or should. And they don’t want to help the competition, capiche?) Any organization that only wants one project in particular to succeed will instead try to work as well as possible with everyone they can! This is true of proprietary and open source vendors. This is why, I wouldn’t be as leery of using VMWare over Xen Source: they do one thing very well, which is write a hypervisor and virtualization tools, even if proprietary. If I write even a half-assed abstraction then should VMWare fail to meet my needs and Xen source promises it will, then I can switch no problem.

There’s also just the issue of laziness: if 2/3rds of the software stack runs under a GNU system and 1/3rd could be done with either MS or something that operates under a GNU system and the feeling is that they could work just about equally well, then the result is obvious.

Jeff,

Surprisingly, some of Paul Graham’s best YCombs startups are using .NET

Loopt.com
Xobni.com
Scribd.com (mixed, but backend in C#)

“Stack” is an overloaded word. I thought it was silly when Gates started talking about the “Linux/Java” stack.

It’s about control. I don’t want any single company to tell us where we are headed. On windows, you have the choice between outdated windows technologies and .net. But in the open source world, hundreds of new ideas are explored in parallel. Sure, many of them will fail, but some strike gold, like Ruby on Rails. When that happens, you know that these technologies have succeeded on some kind of merit. With MS’s paradigm du jour, all you know is that it suits MS’s business plans.
As a new technology fan, it always disappointed me how the Microsoft crowd (which unfortunately meant most prospective employers around here) jumped when Microsoft told them, eagerly passed on the PR material and preached the party line, no matter how inferior the product… dot-net 1.0? Visual Source Safe? Older versions of Visual Studio?

Hi,

about how one can only love or hate microsoft:

I think this is because the microsoft (business-)camp definetly does not want the open source camp in to play.
They are going out of their way to cripple interaction with other platforms.
Look at the situation in Europe where the EU has been going to court for 2 years now, just to force microsoft to open up, or make avaiable at a reasonable fee, the protocols to comunicate with core microsoft components.
Remember Samba? Rember how, shortly after samba was able to be a full fledged domain controller, microsoft was (force-) switching everybody to Active Directoy?

On the other hand, you should not listen to much to the linux/opensource zealots.
If you listen to the people actually writing the code:
Linus Torvalds, Andrew Morton, Larry Wall, and even Richard Stallmann,
they don’t hate microsoft, it is more like they don’t care what microsoft does, because they choose to ignore them,
mostly because they think that the microsoft way is not the best way to do software development.
All of the above agree that microsoft has developed a sure fire way to make lots of money, and give them credit for this.

Enough rambling allready, sorry about writing such a long text.
I like your blog though, keep up the good work.

Huibert Gill

I’m an OpenSource supporter and this is one the rares MS blogs I’m subscribed to.

I understand why developers like Microsoft. It makes you life easy and you don’t have to think too much to make your technical decisions. I think that works well for certain business models. But not for all of them.

If you have to pay your bills working in the academy world, doing research, or maybe creating cool stuff in a start up, MS would not help you very much. In part because you have the skills ( so making-your-life-easy factor disappears ) and in part because you want to have full control of your work ( licensing and not having source code access is a big PITA ).

MS give tools to play with, but still want you to be hooked forever. That’s why Bill Gates is so rich, he is the big drug lord of software.
For what I’ve heard Miguel Icaza is a nice person. But I cannot help but feel sorry for him, because at the end of the day we don’t need him. What are those big applications that the Mono project have made possible?. I can name hundreds of Java, C, C++, and Python apps that exists in the OS community that were made with communities smaller than this Mono thing. Sorry Miguel but you are the ultimate manipulated nerd, in a long history of manipulated nerds.

Peace,
/omar/

Surprisingly, some of Paul Graham’s best YCombs startups are using .NET [ Loopt.com, Xobni.com, Scribd.com ]

Ed, that does surprise me. I figured Graham would reject any YComb applicant who showed up using a Microsoft technology, just out of spite.

In regards to “You either love Microsoft and use exclusively Microsoft products, or you hate Microsoft”:

I was a Microsoft developer for a number of years, and Microsoft was the only development environment I knew… during that time I loved every development tool they provided, hell I even opened my VB source files in Notepad to do some fine tweaking… I looked forward to each release of IE, and could not wait to upgrade to the latest and greatest version of the operating system (3.1 all the way to XP).

But when I wanted to start dynamic websites, I had a friend who taught me PHP (I could do basic ASP, but having a friend to help won me over)… a few years later I played with Linux, and used it for about a month for development… and it was like a flick of a switch, over night I turned, and realized that the Linux opperating system was built to help developers in any way it could, and it was wonderful!

I now use a Mac, the main reason was because of the UNIX underpinnings (with the terminal), and because it works so well when connecting to my Linux / BSD / Solaris servers… with the added bonus of TextMate.

But something I was asked last weekend, while helping my dad fix his Windows computer (again), was how much time have I spent fixing problems in OSX, Linux, etc… and I realize that for the past 4-5 years, I have just been getting on with programming and enjoying every minute of it.

It does seem weird how I switched… it was a definite “click”… and I admit, I now hate the Microsoft development… when I have to go back to it (to help a few people out), I get irritated and angry… the frustrating bit is that I don’t know why!

absolute rubbish!!
There can be no middle ground. Its not possible to have friendly banter.
If you live in the MS universe and don’t buy into the 'free-software’
principles, then the open source community can only be seen as a dilution
to business and profits. That being the case, why would you want to be
friends?
If you subscribe to the idea that everyone should have access to good
software, information and be free to do whatever you want with it, then MS
is as evil as you can get. Why would you put up with lock-in-schemes,
proprietary formats, broken software your not allowed to fix, or paying
for stuff?
Calls of “they are trying to ruin our utopian vision” could easily be
touted by either side - hence polar opposites, and until everyone sees the
correct way we can expect recent history to continue.

The way I see it, the open source community doesn’t do anything to prevent people from using Microsoft products, and even tries to help people read Microsft file formats. Unlike vice-versa.

Oh, and one final point. This concept that you can’t mix and match Microsoft tools seems to me completely bogus (though I don’t know enough to say it with any authority). I’ve mixed and matched lots of different tools and they work fine together. It just so happens that Microsoft, in some bizaar turn of events, decided that it would be good to make all their products actually work together.

Having had to deal with this stuff, there is little bogus-ness in my experience behind the claim, from a certain point of view. “Can’t” is a strong word, too strong to really refute: I could make nearly anything talk over sockets and my own hand-rolled protocol, and this is fast enough for most things, but it’s such a damn pain.

The question is one of incentives: MS has little incentive to play nice with others…especially when the “others” are their competitors! Thus, they have an incentive to make the integration as slick as possible with their own stuff, complexity or whatnot be damned. This complexity can be a pain in its own right, but not the kernel of what I’m getting at.

For example:
Find me a simple, TCP, no frills, debugging wire protocol for .NET. I doubt you’ll find one. I doubt it because I looked and noticed that they had rescinded the availability of this functionality since the old “un-managed” COM code days. Now everything is DCOM, and the annoyance in writing something that will talk DCOM that’s NOT MS is not something entirely pleasant to me.

I search for “DCOM linux” and get http://www.softworksltd.com/dcomlinuxfaq.html

Last updated in '98, “pretty good” performance. Riiiight, that looks alive. My hopes of writing something that would collect information from would would be available from the debugger without writing my own debugger and wire protocol, period (they were kind enough to provide the base debugger classes, at least!) but, as you can see, my interest is waning and I may as well use JDWP or something. A few promising links are about, but all seem to be relatively small affairs, so I’m not sure that I really want to base my application on this.

Now, if MS provided a DCOM library written in some FFI-able language like C and was well documented and at least made a good faith effort to make the thing work on other platforms? I’d be OK with that, presuming no previous memory of MS pulling stuff whenever it got inconvenient…see ActiveX on Mac.

Let’s take JDWP as one example. Another example might be SWANK, part of SLIME…more or less a whole different part so people could mess with it, and incredibly simple and useful. Yet another would be the interface for memcached, caching for sites like LiveJournal, Slashdot, and Facebook – if you ever have stared at its header file, it’s dead simple: get, set, a handful of querying/node control functions, and heavy documentation. Making the interfaces more complex because there is something in your product suite that would have a killer integration as a result is a design decision, not a business one somuch.

In addition to have a simple header file, it also has a simple wire protocol to talk with it…currently on TCP, and soon with UDP.

Three simple, extremely flexible ways to access such simple functionality! This culture is not something I often see in the MS side, where the fabled “MS Object Persistence System”!!! already has a billion carefully crafted hooks with Visual Studio and ASP.net. Useful perhaps…until anyone else wants to talk with it.

Ya know, there IS that other Microsoft ™ development tool - Visual FoxPro ™. A lot of what you’re seeing in VS2005 was lifted from VFP as well. VFP is a viable alternative to using the Dot Something Architecture and CLR, and can hit back end databases, transform and read XML, and simply just git 'r done ™.

It’s even had extensions for WebApps, with WebConnection, Active FoxPro Pages, Active VFP (free framework!). You can write robust middle tier components that fit into any of the Dot Something Architecture as well.

Alas - most of the Current MS Dev Community still think ‘its just a flat file database’ - but it hasn’t been JUST THAT for a loooong time now - It’s a language, it’s an IDE, it’s a database (though still flat file, it IS relational).

You don’t have to wait for ‘that next version’ to be totally productive in VFP, as well - If you understand OOP, well, it has it built in, in a solid implementation with PIE; you can build classlibraries with it and git 'r done ™.

The VFP Community is alive and kicking - Come on In, The Waters Fine!
Click that website link for all of the info.

There’s nothing in between. No middle ground. Why does
it have to be an all or nothing proposition?

I don’t care whether something is Microsoft or Open source or you-name-it, but Microsoft made it all or nothing, and it’s probably intentional.

I had been programming happily in Microsoft tools for years. Then I started to mix-in some non-microsoft basic components (like GUI frameworks for example) and the struggle begun which lasted for years. Slowly I realized that you just can’t use “some” of Microsoft. One bit at a time you are forced to extend the Microsoft-ness of your environment. In other words it metastasizes.

Now I am using exclusively non-microsoft (both free and commercial) tools and I’m quite happy again.

Best regards,
Igor

I am not a platform zealot and like a mix of all .NET, Java, PHP, python a bit, and as3 as well as C++ for gaming. Its really about choosing the best tool at the time for the task. Taking into account current platforms and all possible solutions not limited to one company or open source divide.

BUT, one thing is that Microsoft is providing quite a market which open source may not. I like a mix of proprietary and opensource dor both commercial and non commercial products. Microsoft and technology companies are one of the last things we produce in the US. Why the hate for the market.

Microsoft has been notorious sometimes but it also was a propelling force (for the non techie user as well) in market and pushign software out there all along and still probably is. .NET and C# are great (copies of Java) and some of the new tech looks promising. They really have been all over for sometime I might say now they are even more oranized with .NET for enterprise. Before they had VB, JScript, VBScript, FoxPro, VisualC++, J++ etc.

When developing for the mobile market sometimes I wish microsoft had a larger market share like 90% like they do for desktop. Simply so that its more of a platform.

What would the phone system and would C++ even exist without ATT, would the software market, operating system and internet be as prevalent without Microsoft? Did asoption happen quicker with the 400lbs gorillas of new technology industries?

The world today is about platforms on standards (internet, email, etc). I am not sure Microsoft will change enough to let it happen. I wish they would work more closely with Mono to get .NET available on all platforms (it may even help server sales in the end not hurt it).

Anyways, rant… Good post.

Actually, there is middle ground, i’m walking proof of that.

I’m a total Apple/unix geek, work exclusively with apple hardware at home, but I do run windows (even at home) and am a professional .NET developer in a completely Windows or rather Microsoft centric company.

All i hate is that most people don’t realize that hating is wasting energy on something non-constructive.

Kris

A small word smithing point, “near-monopoly” is incorrect:

"First and foremost, Microsoft stands convicted as a predatory monopoly in clear violation of the law. They have no realistic hope of appeal, …"
http://www.aaxnet.com/editor/edit019.html

Does anyone else see something wrong, sick, about an industry and area of intellectual efforts that is divided between monopoly and unpaid for labour?

I do not think Adam Smith would approve. Nor Karl Marx. Not Jefferson or Lincoln either, and I know Hume would not.

Besides, the current structure is inefficient.

“Microsoft has already lost. It’s the MS fanboys who haven’t gotten the message yet. They’ll all be working for some young Open Source geek in 5 years.”

This, I think, is just bad thinking, and it’s all over on this comment board.

By my thinking, it’s a whole lot better for me to hire an engineer who

  1. Has good problem-solving skills
  2. Has wide experience to draw from
  3. Can discuss patterns and algorithms logically and sensibly
  4. Knows the bounds of their knowledge, and where to go to expand those bounds when they are hit

than one who has X years of experience in Technology Y that I happen to be using. The technology filters are useful for filtering resumes off Monster.com, but that’s about it.

In other words, I’d rather hire a stellar C# programmer for my Java project than a mediocre Java programmer. Java can be learned. “Stellar” can not.

That having been said, the comments along the lines of “I don’t have time to look at Open Source; I’m making money on Microsoft technologies!”, to me, indicate a poor attitude. If you aren’t spending some amount of time learning new things every day – not just new little tricks to fill out the last crevices of knowledge in your world of knowledge, but new technologies, ideas, and ways to solve problems that expand that world of knowledge – I think you are doing yourself and your career a major disservice. Microsoft has a huge ecosystem, but signing yourself on as a full-time apostle to their creed will keep you from growing as an engineer. The same would be true of signing on to any other singularly-visioned entity, were they to exist.

Not that it matters, but I find myself very productive with XCode and IntelliJ for C++ and Java coding, respectively. That’s my bread and butter. The odd Perl/AWK/shell script just gets thrown together in TextMate. Throw in AppleScript coding in Script Editor, Objective C editing in XCode, and C# editing in VS.NET and that’s pretty much my toolkit IDE-wise. VS 6 was a terrific IDE for C++ work, but the .NET versions since then seem to have gone backwards in sheer C+±coding utility for me (as such, I tend to code primarily on XCode then copy over and compile/test in VS for the Windows port). Still, it’s very nice for C# coding.

STANDARDS versus COMPANY PROFITS

Come one its a not hard to work out…

“Turns out 4 of the top 6 sites on the web actually use IIS Windows (MySpace, MSN, eBay, and Hotmail)”

I Think eBay uses Java.

I thank mico$oft for it Vista and proprietary shenanigans because it has finally got my company to seriously look at the alternatives. - Linux primarily and focus its new efforts in porting it apps to it.
The future is unfortunately with WEB apps, but at least it won’t require microsoft proprietory components.
Microsoft with its ridiculous costs are forcing smaller developers to seek alternatives just to survive and move forward.
After countless years of supporting MS, its finally time to change!
Vista - the “WOE” starts now! - for Microsoft!