Following Kyle's lead, I thought I would use my new position at Agency.com to take the opportunity to write an occasional series of notes, which I will call "The Psychotic State". I may sometimes address somewhat controversial subjects, and I will use my prerogative to insist that these missives not become fuel for any flamewars. They are mostly meant as things to think about, and we can talk about them when we get together, during bull sessions, or whatever. Bear in mind that I'm often totally full of it too. I was prompted to start with this one by a microflamewar that erupted between Jeff DiBartolomeo and Tim Appnel, discussing the merits or lack thereof of PHP, and its suitability for corporate environments. I think that in some ways, I disagreed with what both were saying - and that prompted me to sit down and write this. I know this is going to ramble a little bit, but bear with me. Here are my thoughts on HOW TO THINK ABOUT FREE SOFTWARE *) Introduction I think that the current code base of free software is an accomplishment unlike any other of this century. Contemplate some analogies: It is 1955, and GM virtually controls the entire automobile market. A Finnish graduate student decides to go into business building cars. He gives them away, and within a few years, he and his compatriots are producing a much improved model which is becoming a fairly common sight on the streets. The cars are free. In the wake of Challenger disaster, dissatisfied with NASA's approach to space exploration, a bicycle club gets together and builds space shuttles. Their model costs less and is arguably more reliable than NASA's design. I can go on like this, but you get the idea. I think that I can make a pretty good case for the claim with which I began the section. I read the recent spate of articles about Linux and Apache, declaring that they are potential threats to Microsoft. Whether or not you believe that particular hype, the fact remains that the code base is on the same order of magnitude as that created by the most powerful organizations on earth. Hell, there's undoubtedly more software that runs on Linux (and maybe even a bigger installed base at this point) than that of OS/2, created by IBM. Yet the people who created it did it without any project plans, any team leaders, any managers who allocate resources and enforce schedules - in short without a single one of the controlling structures that we think of as being absolutely necessary to the production of even the simplest products, much less something as notoriously difficult as software. The only thing I can think of that seems remotely like this is the construction of the medieval cathedrals. And they had the power of the church behind them. Forget this century. There's nothing like it in the last 500 years, as far as I can tell. *) A Minor Detour: Why Capitalism Couldn't Invent The Web Back in the 1980's and early 90's we had IBM and Sears building Prodigy. We had various attempts to merge computers and TV, we had the "information superhighway": 500 channels of cable TV. Yet it was a few geeks in CERN and some undergrads at the University of Illinois who came up with the Web, and handed it to free enterprise - the likes of us - on a silver plate. It was basically all ready to go; everything since 1993 has been a refinement. Then we had MSN. There were many, many folks who thought that MSN would displace the web - partly by virtue of Microsoft's control of the desktop. But it never happened. MSN's proprietary content model didn't even beat AOL, which is in turn more and more web oriented itself. The problem with all those other attempts is that they were trying to make money. When you try to make money it imposes a certain logic on you, forces you to think in certain ways. The power of the web, as you know, is that everyone can participate. There's no startup cost really, and no limits. If you were trying to make money you'd never invent a system like that. You either charge to read the stuff, charge to publish it, or charge for the software to do it. You'd charge for support or access or hardware. Wherever you inserted yourself, you'd kill what you're trying to do. That's what happened to the proprietary services. It's what didn't happen to the physicists at CERN. They just wanted to exchange information with each other, not start a business. Microsoft is actually under a particularly severe constraint from this point of view. They have to consider everything they do not only from the point of view of making money, but of deepinging their monopoly and control of software. That's really why Microsoft could have invented the web, but they didn't. *) Businesses As Ecosystems A fairly popular business book in the last couple of years was "The Death of Competition", by Jim Moore. In it, he emphasizes that you should not think of businesses as simply being in a race with their competitors, struggling to produce the best, cheapest version of some product, whatever it is. In reality, the situation is more subtle. A business is always the center of an "ecosystem." An ecosystem is a set of relationships - between a company and its customers, its competitors, suppliers, the companies that provide related products, the workers, etc. Consider for example GM. GM has relationships either direct or implied, with dealers, repair shops, retailers of the supplies, and so on. The cars themselves are only part of the picture. The strength of the organization is a function of the strength of the whole ecosystem, not just of the price or quality or lack thereof of the cars GM builds. A customer may decide to buy a GM car because he can easily get it serviced - at a repair shop not even owned or supplied by GM - even if the car is expensive and inferior. Nowhere is this more evident than in the software world, where the "quality" of a product frequently has nothing to do with its success or failure in the marketplace. It's often a matter of how many other people are using it, or how many other products it works with. Linux and Apache are an odd sort of endpoint of this spectrum: they are ecosystems without any business in the center. Yet despite the lack of a business, they are very strong, robust ecosystems at this point, and mainstream business is starting to see that. Don't get me wrong here. I for one don't really believe the hype (at least not in its strongest form), and I think that Microsoft has one of the strongest ecosystems going. But if I were Bill Gates, Linux is the only competitor I'd even be thinking about. *) The Ultimate Open Standard So what does all this mean for Agency.com? It means that we should keep an open mind about free software. We may be in a position to recommend solutions to our clients that depend in part on it, and we should not be afraid to at least bring it up. In fact, building a system on top of a badly supported _proprietary_ system is far more dangerous than building it on top of free software. My view is that most software problems are not too deep. Once you see them, it usually isn't impossible to find bugs and kill them. Of course, you have be able to reproduce the bugs, and then have access to the program's source. Usually, this means getting attention from the software's vendor, who may not be too willing to give it. One of our clients built a rather large system in Cold Fusion 3.1.1. As their traffic grew, they started to see more and more problems. Despite the fact that they had paid for Cold Fusion, this client could not get anyone at Allaire to talk to them. The danger is that they may have to spend hundreds of thousands of dollars rebuilding their system - all because no one from Allaire cares too much about a single $1000 sale. Conversely, when we did a system in PHP (a similar scripting language that runs under Apache), we also found some serious problems with it. The Oracle support was cruddy, and there was a subtle problem that arose when environment variables were set. Took about a week, all told, of my time to fix the two problems. Naturally, that would have been a lot of money to a client, and I'm sure they'd rather not spend it. But it's less than rebuilding the whole system. You see - the cost of using software (usually) has only a little bit to do with the cost of the software. It has to do with the strength of its ecosystem. Sometimes, the open software model develops some of the strongest ecosystems around (as it has done with Apache) and sometimes it completely flops (as it sometimes does in the commercial model). Allaire is playing with fire by not allowing their product to be properly supported, and they may wind up severely damaging their company. Does that mean that we should _mostly_ be using free software? Clearly no. Most of are projects have and always will be with commercial software. But not always. Don't be afraid to suggest free solutions to the clients. *) You Heard It Here First There's a lot more I could say about this subject, but it's more suitable for a bull session in a bar than writing up. But I will note this: it seems to me that right now, today, the strongest ecosystem by far has developed around Microsoft's products. Mac OS's is nowhere near as strong as it once was, but it's the strength of its ecosystem is what kept Mac sales where they are, despite the best efforts of Apple, Inc to commit suicide. As for the Unix world, Linux has far and away the strongest ecosystem, hands down. This does not mean that it is the best product, or that it's a threat to anything. It has a stronger ecosystem than Solaris, and way, way stronger than AIX or HPUX or SCO or TI or whatever else you can think of. Hell, some lune has probably even ported Linux to most of those hardware platforms anyway (and it runs on Palm Pilots too). I think that what these other vendors _should_ do is dump their proprietary OSs and standardize on Linux. As I see it, they either do that or standardize on Windows NT. Microsoft is very good at software, and to top it off they are not distracted by trying to sell hardware, as Sun et al are. Whatever you may think of Windows NT, it will surely be getting better over the next few years. Unix is seriously hurt by not being unified - all these slightly different versions only help the competition. And since these Unix vendors will never standardize on their competitor's OS anyway, the obvious choice is Linux. I said that's what these vendors should do. Whether it's what they _will_ do is another story. There are egos involved. But now that IBM has led the way by putting the seal of approval on Apache, they really just might. (I promise that the next letter will be less philosopical and more useful to actually writing code. It will probably not be controversial however!)