The Software War: Will Open-Source Win?

This is a guest post from a very talented writer – the author of the insightful book presented here.

bill

I took lots of interesting CS classes in college, but I wanted to learn about real software, like how a word processor stores text. I knew you couldn’t just store text in one big array, because typing text at the beginning of a document would be very slow as it shifted down all of subsequent characters in the memory buffer. I wanted to see production code and learn the craft of programming, and I felt MS would be the best place to do it.

Microsoft’s reputation has taken a massive hit over these last 15 years, but at the time, Microsoft impressed me because of their reputation for smart people and an expansive view of the power of the PC. They had people working on every aspect of software: kernels, languages, word processors, databases, and researchers doing fancy things — and they were just getting going!

In 1993, I got a job as a summer intern in the FoxPro group. It took me a day of hard interviews, where I had to write little routines to do bit manipulation, and so forth, and be generally grilled by experienced programmers, but I passed and got hired as an intern programmer in FoxPro. At the end of the summer, I asked if I could stay on and not go back to school, and they offered me a full-time job, which I accepted.

I worked for my first two years of MS in that team. I got paid, while I was learning more about programming that I could possibly have learned in my last year of school. Getting paid to learn is not a bad thing!

// This is a part of the Microsoft Foundation Classes C++ library.

// Copyright (C) 1992-1998 Microsoft Corporation

// All rights reserved.

//

 

// Inlines for AFXCOLL.H

 

#ifdef _AFXCOLL_INLINE

 

//////////////////////////////////////////////////////////////////////

 

_AFXCOLL_INLINE int CByteArray::GetSize() const

{ return m_nSize; }

_AFXCOLL_INLINE int CByteArray::GetUpperBound() const

{ return m_nSize-1; }

_AFXCOLL_INLINE void CByteArray::RemoveAll()

{ SetSize(0); }

_AFXCOLL_INLINE BYTE CByteArray::GetAt(int nIndex) const

{ ASSERT(nIndex >= 0 && nIndex < m_nSize);

return m_pData[nIndex]; }

I absorbed a lot from my team, and from people working on other teams. I remember spending late nights browsing through the source code to NT, porting our software to the MIPS processor, reading the interesting discussions on the internal perf alias, etc.

After that, I left and worked for five years on text engines, two years in Sweden on mobility and server software, where I also learned about C# and .Net, which was a major epiphany for me, and then returned to Redmond to work on the watch and accompanying data network, Spot.

All were interesting and my experience gave me a flavor of many aspects of software technology, from embedded to internationalization to databases and services.

Leaving the Empire

One day it just hit me — I should quit. There were no big reasons, only a lot of little ones. I had just launched v1 of the client and server side of Spot, and while it contained sophisticated technologies, I didn’t really believe it would take off in the marketplace. I had gained lots of knowledge yet only understood the Microsoft world. I had made some good money, but I had no time to enjoy it. Though my boss was happy with me, I was losing motivation to just keep doing the same thing I had been doing for over a decade. I looked around the company and saw a lot of ancient codebases and unprofitable ventures.
A few weeks after leaving, I decided just to try Linux. I had played with Firefox and OpenOffice for a few hours while at the company, and even wrote an e-mail to our legal team telling them that my friend Alex Mogilevsky’s patented work on background spell-checking had been stolen by OpenOffice. (I no longer believe in software patents, and discuss them in the book.) But I had never used those apps beyond my brief testing, and had never run Linux.

ossel

I have forgotten more about Windows than most people will ever bother to learn, so I was extremely scared about setting Linux up, because I didn’t want this little experiment to screw up my main environment. Every little decision was big for me: do I dual boot or should I be safe and get another machine? Which distro? Will it corrupt my hard drive or should I get another hard drive? I got some tips and assurance from a former co-worker who had installed Fedora, and with that help I proceeded with the installation.

What is this Linux thing, anyway?

While I came to not be all that thrilled with Fedora Core 3 itself, I was floored merely by the installation process.

fedora

It contained a graphical installer that ran all the way to completion, it resized my NTFS partition, setup dual boot, and actually did boot, and let me surf the Web. I didn’t have a clue what to do next, but the mere fact that this all worked told me more about the potential of Linux than anything I had read so far.

Before I had started this, I told myself that I would force myself to boot into Linux to try it out even though it meant losing my place, waiting for the reboot, and not being nearly as comfortable. But several months later — and by this time I had started using Ubuntu Breezy Badger — I was using Linux full-time.

I ran into various stumbling blocks along the way: I had to learn about the xorg.conf file, dig into superuser and Linux file permissions, learn about SSH, and compile Intel wireless drivers. But each stumbling block gave me a worthy challenge, and also newfound knowledge, and the fact that I was able to succeed every time — with the help of Google and the community — gave me courage to continue.

jibber

And what impressed me was the power of it all. Linux came with tons of applications: OpenOffice, GIMP, Audacity, Nvu, Eclipse, Apache, MySQL, and thousands more for me to discover. I could spend years in the command line and never learn all of the tools and capabilities. Installing Apache took just a few seconds, and gave me access to a vast world of PHP. Installing WordPress took me 15 minutes the first time, but I knew when I became better at things, I could do it in one.

I came to understand that beyond its poorly debugged device drivers, a Windows computer is a sad joke. By mid-2005, I was in love with computers again!

However, I had also started to realize that while Linux had lots of amazing capabilities, it was not on a trajectory to kill Windows very fast. I wrote a post on my blog on October 2005, listing a bunch of bugs I had found and filed, but I also started to notice that the bugs weren’t getting fixed. How the Borg came to be.

