The virtues of distributed development by committed hackers in a spirit of openness are now winning acceptance in the most unlikely places. Today, it's increasingly clear that goals such as technical cleanness and beauty, rather than deadlines and feeping creatures foisted by marketroids, do help produce quality.
Are these merely geek concerns? I can think of two situations where technologies which were dominated by these considerations have gone on to have a major impact in the real world: the pervasive impact of the Internet, and the enormous success of Unix in `enterprise computing'. Indeed, with the gradual extinction of the mainframe, the desktops which run Microsoft Windows, today, are the only important outpost of the computer industry where technical cleanness is not the prime design objective.
Where we stand today, some of the most interesting questions we face are about where Unix, the Internet and free software will go. Will Unix make the leap from 15-25 million computers (today) to a billion desktops? Unix today possesses six important attributes:
Today, the central issue which will determine the `billion desktops' question is the quality of end-user applications. Already, a great deal of `open source' development is taking place on these problems, and in two areas (netscape and GIMP) open source applications have #1 and near-#1 slots. But these are hardly a complete solution to the desktop problem. Hence the key questions become: Will commercial software yield solid user-software (e.g. Netscape)? Can `open source' developers rapidly build adequate applications (e.g. Gimp)? This article is primarily about the second alternative; however this is not to deny that it's terribly important to have Word Perfect, Lotus Notes, Corel Draw, etc. all available for Unix desktops.
Strategies for building applications software
The development model which fits open source the best, of course, is something like GIMP or Emacs, where a technically solid core is extensible by third parties. This is the most parallelisable development style which obtains the maximum human inputs from across the globe with minimal problems of coordination.
If such a design can be applied to build a product, then I believe that `open source' always wins because of the range of extensions, and the code quality therein. The entry barrier of knowledge required to obtain the thrills of producing useful code is very low with the scripting languages used in such situations - as compared with starting from scratch writing in C. Hence it's easier for the project to recruit developers. I suspect this design will work for a spreadsheet and (to some extent) for a presentation program, but not really for a word processor.
The second way in which open source can make inroads is by making an established product category obsolete. If personal finance programs turn into Internet sites then the personal finance category ceases to exist. I have seen applications which are painful attempts at putting databases (on CD or on hard disk) for local querying under Microsoft Windows. This is ultimately obsolete because it's so much more sensible to simply query this same data over the Internet.
Open source developers are in a unique position to apply this principle. Open source developers are innovative, and highly knowledgeable about the Internet. Open source developers have no qualms about cannibalising existing product lines, a hurdle which limits innovation with many shareholder-owned companies. To take a standalone application and convert it into an Internet service scores high marks on the coolness scale; it'd attract development talent.
To the extent that innovative open source developers migrate existing application categories into Internet versions, the problem of replicating existing software is sidestepped. Of course, if Microsoft is able to own basic protocols of the Internet or of Internet commerce, then Internet applications could be even more closed than traditional MS Windows applications. Microsoft has thus far had a near--zero impact upon protocol or technology development in the context of the Internet, so this is not going to be easy for them.
Every software product manager knows the misery of seeing 90% of users use only 20% of the features. I believe this is the direction from which new projects can rapidly come up against well-established incumbents.
I feel there is something misplaced about the debates about whether `open source' applications software match the features of mainstream commercial products. A product which contains 20% of the features of a mainstream word processor is adequate at the low-end market, since the bulk of the low-end market never uses the complex features anyway. New projects should work to carefully isolate the features which the `open source' applications should match.
It can't be very difficult for the wizards to hack up a filter which logs the features used by existing word processor users. Such a program, runing at workplaces all over the world, would yield data about the features that are useful versus the features that aren't. This is reminiscent of the discovery, in the days that preceded RISC, that compilers were only utilising a small core of the instruction set.
I suspect that a program which implements one-fifth the complexity accounts for 90% of the usage. A clean reimplementation of these one--fifth of the features would be lean and bug-free when compared with the bloated implementations that are presently found with commercial user applications.
If this conjecture is on track, it implies that Microsoft's marketing department is confused in what they're trying on applications software complexity. I believe that 90% of humans will enjoy a lean word processor (with one-fifth the features of existing GUI word processors) and the remaining 10% would be better off with TeX.
Free, as in zero dollars
rms has talked at length about the issue of freedom, not price. I agree with him on the way his argument applies to the development process. However, when we discuss large-scale adoption by computer users worldwide, I wonder if we're losing sight of the power of `free', as in zero dollars. If there was one thing I was surprised to not see in the `haloween memo', it was the discomfort that Microsoft must feel when competing against a price tag of 0. It is common to ask whether linux, apache etc. are beating Microsoft technically, and generally the answers are in the affirmative both on product and on development process. The debate is incomplete unless we also factor in the price at which users access the alternative products.
This is where the "20% of the features" product becomes compelling. The competition is not between a 100% product and a 20% product at the same price. The competition is between a 100% product at commercial prices versus a 20% product at zero cost. Users would have to really want the remaining 80% of the features to put up the money for commercial software. My suspicion is that the fraction of users who use those remaining 80% of the features is around 10%.
Megatrend: Computers are getting cheaper, going to more price-conscious users
Over the recent few years, we've seen dramatic reductions in the cost of hardware, to a point where $250 for a credible computer seems to be a few months away. As hardware costs drop, computers reach into low-budget applications that were unforseen earlier. These low-budget applications are also likely to be situations where minimal features are required. Java terminals are well placed to takeover vertical applications in the corporate world, but there is a large pool of individuals, SOHO, etc. who would need full fledged computers.
A few years ago, we had a desktop world where people were paying $2000 for hardware and $1000 for software. The volumes are always at the lowest price point, so I believe that when the entry-level computer hits $250, the sheer numbers will be found at this pricepoint. At this pricepoint, it's hard to see how $1000 for software is sustainable. In this sense, it surprises me that Microsoft has been raising software prices of late; they ought to be dropping prices given the radically altered character of the market.
This will generate an opportunity for open source software which does 20% of the work at a zero price. Suppose the full suite of Microsoft Windows 98 and all MS applications is available for $500. Then we'd face a world where users choose between paying $250 for a computer running Unix and applications, or paying $750 to run Windows 98 and applications.
People who pay $250 for a computer are users who are new to computers, so ease of installation and use is extremely important. But for them, free software (as in price) would be magical. I'm surprised VinodV doesn't see this as the Crisis #1.
The conventional wisdom today says that Unix and friends work well for highly savvy users but aren't much good for normal users. My argument is sharply to the contrary. I believe that at a zero price, open source projects with the sweet spot of the most important 20% of the features, will have a better appeal for the least skilled computer users; people who just want to do simple things like writing a letter, and who'd be pleased to not pay more than $250 for hardware and software. Hence there may be a bright future for Unix and friends in the extremely high volume market of extremely cheap computers.
Megatrend: One billion new computers in the next decade
Let's play this thought through. We have 6 billion people on the planet with a highly unequal wealth distribution; i.e. there are very few rich people and an enormous number of poor people. This skewness of the income distribution is essential for my next argument. When we go from a product at $750 to a product at $250, there are a billion new people who can now afford it for the first time.
I live in India, one of the poorest countries in the world, with a large number of awfully bright, poor people. In India, today, the entry-level programmer (C knowledge but no work experience) earns $100 a month, and it is not routine for him to have a computer at home. Entry-level computers at $250 and below will attract millions of buyers in India, who will find the difference between $250 and $750 to be a massive one.
Over the next decade, we're going to see a 75% rise in incomes in India and China. Hence my bets are that over the next decade, we'll see a billion new computers sold, most of them at the ultra-low-price end, most of them in India and China. Note that I'm talking about full computers, not CPUs embedded in washing machines. For these users, the choices would include Unix + open source applications, or pirated Microsoft software.
It's fashionable for people to say that notions of Unix ruling the OS world are delusional. Industry experts look at around 200 million existing computers, 80% of which run Microsoft OSes. It's useful to focus on the next billion computer sales. In this, I see the pricetag of $0 as being a critical product feature.
In conclusion, I believe that the ultra-high volumes of ultra-cheap computers pose basic problems for the existing business models of both Intel and Microsoft.
In this picture, low-end CPUs become important, and it isn't possible for Intel to support monopoly profits when compared with either clones (like AMD) or new architectures (Strongarm, SPARC). I see the increasing adoption of Linux as opening up high volume use of non-Intel architectures. I suspect there isn't much of a role for Intel CPUs in these billion new computers; instead Intel's talents fit much better at building high-end CPUs which go into enterprise computing.
It is already known that Microsoft faces serious problems in competing in the high end market, where its development talent has proven to be insufficient to overcome the process of Unix development (witness the persistent failures of Windows NT). The arguments above suggest, in addition, that Microsoft will find it difficult to deal with the new pricing dynamics of these billion new desktops. I can think of two ways out: (a) Microsoft could go easy on enforcement against piracy, or (b) they could do a $50 product which combines OS and a full set of applications. Neither of these are too appealing from the viewpoint of shareholders.
We could possibly see a nice blend of commercial Unix in enterprise computing plus free Unix on desktops. However, if `open source' is to do well on these billion new computers, mostly used by unskilled newbies, most with weak hookups to the Net and the existing support mechanisms of the Unix community, ease of installation and ease of learning cannot be overemphasized.
Most of the text above is about the easily-learned low-end applications that are common with non-techie users. But before a user can get to them, he has to be able to easily install the OS! I still find Red Hat 5.1 hard to install (I don't know what to say when supplying network information in order to install from an NFS-exported CD, and there isn't a F1 for help). I find setting up X to be maddeningly hard, given the weird non-brand undocumented monitors that I face here. I think the Unix community has a lot of hard work to do on these problems.