It's the Developers, Stupid!: The Real NT-Linux Battle
Kelly McNeill writes "The media is nutso for bigness. All you hear about in the tech press these days is that Linux is attracting big partners like IBM, finding big users like Deja.com, and making big IPO money like RedHat. That's all good, and I'm sincerely grateful for anything that helps me make a living without using Visual Interdev -- but to me, small and raw is where it's all at." The quote's from the article, which is big and cooked - and full of graphical comparisons between NT and Linux as useful development environments for small Web businesses.
I've said something very similar a couple of times before. As long as I can help it, I am staying away as far from NT as possible. I can do VB, and I can do VC++, but I'd rather not to thankyouverymuch.
Every time I attempt to do any work in Win32, I feel like I have to undergo a lobotomy first. Win32 IDE may look like eye candy up front, but when you strip away all the makeup, underneath you'll find one ugly beast. The Win32 API is a complete and utter joke. In fact, it's so bad that you can't really work with it directly, and you have to use MFC to get a barely workable API to work with.
Ever tried to put together a simple process, under Win32, to listen on a socket for connections, for some simple processing? This is a ten minute job in *NIX. Win32 forces you to use a convoluted event-driven architecture that absolutely makes no sense, and is a royal pain in the ass. This is just an example, but is quite typical of Win32's idiocy.
I don't really know why people thing that graphical IDEs are so sexy. I have absolutely no problems with autoconf, automake, and make. A graphical IDE would probably be nice to have, but absence of it does not really make much of a difference to me.
--
Microsoft delivers an operating system to users (and you pay again for development software).
Linux delivers an operating system and development software to every user.
Which approach is going to encourage more developers in the long run?
As the market stands at the moment, Linux is certainly attractive to would-be developers. And as computer use spreads into countries where it is not yet widespread among the general populace (China springs to mind), Linux is going to have further advantages: It requires less powerful hardware, and it is open to home grown localisation.
I wonder what effect of 1,000,000 Chinese hackers will have on Linux? Of course a lot of work will go into some really good Chinese language support, but I expect to see some stuff come out that we can all use.
Unless Microsoft can buy off China. But I think China is old enough skeptical enough enough to see through that.
Of course, while developers are pretty important, developers without users are of questionable value.
I've just started programming in Perl and I tell you something - it beats the hell out of VB (not a hard thing to do I suppose!)
Microsoft have always tried to bend over backwards for it's development community - no developers - no software !
But as Linux becomes more popular - an increasing number of Windows programmers are turning to Linux.
Why ?
As a developer for Windows, I hate the way that with every new release of one of their developer packages a 'new' API or programming model is introduced.
(Don't forget the increasing system requirements)
In Vb there are at least four different APIs to develop DB applications - can't they get it right first time (not to mention careless bugs in the components??
The MFC that was introduced is quite simply a mess - the learning curve for MFC is ghastly to say the least. When is a *sane* abstraction layer going to be introduced?
(Then again the Windows api has always been a mess anyway!)
Their development products can only be used for the Windows platform.
The development products in the Open Source Community are cross-platform. For example I use the Windows port of Perl at work (won't allow Linx) and then at home I can continue on my linux hardware.
I suppose at the heart of the linux community are the developers who create the software.
This is the achilles heel of Microsoft.
If there is one way to tackle Microsoft - converting the developers is an answer.
I personally have nothing against Microsoft as a business - only their products are just not up to scratch - this is one of the many reasons why I use linux.
Oh well...back to programming in VB...(I wasted a day trying to get my databound flexgrid to refresh it's contents - then discovered in the MSDN dox that this is a bug and a suggested fix was to use the dbgrid or a 'third party control')
Then, of course, there's always PHP. "But by code is all IN ASP!" you cry! So run it through the ASP2PHP translator that's floating around. Problem solved, with any luck.
Apache is reasonably stable, and there's no reason why it shouldn't stay up. However, if you're concerned about that, install some Linux High Availability software and have Apache migrate as and when necessary.
Databases - Postgres is a decent-sized database system, and MySQL is surprisingly rugged. I don't know the commercial price for Informix, but that is an impressive DBMS system (although it's BLOB system is, well, blobby.) It might be worth checking the commercial price for DB/2 for Linux, as well, as that is an awesome system.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
I've worked for a MS Certified Solution Provider. They are licenced to give copies of any MS product to their employees (at least where I worked)
MS is also providing the resources and incentives to be a MS developer. Have you ever seen the MSDN website? It is really, really good - a better resource for developers than anything except dejanews. (Okay, so it has a little to much eye candy, but still)
MS does pretty good promotions to do their developer exams, too - Trips to conferences in the US (from Australia), stuff like that.
They "pay" (in the form of discounted softwear) solution developers to get their developers certified - and developers don't mind the automatic doubling of market worth for a MCSD.
Believe me, I'm 2 years out of Uni, make AUS$90K (which is HUGE money here - a uni graduate makes 27-32K), and are bored senseless by the work. I'd do anything to do interesting work on Linux, but I can't find any work like that here, even if I take a 50% pay cut.
(BTW, for all you Aussies, did you see the SGI ad in Tuesdays Australian for Linux developers in Melbourne? Who's applying? - I'm in Adelaide, and can't move at the moment)
The other point is that MS is putting out some really cool stuff at the moment, eg SOAP, their XML support in IE5, etc, and under Linux you have to produce it yourself, or maybe use Java. (please IBM, Java2? Please!)
As for VB, say what you will (and I won't argue with you - I use Delphi), but it does allow less skilled "programmers" to produce reasonable programs quickly.
Anyway, the point I'm making (sorry for rambling!) is that I'm sure these startups do exist, but don't underestimate MS. Microsoft understands it needs mindshare and it is going after it.
As has been pointed out before, the important thing is programmer mindshare. Many programmers are locked into Windows development because they have spent a good deal of time learning the API's and the development tools for it. Not because they love it. And, so long as there are so many jobs available doing VB or MFC development, there is no incentive to retrain.
One point I haven't seen mentioned here much is this -- VB, MFC and COM make possible the creation and easy re-use of pre-built components. Although it is certainly true that 'real programmers' don't use ActiveX controls, business software development (the lion's share of code being written every day) is made easier and cheaper because of them. Until the Open Source movement can provide similar component based environments (and plenty of third party components to go with it) there will always be at least one good reason to develop that new accounting program in VB.
Enterprise Java Beans do provide much of the same plumbing as COM (arguably, even better), and many Java tools vendors are working to support EJB's as seamlessly as ActiveX controls in VB. But Java is not Open Source. It is controlled by yet another big company...
However Microsoft is dropping the ball in this area themselves. It seems to me there is a real opportunity here for the Open Source Movement. If we are willing to step up to the plate.
Jack
- -
Are you an SF Fan? Are you a Tru-Fan?
ASP seems really neat when you first try it. That is stage 1.
In state 2, you realize that ASP is essentially the same kind of tool as
PHP
ePerl
EmbPerl
NeoWebScript (perl or Tcl)
AOLServer's Tcl integration
Netscape's server-side Javascript
And a whole bunch (100s, I think) or tools of the same ilk.
Later, when you have a large web site, you realize (stage 3) that mixing your HTML and scripting all together is really a pretty bad idea, so you start using the above tools in a rather different way than you used to, and eventually start thinking about tools that are intended from the beginning to keep the HTML templating seperate from the programming.
It's the developers, stupid!: the real NT-Linux battlefield
The media is nutso for bigness. All you hear about in the tech press these days is that Linux is attracting big partners like IBM, finding big users like Deja.com, and making big IPO money like RedHat. That's all good, and I'm sincerely grateful for anything that helps me make a living without using Visual Interdev -- but to me, small and raw is where it's all at. As a recent Salon story hinted, by the time something gets big enough to have major media outlets and MBAs and marketeers crawling over it, much of the juice of the thing is gone. The masses might find Bill Gates worthwhile because he's on the cover of Forbes magazine; but for a minority, the one interesting thing he ever did was write a little BASIC compiler on a crappy paper tape when he was a teenager. It's all been downhill from there.
The tiny raw startup is the real locus of the Microsoft-Linux showdown. Forget the desktop, forget the enterprise, forget the few big content/commerce sites -- it's unclear whether Linux can win in any of those segments, and in any case it doesn't matter. The important thing about Linux (and Open Source and the Web) is that it shifts the balance of power back to the independent developers, the underfunded experimental coolness-of-the-thing-itself startup-type hackers.
OSS (including Linux) has radically reduced the costs of development and vastly increased opportunities for collaboration. The Web has opened up new vistas of demand, and nullified most distribution problems. Funding and business services are far more available now; while the potential for personal peculation (or the opportunity costs of developing within a corporate framework) tend to make startups seem relatively attractive. The most innovative and productive segment of the tech industry has famously been the two geeks in a garage, and now they can compete strictly on the basis of ideas and skills rather than corporate resources. Somewhere in this segment are the Yahoos and Inktomis and Netscapes and ids and ebays and even slashdots -- basically all the things that make people buy computers in the first place -- of the future. It's all about the applications, baby -- because without a continuing stream of gotta-have-it apps (and the sites on which they're implemented, often transparently to the user), computers are just typewriters and the Internet is just a color fax machine.
Microsoft cares about developers, or they say they do -- and they should, because that's how they got to be the giant iguana of the software industry in the first place. DOS/Windows/NT has always been about as sexy as a Depends adult undergarment; but even if an OS ain't cool, it can still win by being super-dependable, ultra easy to use, or overwhelmingly popular with application developers. The last rationale has traditionally been Microsoft's trump card, the reason that developers grumbled and cursed at Visual Basic but kept buying. I'm one of many people who basically keeps a Windows machine around just to read PowerPoint documents (and, I confess, I'm gonna keep using IE until something better comes along) -- which suggests that one or two killer apps make the OS decisions for you.
But in August 1999, the Gartner Group released a study claiming that the number of Windows-first developers is in the middle of a sharp decline from 65% in 1998 to 40% in the year 2000. A quick flip through the job ads in bellwether Silicon Valley shows more *nix than Windows development jobs, especially in the hot new sectors. For the first time in a long time, the road to software nirvana does not go directly through Redmond.
Thus, for the first time in a long time the question of how the startups developing the apps of the future choose their platforms is an interesting one. As I hinted in my previous essay, I will argue that Microsoft may now be putting out halfway-decent small business software, but their marketing strategy utterly fails to reach the more innovative part of the developer community. Linux, in contrast, seems to effortlessly meet the needs and philosophical convictions of the raw tech startup. This seemingly insignificant difference, almost impossible to account for in traditional marketing terms, could have startling consequences down the line.
How startups choose their platforms
Let's say my partner and I are developing something: a product recommendation system that makes sense to humans, unlike the bad jokes heretofore palmed off on the public under the rubric of "collaborative filtering". We've written a bizplan, learned a few stupid PowerPoint tricks, given slide presentations, schmoozed with suits -- and for those of you who've never done it, let me tell you what a thrill it is to sit through dozens of "where the software industry is going" sermons (summary: technical innovation is dead/pointless/the problem and big corporate power is good/inevitable/the solution) by a bunch of people who don't know Hello World from Hello Kitty -- but that's a different essay topic.
But for us, the crucial thing is the implementation. We just think it's lame to go after funding with nothing but a pile of paper, a slideshow, and a song in our hearts. We've also discovered that finance types, many of whom are refried bankers or accountants or real-estate moguls, don't really like to invest in software. Startups that are basically about tweaking a business model tend to get more dates than the ones that depend on complex new systems working as designed, which give VCs bad dreams about all the things that can go wrong. (Caveat: this may not apply to Silicon Valley, where all the VCs are hackers and the streets are paved with gold.) So for a software venture to compete with the mass of SellOnTheWeb.coms hatched up by MBAs who speak the same language as the funders, the idea needs to be fully implemented or as near as dammit. Realizing this, we're going to put up an extensive alpha on the Web, complete down to the last font style and hyperlink. It's gotta rock -- this is our whole business at stake here. So how will we choose a development platform?
Cash-poor
The very first variable is that we're knowledge-rich and cash-poor. Really, really poor. We keep hearing how people in Silicon Valley can get millions of dollars just for the right concept, but that ain't how it works here in the Midwest. In Palo Alto, "startup" connotes the thrill of entrepeneurship, the adventure of high growth, the possibility of massive stock options. Saying you work for a startup can get you some play with that cute girl/guy at the espresso bar. Here in Chicago, "startup" means you and your buddies gotta look under the sofa cushions for enough change to buy a CheapBytes CD-ROM. Plus, your mom calls you up every other day to beg you to get a real job so she can hold her head up at your cousin's upcoming wedding reception -- you're good with technology, have you ever considered becoming a Xerox machine repairperson? So the idea of spending thousands of dollars putting together a little network so you can put out a demo that may never come to anything is a laugher.
Programming tools
We certainly can't claim to be visionaries here: my partner actually wrote our first web application (the recommendation engine currently used on www.mysteryguide.com) in Macintosh Common Lisp. As the probability of Lisp world domination dwindled, we did finally decide to move over to Java. Of course, that's a tiny bit awkward in Microsoft world due to the long-running Scott-hates-Bill soap opera (J me no plus-pluses and I'll violate you no licenses).
We've also started to use Java servlets and Java Server Pages. I had sort of thought Microsoft might buy Live Software, makers of leading commercial servlet engine JRun -- all together now: embrace, extend, exterminate -- but those clever Allaire boys scooped it up instead. We've used both the JavaSoft Win32 JDK with JRun, and the Blackdown Linux JDK with JServ (the Apache Project's first servlet engine). The latter combo has the definite edge because it's free (speech and beer). (And before you flame me for hypocrisy: we are seriously considering GPLing our e-commerce software tool but nothing's final yet.)
There are still people who have a specific reason to develop native, like game makers. But I think we can all feel the momentum toward cross-platform and especially web-based apps, once those bandwidth and privacy issues get worked out. And this is where what went around is coming around for Microsoft. They've done tons of things over the years to make developers -- especially those in small shops -- fear and distrust them. Like a straying spouse who's just been served with the divorce papers, Microsoft wants the love back now -- but is a free subscription to Microsoft Certified Professional Magazine gonna do the job?
Client-server versus server-server
Everyone in our shop develops on a server. Clients are just bimbo-boxes for reading mail and data entry and goof-off web surfing. I can't even look at most of my work without having it processed by a web server, and I'm always needing to connect to local and remote databases (it's possible I could work around this issue if MS Proxy Server didn't choke on telnet, but that's already in the subjunctive tense). Because we run separate NT and Linux networks, we need to move things back and forth between machines (remember, BackOffice Small Business Server doesn't form trust relationships with other servers, and the ftp on my SBS installation doesn't work). We need to run big processes that tie up tons of cycles. Finally, we're a virtual organization with people doing parts of projects in disparate locations. So client-server computing in the SBS sense is already a paws-up model for us.
Here's a chart of the stuff we use on a daily basis in our business. It clearly shows the awkwardness which NT imposes on the tech startup, versus the "instant tech startup in a box, just add connectivity and stir" flexibility of the Open Source model.
Function BackOffice SBS Linux Web service Server (up to 5 domains) Choice of servers (we use Apache) DNS No Primary, secondary, or caching SMTP/POP Server (one domain) or client Server Networked servers No Yes Scripting language ASP (or sold separately) Choice of products (we use PHP) SQL database SQL Server 7.0 (see note) Choice of products (we use MySQL) Servlets Sold separately (we use Jrun)Choice of products (we use Jserv) Java Yes (we use the JDK) Yes (Blackdown JDK) JDBC driver Sold separately Yes (we use MM.MySql)
Note: it's not clear under what circumstances, if any, SBS allows you to deploy SQL Server on the backend of a public website, as opposed to in a development/intranet environment. There's no technical barrier to doing so. The enterprise version of SQL Server requires a $3000 per processor Internet Connector License, but there's no mention of the topic one way or the other in SBS materials. Thanks to Jiva DeVoe for this info.
Software licenses
When people talk about "scaling", the implied modifier is always "up" -- presumably from a big server farm to a humongous one. But let's get real: a relatively small number of businesses require more than 16 processors, more than a thousand simultaneous connections, databases stable over hundreds of GBs, and instantaneous mass-customization for millions of users. Why don't we ever talk about scaling down -- in other words, that part of the spectrum from a big server farm down to one box? The vast majority of businesses, and an awful lot of the most interesting ones, live here.
In the real world, Linux grows seamlessly from the first workstation to the quite large office. You can churn out all the custom boxen you need whenever you need them without worrying about a thing. Microsoft, on the other hand, requires a software startup to endure what we might call "punctuated equilibrium" in order to stay within the bounds of restrictive licenses and technologies. At any given point, a MS solution will require you to pay for something you don't need, or go without something you really do need but not quite enough to justify the cost, or violate the license. Wasn't it de Toqueville who said bad licenses force good customers to cheat?
I certainly don't claim to be an expert on Microsoft licensing; in fact, the whole subject confuses and bewilders me. I tried to learn about it on the MS website, but didn't get too far into the arcana: the licensing glossary was a dead link so I still don't know a PUP from an UPG, and it's not easy to get info on volume discounts and Open License deals. But this is my first crude whack at trying to figure out a typical software upgrade path from the needs of a small development-only environment to those of a 51-person software company running both a production website and a development-oriented intranet:
Redhat Linux Microsoft 1 intranet server, up to 5 clients 79.95 1499 1 developer software package (programming and office) 1079 (Visual Studio)249 (Office2000)
1328 subtotal per (x 51) Each 5 additional clients (up to 50) 299 (x 9)
2691 subtotal Back Office Server upgrade (over 50 clients) 4349 1 single-processor web server with database 158 (MySQL) 639 (NT Server)
1239 (Site Server)
2999 (Internet Connector)
1399 (SQL Server)
2999 (Internet Connector)
9257 subtotal per TOTAL 237.95 85524.00
I realize that this chart is completely artificial. On the one hand, if you had a 51-person development team, the price of Visual Studio would be the least of your concerns. On the other hand, I can't imagine 51 programmers being willing to share one intranet server for everything. Also, while it's true that many smaller organizations aren't going to run their own web servers, application developers find it harder and just as expensive to be hosted elsewhere. My main point, however, is still valid: that the Microsoft licensing maze hinders the tech startup that chooses it.
Business rationales
Here I must venture into a sensitive topic: who makes the IT decisions, and on what grounds? Leaving aside the edgy cracks about nerds and PHBs, I think we all know there is a gap as wide as the Grand Canyon between the thinking of the two sides. The party of the first part makes decisions based on their own training and experience plus discussions with other techies they respect; their motto is either "Once you go *nix, you never go back", or "Mo' bugs, mo' money.". The party of the second part gives priority to non-technical rationales, including customer preference, the difficulty of hiring skilled workers (meaning those you can't treat like fry cooks at McDonald's), and the ability to sue vendors when things go wrong. Both sides have their prejudices: semi-rational hatred of all Microsoft products on the one hand and unquestioning reliance on Microsoft marketing materials on the other.
Until recently, there was an uneasy balance of power between the two which varied by location and industry but basically resulted in the suits getting their way. In business circles, the statement "[Authority figure] says NT is the industry standard; besides, Microsoft's stock is soaring while [competitor]'s stock is sinking" was the unanswerable trump card which ended all discussion. However, this smug acceptance of the Microsoft party line is being challenged more frequently of late, particularly by the Silicon Valley types who make money by spotting the waves of the future.
Here's an object lesson: I know a startup full of genius hackers that decided to develop their application on a 100% Microsoft platform -- NT, Visual Basic, the whole nine yards. They did this despite the fact that all their programmers were true artistes on *nix and Mac who had previously scorned Windows, and furthermore that all of them had been early users of the Web. They were definitely following a strict client-server model as late as the end of 1998, when their CEO told me "the Web isn't a legitimate business tool, therefore our customers won't use it". Within weeks of this conversation, every enterprise software vendor -- including the leader in this startup's market -- announced the death of client-server and a mass rush to get their apps on the Web. So much for MBA herdthink.
I can't believe this attitude wasn't partly engendered or reinforced by the fact that Microsoft has been (for understandable reasons) so dependent on its market share and so reluctant to see the Web as a legitimate tool. Their brand of Follow the Leader works because of the huge anxiety engendered by technical change. Everyone's looking for something solid to hold onto, one thing that will continue to be true no matter what. For some, it's good technology. For others, it's market dominance. But what does that phrase even mean today? Maybe it designates the OS with the most desktops; but maybe it means that the most successful and innovative companies in every category are running some flavor of Unix. Small startups in particular need to think hard about the growing risks of hitching a ride on the Redmond express. If Ballmer and company guess wrong about something, they've still got billions of bucks in the bank. If you go along with their wrong guess, game over.
Consequences
For all these reasons, we decided to do our alpha on Linux instead of NT. Now Linux is part of our global business strategy -- not because of any ideological issues we might have, but because it works. From a Linux/Java base, it's easy to port to other platforms like the other Unices that dominate the server market, if necessary. NT is on the way out and W2K seems to be stuck in the birth canal, but developers can be comforted by the thought that *nix has endured a lot already and will probably be around for a while longer.
Now I don't know whether my particular startup will get off the ground or not -- that was just a convenient illustration. My point is to suggest that every "two geeks in a garage" team now must discuss whether Linux (or some other *nix, and/or other Open Source solutions) are right for them. The arguments in favor are too overwhelming, the cost of choosing wrong too great.
A modest proposal
If Microsoft truly wants to focus on customer service, developers, and the Internet, they've gotta come up with some new marketing ideas which take cognizance of the unusual value of the small developer market. This entails reversing one of the fundamental tenets on which the company was built, which is that mass beats class every time. In years past, it made sense to cater to the lowest common denominator while alienating the few pesky independent-minded developers -- because of the desktop monopoly, which was the city hall no one could fight -- but now developers have to be convinced it's in their interest to work native rather than go web-delivered.
So here's my humble proposal: maybe Microsoft should try to appeal to the raw startup, so more of the cool apps of the future might run on some version of Windows. If I were Steve Ballmer, I would form a small team to bring out another version of Small Business Server deliberately oriented toward the raw Internet startup. It must be built on top of a rock-solid TCP/IP layer, because everything will employ that protocol -- so fix my Proxy Server problems or forget it! Get some development tools in there -- I don't need to share a fax machine, I need to use servlets and make database queries. Move faster to figure out what new stuff independent developers want, and give it to them tout de suite. Carve out a logical upgrade path through the thicket of licenses. Microsoft shouldn't think of this SBS as a moneymaker at all, they should think of it as developer relations -- meaning it should be cheap (free for CS students -- an awful lot of the innovation is coming out of a really small number of these folks), update frequently, and go very lightly on the more annoying usage restrictions. The goal is to match most Linux distros' "instant tech startup in a box, just add connectivity and stir, appeal.
But I guess no one wants marketing advice from me, the most successful software company in the world least of all. Little software startups like us will be attracted to Linux in larger and larger numbers, while the Colossus of Redmond spends its time trying to squeeze the last drops of blood from its desktop dominance.