The exploding importance of the Internet in the mid-90s brought tremendous change to the technology market. It forced industry leaders and followers to hastily adapt to the new opportunities and challenges.
It was a do-or-die time, and you had to embrace and adapt, or get extinguished.
To everyone but Microsoft, it seemed.
Despite the hurricane-force winds of change around them, the industry leading behemoth looked to be stuck in a recursive loop. While upstarts were racing in every direction, envisioning and implementing new uses for this growingly accessible platform, Microsoft seemed to be busy navel gazing, more worried about how to maintain the status quo.
Despite the relative success of Windows 95 -- the long-overdue migration to mainstream 32-bit computing -- Microsoft's slow-moving heft seemed to make them incredibly vulnerable during this critical transition period, making them appear a lumbering giant that could be toppled by the smallest adversary.
The young upstart Netscape appeared a likely candidate to shoot the mortal stone: Sales of Netscape's server and browser products yielded a revenue growth curve exceeding that of any software company in history. They were actually running a profitable business, which was a remarkable feat for a technology company at a time.
Their Netscape Navigator browser had fortified a seemingly insurmountable position in the marketplace . The company image was hip, and Mozilla adorned swag was flying out of their online store.
In that era of seemingly boundless opportunity, inebriated with the seemingly limitless potential of the company that he co-founded, Marc Andreessen made the infamous comment that the Netscape Navigator browser, coupled with the Java platform, would reduce Windows to an "unimportant collection of slightly buggy device drivers."
By then Gates had penned his famous internal "Internet Memo", demanding that the company focus on the Internet. The cruise ship Microsoft was ever so slowly changing course.
While the overwhelming majority of Microsoft's renewed focus turned out to be largely useless "internet-enabled" bedazzling of existing products -- the oft-lauded "turn on a dime" fiction about Microsoft's Internet revolution is grossly overstated -- where it really counted, the browser, Microsoft executed very well.
Microsoft's browser offering quickly became good enough that that average user couldn't be bothered to download and configure a competitor's products on their new PC (Microsoft didn't have to provide a better product, or even as good for that matter: It just had to be good enough to dissuade an average user from seeking out alternatives. This is a bundling reality used in all industries).
Add to that the fact that Netscape's development cycles got longer and longer, their innovation dried up, and their product got buggier.
Eventually Internet Explorer was the winning product on merit alone.
Soon we had an internet full of "Made for Internet Explorer" buttons. Much of the non-academic web had been Microsoft-ized, and you couldn't play unless you went where Microsoft was going today.
The rest is, of course, history: Internet Explorer rocketed to success, almost entirely at the expense of Netscape.
Knowing how things turned out, with the all-knowing clarity of hindsight, Andreessen's claims of course look like foolish bravado. Even at the time it sounded like nonsense: Java applets had shown little promise, delivering terrible performance, atrocious interfaces, and an awkward, crippled interaction with their host environment. The browser wasn't much better, limited mostly to rendering personal pages full of blink tags and gaudy color schemes.
I recall reading that quote from Andreessen back then (I believe in a Dvorak article in PC Magazine), puhshaw-ing in disbelief. I couldn't believe his audacity, and as a junior Windows-targeting developer at the time, with perhaps a bit of a fear of change (nobody likes when their skills, even at a beginner stage, are being obsoleted), I cheered on a Microsoft response.
"Bill Gates is going to CRUSH this guy!" I thought.
And of course Microsoft easily won that battle.
But are they losing the war?
Windows as an operating system certainly has a lot going for it: It is feature rich, demonstrates a lot of technical excellence, and can credibly measure up against any competitor.
Yet for many users over the past decade, there was no choice: Windows was obligatory. It was exactly this hegemony that Andreessen felt his platform was upsetting.
His prediction was just a decade or so early. And instead of Java being their tag-team partner, it's JavaScript/AJAX, Flash, and the innovation and power of modern console gaming.
I hit a local department store recently to look for some educational games for my pre-school aged daughter. This location never had an extensive PC software selection, but I was still surprised to find the entire section had been removed, save for a couple of relics sitting in a discount bin.
The entire area was taken over by game console and handheld software.
Thinking this was an anomaly; I drove across town and checked their competition, and then their competition's competition, only to find the same at each: No PC software at all was for sale.
No games. No typing tutors. No foreign language training. No photo management software. No pre-school aged games.
Baffled, I hit the local EB Games location. Over the years I'd purchased dozens of PC games there, so I was shocked to find no PC software at all (the exception being a couple of ratty late-90s era boxes in a wire-mesh bin).
Determined, I ventured to the local Future Shop (the Canadian equivalent to Best Buy, and in fact the chain was acquired by Best Buy a few years ago, causing much confusion as it came in concert with the actual Best Buy chain itself) to find a small PC software section. While it was much smaller than it once was -- where once there were rows dedicated to just productivity applications, now a miniscule little section caters to the entire gamut of software -- at least it was something.
However compelling, my personal anecdote doesn't really prove much, but it does correlate with industry metrics that have shown retail PC software sales to end users to be stagnating or in freefall. Businesses keep buying their Office and Windows licenses, of course, and niche groups keep satisfying their business need, but what once was a vibrant retail market for applications and games has virtually disappeared. Some of this has been supplanted by online purchases, including some new electronic delivery method (which is how I got Half-Life 2 -- an impulse purchase is well catered to by a simple online purchase with immediate satisfaction), but much of it has just disappeared.
Consumers just aren't consuming PC software anymore.
The reasons are obvious.
On the gaming front, the PC has seen incredible competition from gaming consoles. Not only have those competitors evolved into technical heavyweights, the simplification of the entire gaming genre has equalized the playing field: Where once a mouse and a keyboard were mandatory to play any decent game, most popular games now feature simple interfaces that are equally accommodated on any platform, and the complex simulator type games, once the consistent chart toppers, are largely unloved.
You don't need a mouse to interact with an onscreen flower menu. You don't need a keyboard to communicate via a headset and in-game Voice-over-IP.
Consoles aren't the only reason for PC gaming's decline -- general internet use has taken a lot of time that people would have spent gaming, some of that time being spent being entertained by the countless Flash-based, cross-platform games available now.
Doomsayers have being declaring the death of PC gaming for years, as generations of consoles have come and then gone and Windows gaming has remained, but never has it seemed as likely to actually happen. In response, Microsoft is attempting some Windows gaming branding; perhaps realizing that it was a linchpin of their occupation of the home; but their intervention is likely too late.
So what does any of this have to do with Windows and Netscape and buggy device drivers?
One of the primary reasons many users felt tied to the Windows platform was gaming: If you wanted to play any of the prominent games at the time, that collection of slightly buggy device drivers was very important, and the game-du-jour was usually very tightly coupled with the platform. Aside from a couple of exceptions, PC gaming overwhelmingly meant Windows gaming.
The Netscape browser certainly wasn't a replacement for this. Neither was the Java platform.
This situation led many prospective Windows migrants to declare that they would make the move to Linux or the Mac or FreeBSD or whatever, if only they could run their current gaming obsession on it. Dual-booting is a half-measure that seldom held, and the direct graphics card access meant that gaming couldn't be accommodated via virtualization, so more often than not they just stuck with Windows.
Across the industry hundreds of thousands of solutions have migrated to the web, and if anything the pace is accelerating. Despite Microsoft submarining the overly-capable Internet Explorer team -- a team that brought us many of the innovations that we now enjoy in competing browsers -- the genie was out of the bottle: Many had experienced the incredible platform freedom, wonderful deployment model, and rich interfaces provided by web applications.
The classic computer purchase justifications (as stated by a million pleading children trying to convince their parents that a new gaming rig will be productive for the household) -- balancing the checkbook, storing recipes, authoring and sending letters (now email), maintaining databases -- can all be very competently accomplished online, from any modern browsers available on dozens of platforms. In many ways the experience is superior online, given the accessibility of the data from anywhere at any time.
Not every task can be performed online or from a web browser, and for those needs a plethora of cross-platform, often open source options have appeared (ex. GIMP, Open Office). Yet it remains that for an average user, the overwhelming percentage of their computer time now will be spent in their add-in enabled web browser, perhaps accessorized by one of countless available, many-network supporting IM clients.
Which is, of course, where we circle back to Andreessen's prediction: The most popular, and arguably capable, cross-platform browser is the Firefox browser. It is the phoenix (and was originally named firebird) that rose out of the ashes of the collapse of Netscape, the source code open sourced and revitalized with a many year reworking. While its market share numbers remain relatively small, its influence has been absolutely extraordinary. Even for sites that see 100% Internet Explorer users, the freedom and diversity offered by Firefox often leads enlightened development teams to ensure that they facilitate it just as well.
The rules of the game have completely changed. While many were prematurely declaring the end of Microsoft's dominance for years (every year for the past 7 years or so has been declared "The Year of Linux" by some open source evangelist or other), it has been years since the field has been so open for actual competition.
It has been a long time since the choice of platform held so few caveats and limitations.
We are entering a glorious time when the operating system really is an unimportant collection of device drivers, no longer driving completely unreleated application choices.
A flurry of nattering erupted over the weekend regarding Paul Graham's declaration that "Microsoft Is Dead".
[Sidenote: Paul claims that he authored the piece to "say it first". While you might be widely linked for your Yahoo glory days, Paul, you're far from the first person to say it]
While Paul was obviously exaggerating to make a point (I presume he knows how to read a financial statement, and is well aware that Microsoft's revenue are still following a ballistic arc, and that >90% of PCs out there still run some variant of Microsoft's operating systems), it shouldn't come as a shock that I'm in agreement with his core point -- that Microsoft's ability to herd the industry has seen an unbelievable decline over the past several years, and that tech leaders aren't all that interested in whatever Microsoft is claiming that they'll think about maybe developing some time in a few years -- and indeed I'd said something very similar just last week, albeit without the confrontational, exaggerated title.
In today's Financial Post I see that Goldman Sachs has just removed Microsoft from their highly-rated "Americas Conviction List", specifically noting that investors are nervous about the future of retail software. Sure, Microsoft is still considered a "Buy", but this is another indication that people are seeing a future where Microsoft isn't all-singing and all-dancing.
While looking for an online link to provide for the news item (I'm still a happy reader of dead-tree newspapers), I came across this article on ZDNet, in which the author says-
"but can you really say a company with $28.8 billion in cash is on the downswing?"
YES! Of course you can!
That $28.8 billion is owned by shareholders, and if they see it squandered in failed attempt after failed attempt at buying diversity, they'll demand it back through another special dividend. Microsoft's bounty of cash, and their massive revenue, has never guaranteed them anything, and their history is rife with initiatives doomed to failures (much like the ridiculous "turn on an internet dime" myth, many have a selective memory when it comes to Microsoft, forgetting how many of their ventures have been dismal failures. Expect the whole ridiculous "Live" branding to be yet another failed direction).
Microsoft certainly isn't dead, however it will likely go through some massive, externally forced changes in coming years as the two foundations of Microsoft profitability -- Windows and Office -- start to crumble.
Being able to quickly and easily build team projects on a newly imaged PC is a development process necessity: A new team member, with not a whit of project knowledge beyond where to find the simple build instructions, should be able to follow a sequence of clearly documented steps -- automated where possible -- painlessly generating a build.
No unnecessary mapped drives and hard-coded UNC locations. No undocumented but necessary third-party tools at hard-coded locations. No byzantine by-hand registrations and muddifications.
This holds true for open source projects as well. While a grizzled kernel hacker obviously doesn't need hand-holding, they didn't start as a grizzled kernel hacker. At some point they were new to the code, and the number of obstacles they faced in those early days were probably significant indicators of the likelihood that they would stick with it, overcoming administrative type nuisances and getting to the point where they were actually working on the code itself.
Some may see the barrier to entry that often exists as a useful filter, only letting only the best of the best through, but that contention seems dubious. More likely an onerous getting-started process simply demotivates a lot of great talents from even bothering. Being an expert C++ developer doesn't mean that one wants to spend a day messing around with cygwin packages and dependencies, setting up countless poorly or incorrectly documented environment variables and configurations.
On this theme, I recently took a
look at the state of the bleeding edge of Firefox -- I think
Firefox 3 is going to be one of the most important
applications in years, and is going to completely redefine
the entire industry -- and was very pleasantly surprized to find
how stunningly
gorgeous the build process now is for a Visual
Studio-using-Windows developer.
-Download and install Mozilla Build.
-Run the appropriate start-msvc batch file (e.g. start-msvc8.bat for Visual Studio 2005 users). I updated mine to set the CL environment variable the compilation flags that I wanted, as opposed to passing them on the --enable-optimize parameter of the .mozconfig file).
-In the appropriate location -- / is fine, given that it's actually in the msys subdirectory and not really at the root, get the client.mk file via the following trivial command.
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
-Navigate into that folder
cd mozilla
-Do a CVS get of the appropriate project (originally I was getting the source outside of the make script using the excellent TortoiseCVS, however it turns out that you can't just wholesale grab the tree, and should stick to the integrated CVS functionality).
make -f client.mk checkout MOZ_CO_PROJECT=browser
-Configure an appropriate /mozilla/.mozconfig file (note that Windows will block setting that filename directly. Do a mv move command in the MINGW32 shell after saving from notepad or wherever. You'll likely just copy the block on the linked page for the appropriate project, however if you're adventurous you might try out the configurator tool).
-Build it!
make -f client.mk build MOZ_CO_PROJECT=browser
This is the slickest, most painless process for such a large scale application that I've ever seen. I can just re-checkout and build daily if I'd like to be on the razor edge, though sometimes that will mean a broken build.
Now I'm running an ultra-optimized, stack-protected custom build of Firefox 3.

I'm actually delving through the code with relative ease, testing my custom changes absolutely painlessly (in my case, curiousity brought me into the javascript engine, found in the js subdirectory. While the code is inherently advanced -- it is a remarkably complex product -- it is reasonably easy to follow around and get a feel for).
Brilliant. Absolutely brilliant. Now I just have to find a way to put some obnoxious exhaust pipes on this bad boy.
A couple of years back I wrote a short piece titled "Edit and Continue - Valuable Tool, or Sloppy Vice?"
I pondered whether some development tools and practices -- such as test-driven development (TDD) and the reduced cost of errors (in both time and personal reputation) -- were actually making us worse developers, paradoxically decreasing productivity and the suitability and correctness of solutions.
That entry was motivated by the outpouring of demands by my peers that a particular tool continue to feature edit-and-continue functionality: what I thought would be an infrequently used frill turned out to be something that many depended upon daily, correcting their flawed code at runtime as a regular part of their process.
Today I came across DevGrind's How not to solve a Sudoku entry -- itself linking to Ravi Mohan's "Leaning from Sodoku Solver" -- where he links to a gent who implemented a thoughtful, sober design carefully, and another who pursued a TDD-approach, building his test harness, and then, it appears, flailing about madly in the hopes that some random keypresses will generate a solution that passes the test.
To demonstrate the value of TDD.
...Today's blast from the past is To GUID or not to GUID in your Database, where I describe the benefits and pratfalls of GUIDs in the database.
Nearing the end of 2006 I put up a bit of a rant--
Two-Factor Authentication, Hashing, and Cell Phone Restrictions /
J2ME -- concerning two-factor authentication, and the
difficulties implementing a simple, no-cost solution on my handy
new Motorola cell phone. I pretty much gave up in frustration, the
many barriers and limitations just making it not worth the
trouble.
I recently started using a Motorola Q, based upon Windows Mobile 5.0 and running on the Bell Canada network, and I have to say that the situation is night and day -- developing and deploying either native or .NET Compact Framework apps on it is ridiculously easy (and incredibly well supported in Visual Studio 2005 with the SDK add-ins), easily using the data network to communicate with sites over the net, and so on.
Absolutely wonderful device for developers and enlightened shops.
Microsoft recently released a new technology/product named Silverlight. Many in the Microsoft-enthusiast community, seemingly only seeing the world that Microsoft delivers to them, cheered in applause at this innovation, declaring that it completely changed the rules of the game: Soon we would see fat apps and web apps dancing in the streets together, no longer segregated.
The world was freed from the awful tyranny of HTML!
Microsoft, the story goes, innovated up some vector graphics and a way to interact with and transform them from script, changing the world from the boring, raster-graphics monotony of yesteryear.
Amazing!
Wait -- wasn't SVG already a pretty mature technology at the turn of the century? Why yes, now that I think of it, I recall deploying solutions that actually used glorious vector graphics, declaratively described and transformed with layers of vector goodness. Of course Microsoft, despite being on the SVG committee, didn't actually support it themselves (by then they realized that the whole web thing was probably unhealthy to their operating system stronghold, so such an incredibly rich addition to the browser was unlikely to occur), and instead one had to use third-party plug-ins like Adobe's SVG Viewer. Then of course the banner was passed to the Macromedia cum Adobe Flash product, where rich, cross-platform, vertically-scaled vector graphics rendering primarily occurs today (though SVG is revived through its inclusion in the standard release of Firefox, and is becoming a standard graphic format for a certain domain of images on Wikipedia).
I imagine the brainstorming session that yielded the name "Silverlight" consisted of some people thinking "We're innovating up a Flash clone, so think of anything that reminds you of Flash". Silver light, aka a light bouncing from a silver-color flash enclosure, is hardly a stretch.
The product itself might be entirely worthwhile, but thus far nothing I've seen makes it any more compelling than Flash. Indeed, the limited targeted platforms of Silverlight -- both from a breadth and depth perspective, the rank immaturity of the product, the grossly conflicted interests of its host, and the massive ubiquity of Flash makes Silverlight a contender that needs to really wow to sell itself.
Nothing I've seen wows me any more than the existing Flash demos wow me (and even those aren't very compelling, and many Flash implementations are abusive overkill). The asinine sales video certainly didn't convince me.
All of that is pretty much irrelevant, though: Microsoft wants to take a run at Adobe, hoping to get some strategic control to lever in the future. That's fine, and if the product really does provide some sort of advantage above and beyond Flash to excuse the massive disadvantages, then it's definitely a product worth considering.
What really gets me irked, though, is the perceptive of some of this industry to only see the merit of certain solutions when they come from their camp. I recall when .NET was in the initial betas and having a breathless, excited peer, fresh from their Visual Basic 6 nightmare, declaring the wonderful advantages that garbage collection, JIT compilation, reflection, and so on brought to development.
"If it's so great now, why haven't you been embracing Java for years?" I asked.
He had no answer. I truly think he was completely unaware that what he was describing was already available. This sort of virgin enthusiasm, with cheerleaders completely blind to other solutions available to them, is far too common.
WPF itself is a decent addition to the .NET Framework (although the name ".NET 3.0" is absurd), and it does add a lot of whiz-bang, but they need to do a better job of selling it than videos like this. For all the talk about improving user interaction during that video, everything they showed managed to slow user interaction, reduce data density in a detrimental way, and overall just add junk that detracted from the experience of the app, but remarkably it's what people always first try to use to sell things like this.
Hugh Macleod recently asked "How Well Does Open Source Currently Meet The Needs of Shareholders and CEO's?" It's an illogical, inconsistent post that should have scrolled out of the memory of mankind, but somehow it has been mentioned far and wide, including a mention on the popular Coding Horror, among other highly ranked blogs, many of which just muddied the waters of this misleading question even worse.
The original
post by Hugh was baffling, first confusing the Microsoft Partner
program with gross Microsoft sales, and then completely
hodge-podging software as a commercial product with
software as a consumable.
There aren't any open source billionaires selling software as a product, Hugh tells us, so therefore open source doesn't service shareholders and CEO's (of non software-as-a-product organizations) as a consumable.
Huh?
Hugh isn't even commenting on the financial viability of building a software as a product company around open source, where such a question merits sober consideration (though there are quite a few very successful open source businesses, whether a company can survive and thrive with their crown jewels open sourced needs to be considered on a case by case basis). Instead he's claiming that every organization needs to ensure that their suppliers are making boatloads of loot (preferrably suppliers with an ownership structure that centralizes it on one or two individuals), which is a rather odd consideration. Or worse, that their suppliers share some nonsensical correlation with someone else that is very successful.
Open source is a very contentious topic, and to many it is threatening to their world. It is often grossly oversold as a silver-bullet, when often it only plays a marginal part (both Firefox and MySQL, as examples, are overwhelmingly developed by a traditional team in a traditional way, and the source just happens to be available. It really isn't the driving force of their march forward).
Yet to correlate software as a consumable so arbitrarily holds no value whatsoever, and isn't a good foundation for any discussion.
And most remarkably it uses Bill Gates as the example of the merit of non-open source software as a consumable -- yet Bill Gates is perversely probably the single biggest reason the open source market is so vibrant and alive. The anti-Microsoft rallying cry was a critical early factor in the growth of the OSS community.