As a side note, while Microsoft doesn’t have a great reputation right now, especially because of Vista and malware, there is a lot of clever code and brilliant engineers inside the company. I was fortunate to learn with a bunch of great people, in particular groups that fostered cultures of very high quality software. (In the Office team, we looked down on the MSN team.) Don’t blame me for Vista driver bugs!

When Microsoft got serious about Internet Explorer, Netscape’s small team of kids just out of college didn’t have a chance. MS took some of their top engineers in text engines, networking, forms, internationalization, performance, object models, and other areas, and built a large, world-class team. Microsoft’s institutional knowledge of so many areas of software could be applied to any effort.
People forget all that, but this is why the reviewers consistently would say that Windows was better than OS/2, Microsoft Word was easier to use WordPerfect, IE was faster than Netscape, Excel was richer than Lotus 1-2-3 3, ad infinitum. PC Magazine wrote in 1997: “Microsoft’s Java environment was the fastest and most compatible on our tests.” Microsoft had built a better runtime than Sun, the creator of the language! In that case, it is because they had leveraged the experience of their compiler team to pioneer JIT compilers for Java.

Many think Microsoft won all these battles merely because they somehow magically became a monopoly, but the atriums in the buildings at Microsoft in the early 1990’s had shelves overflowing with awards from PC Magazine and many other independent reviewers. Microsoft succeeded in all these areas because they used their success with DOS to hire an enormous army of smart programmers working in all areas of software, which could be applied to new areas, and passed on to new employees, like me! And every time I switched groups, I’d take the knowledge and best practices I had learned in my previous groups.

I am not an apologist for Microsoft, and I think they are in deep trouble today, but the idea that Microsoft came to utterly dominate the computer industry and lay waste to countless competitors was not merely chance. Microsoft is not famous because they are famous.

The last time Bill got lucky was when he signed the deal with IBM for DOS. Everything else was hard work. What did Dave Cutler, Ander Hejlsberg, and countless other geniuses, recruited from all over the world, whose name you will never know, do all day? And why do companies like Google staff some of their top technical positions with ex-Microsofties like Adam Bosworth and Mark Lucovsky? The key to understanding Microsoft’s success is to understand the vast amount of institutional knowledge of all aspects of computing. And their tremendous focus. Many of the bugs that languish in Ubuntu for release after release would never happen at Microsoft!

Microsoft’s biggest problem today is they are overwhelmed with the complexity of their software and hampered by their ancient code and old tools.

Windows, Office, SQL Server, and many other codebases are 20 years old and written in C and C++. (Likewise, the greatest threat to the free software movement is Microsoft’s efforts in C# and .Net. I talk a lot about tools in my book.) The point of all of this here is to make clear that in order to defeat Microsoft it is important to understand that it will require hard work and attention to detail. To beat Microsoft, Linux has to be significantly better.

Anyway, as I got more comfortable with free software, I saw all of these bugs and became frantic. What was the problem? Where was everybody? Why was Ubuntu shipping with 10,000 (now 40,000) active bugs? Why was Debian’s big team not helping Ubuntu on them, and why were they even split off in the first place? It seemed to Ubuntu, the bug list was a potentially useful management tool, not the single most important thing their entire organization could possibly be focused on.

Linux World Domination not fait acompli yet

I started writing several blog entries describing my thoughts on the state of Linux and what steps it needed to do to take over, like this one (about Linux’s bugs), this one (about challenges for Debian), and this one (about challenges for Ubuntu). I eventually decided to put all of my thoughts together into a book, which I have just finished.

It took me quite a while to get all of this together. I went to many conferences, talked to hundreds of programmers, read lots of source code, magazines and books, visited many websites, did a little hacking, and otherwise gathered a ton of data. (In fact, I’m still working on the Web chapter! If you read it, feel free to send me your thoughts.)

Free software could have become the dominant model years or decades ago. Some wonder whether free software and proprietary software will live in some indefinite détente. I think it is the sort of détente that exists between a farmer and his turkey — until Thanksgiving. Let’s eat! A 21st century renaissance beckons, with free software at the center of it.

fcs

The book isn’t really about Microsoft as much as it is about the Microsoft proprietary development model that has pervaded or even infected computing. Microsoft could even be a part of this future, a topic I take up in the book’s Afterword. Although Microsoft as a free software company would be something we would not recognize today, and one reader suggested this Microsoft as a free software company was more like science fiction than the book’s section on driverless cars.

Past is Prolog

Well, this is all the prologue. The book discusses itself why the Linux development model is superior, why World Domination is not a bad thing, why it is simply a matter of time and effort, why our current tools situation is a crisis, why Java should be killed, how we can have cars the drive us around, why we will build a space elevator and enter a 21st century Renaissance, biotechnology patents, and many other things I discovered as important or interesting along the way. Anyone who reads the book will understand why Microsoft is toast, and I’m looking forward to the reaction when copies eventually seep into Redmond. (I also trash Sun, Apple, Google, Dell, Intel, IBM, Ubuntu, Red Hat, etc.)

You can get the book, or download an excerpt, here: After the Software Wars. We thank Keith Curtis for this post.

About these ads
3 comments
  1. Yes, the Ubuntu communities now grow at unbelievable speed and it's the best choice if you are getting start to Linux

  2. 1fastbullet said:

    The one burning question I have and you didn't answer is, Who is the fine looking woman in the photo?

    • name said:

      Mischa Barton

Follow

Get every new post delivered to your Inbox.