This article was originally posted on the Idealware Blog in October of 2008.
This is part two of a three part rumination on Microsoft. Today I’m discussing their programming environment, as opposed to the open source alternatives that most nonprofits would be likely to adopt instead. Part one, on Windows, is here:http://www.idealware.org/blog/2008/10/biting-hand-that-bites-me-as-it-feeds.html
In the early days of personal computing, there were a number of platforms – IBM PC, Apple Macintosh, Amiga, Commodore, Leading Edge… but the first two were the primary ones getting any attention from businesses. The PC was geeky, with it’s limited command line interface; the Macintosh was cool with it’s graphics. But two things put the PC on top. One was Dan Bricklin’s VisiCalc, the first spreadsheet. A computer is a novelty if you have no use for it, and VisiCalc, as it’s modern equivalents are today, was extremely useful. But the bigger reason why the PC beat out the Mac so thoroughly was that the Mac had a strict set of rules that had to be followed in order to program for it, whereas anyone could do pretty much anything on a PC. If you knewAssembler, the programming language that spoke to the machine, you could start there and create whatever you wanted, with no one at IBM telling you with languages and libraries to use, or what you were allowed or not allowed to do. As Windows has matured and gained the bulk of the desktop operating system market, Microsoft has started emulating Apple, raising the standards and requirements for Windows programming in ways that make it far less appealing to developers.
Unlike the early days, when no one had much market share, Windows is now the standard business platform, so there are a lot more reasons to play by whatever rules Microsoft might impose. So, today, being a Windows programmer is a lot like being a Mac programmer. If you’re going to have the compatibility and certification that is required, you’re going to follow guidelines, use the shared libraries, and probably program in the same tools as every other Windows programmer. The benefit is standardization and uniformity, things that business computer users really appreciate.
Accordingly, the Microsoft platform, which used to run on pretty much all PCs, now faces competition from Linux and other Unix variants, and for much the same reasons that IBM beat out Apple in those early days. What appeals to Java, PHP, Rails and other open source developers is very much the same thing that brought developers to the PC in the first place, and Microsoft’s arguments for sticking to their platform are much like Apple’s – “it’s safer, it’s well-supported, it’s standardized, so a lot of the work is done for you”. I would argue with each of these claims.
Is it Safer?
The formal programming environment is supposedly more secure, with compiled code and stricter encoding/encryption of data in their web services model. But it seems that the open source model, with, for the major apps, a multitude of eyes on the code, isquicker to fnd and fix security glitches. Microsoft defenders will argue that, because Microsoft lives in a commercial ecosystem, with paid training and support, that support is more widely available and will continue to be avaailable, whereas open source support and training is primarily community-based and uncompensated. But my experience has been that finding forums, how-to’s and code samples for PHP, Python and Rails has always been far easier than finding the equivalent for ASP and C#. In the open surce world, all code is always available; in the MS world, you either buy it or you pay someone to teach you.
Is it Easier?
The bar for programming on Microsoft’s platform is high. To create a basic web application on the Microsoft platform, or to extend an existing application that supports their web programming standards, you, at a minimum, need to know XML; a scripting language such as Visual Basic or C#; and Active Server Pages (ASP). Modern scripting languages like Ruby on Rails and PHP are high level and relatively easy to pick up; RAILS, in particular, supports a rapid application develoment model that can have a functional application built in minutes. These languages support REST, a simple (albeit less secure) way of transmitting data in web applications. Microsoft depends on SOAP, a more formal and complex method. A good piece on REST versus SOAP links here.
Is it Standardized?
Well, this is where I really have the problem. MS controls their programming languages and environments. If you develop MS software, you do it in MS Visual Studio, and you likely code in a C variant or Visual Basic, using MS compilers. Your database is MS SQL Server. Visual Studio and SQL Server are powerful, mature products – I wouldn’t knock them. But Microsoft has been blazing through a succession of programming standards that a cheetah couldn’t keep up with over the years, revamping their languages rapidly, changing the recommended methods of connecting to data; And generally making the job of keeping up with their expectations unattainable. So while their platform uses standardized code and libraries in order for developers to produe applications with standardized interfaces, the development tools themselves are going through constant, dramatic revisions, far more disruptive ones than the more steady, well-roadmapped enhancing of the open source competition.
The drivers for this rapid change are completely mixed up with their marketing goals. For example, MS jumped on the web bandwagon years ago with a product called Frontpage. Frontpage was a somewhat simplistic GUI tool for creating web pages, and it was somewhat infamous for generating web sites that were remarkably uniform in nature. It was eclipsed completely by what is now Adobe’s Dreamweaver. If you try and buy Frontpage today, you’ll have a hard time finding it, but it didn’t go away, it was simply revised and rebranded. Frontpage is now called “Sharepoint Designer“. It’s a product that Microsoft recommends that Sharepoint administrators and developers use to modify the Sharepoint interface. Mind you, most of your basic Sharepoint modifications can be made from within Sharepoint, and anything advanced can and should be done in Visual Studio. There’s no reason to use this product, as most of what it does is easier to do elsewhere.
So it comes down to time, money and risk. The MS route is more complex and more expensive than the open source alternatives. The support and training is certified and industrialized. All of this costs money – the tools, the support, the code samples, and the developers, who generally make $80-150k a year. The platform development is driven by the market, which leads to a question about it’s sustainability in volatile times for the company. As concluded in part one, Microsoft knows that the bulk of their products will be obsolesced by a move to Software as a Service. The move from O S-based application development to web development has been rocky, and it’s not close to finished.
Look for part 3 sometime next week, where I’ll tie this all up.