Saturday, June 26, 2004

PROG: Briefly on Software

monkeyblah.com--Briefly on Software

Friday, June 25 2004 at 21:25 Hackerdom, Philosophy

Today is a computer-filled world, and computers need software. A computer without software is quite like a engine without a car to go with it; yes, you can run the engine on full speed all day, but it's not going to bring you any closer to wherever you want to go. Simply put, without software, a computer is ultimately useless. Today, computer usage having grown mainstream, we have a vast number of people/corporations out there who stake their future on making software; and it appears that (as I suppose it does in other fields as well) these can be divided into two groups with distinct philosophical outlooks on software and its purpose.

I will illustrate these two, as I usually do, by using two groups with diametrical philosophies. The first example of the day I'm sure you've all heard about: The Microsoft Corporation. Microsoft occupy a large portion of today's software and hardware market, and I'm sure that 99% of all home computers are using their software — typically one of the many Windows operating systems they have under their belt, at the very least.

Now as anyone with some computer society awareness might be able to tell you, Microsoft is a much-maligned company. Throughout the years they have been accused, often accurately, of dealing in shady and unfair practices, many of which are difficult to understand for someone who lacks an engineering education. This was temporarily brought to public attention a few years ago with the famous antitrust case which is still being argued — it will be a long while before we see the end of that, I'm sure — but the majority of the issues people have with Microsoft are too arcane for Average Joe to fully grasp.

It might suffice to describe the practices of Microsoft as highly self-preservative, as there is one common theme that runs through most of them: Attempts to make matters very hard for any potential opponents to gain a foothold in their market. An oft employed tactic is using — some would say abusing, and I may be bound to agree — their position as a de facto monopoly to break compatibility with other systems. It may elude the common user that Windows is not by far the only way to work with a computer — after all, it is most these people are ever exposed to — but there exists a wide plethora of operating systems, hardware setups and various software suites out there, many of which were around long before Microsoft.

In order to preserve some sanity among these many different systems, standards were established, a common practice not exclusive to the computer science industry. These standards were mainly intended to allow for interoperability between systems — for instance, it would be disastrous if text files written on a Macintosh computer were unreadable on an x86 PC — and generally, to preserve compatibility between the myriad of ways to manipulate data on a computer. This is generally regarded as a good thing, for obvious reasons. However, for a corporation with little to gain from interoperability (already dominating their market) and everything to lose, standards are a disaster. The reasons for this is related to market share flow.

Suppose for a moment that the computer market consists only of Corporation A and Corporation B, each having a 50% slice of the market cake. Some arbitrary body, independent of these, sets standard C for, say, rich text documents (that is, documents with more than just plain text; different fonts of different sizes and styles, embedded images, et cetera). Now, both A and B, knowing that C is better than they currently offer, both rush to implement C. After a couple of months, both release their own products for dealing with these C files. Now, it just happens that Corporation A's product is slightly more feature rich than Corporation B's product — so naturally, A get more customers, and a larger slice of the marketing cake. B would then, as a response, improve their product again, and a technological arms race ensues, with the average level of software sophistication steadily rising; quite a good thing.

Now suppose that Corporation B, despite their best efforts, lag behind A considerably, and fail to keep up with the pace. Soon, Corporation A will dominate the market — not surprising, given that their product is superior — suppose a 90% slice of the cake. The market flow was in their favor, due to a simply better product. But, at this point, something happens. Corporation A now has market dominance, and their products are most widely used. Suppose now, that Corporation A, fearing that Corporation B is on the verge of a breakthrough that would tip the scales in their favor again, improves on standard C — let's call their improved format C-XP — but do not release information on exactly how they improved it all. Within months, their new C-XP format is widespread. However, as you might have noticed, it is not interoperable; since A did not divulge the specifics of their format, no one else can implement support for it. Corporation B releases their new breakthrough soon afterwards, but much to their chagrin notice that no one switches back to B, despite their product being superior. What has happened?

After A gained its foothold, it started implementing its own ways of doing things, which were by convention non-standard, simply because they did not divulge any details. By making sure this new format was the widespread one — either by bundling it or making it an unchangeable part of their software, or simply by encouraging it, either being an easy task considering their near-monopoly — they ensured that anyone who was considering switching back to B (because of its attractive new features) would be put off by the costs of switching to a system where all their old files could no longer be used (since, of course, C-XP is incompatible with C). This is called an artificial demand — a demand for A's products caused not by A's products being superior, but rather because of A locking customers into their products if they want to retain compatibility with A's earlier products (which were established by 'legitimate' means).

So as we can see, by sticking to proprietary ways of doing things, A has pretty much ensured that they stay in their monopolistic position. One interesting thing that might be worth pointing out that if A truly had a superior product, it would be better if they released their specifications publicly. This way, other vendors are encouraged to implement this more open standard, and the flow FROM these other vendors to A's product would increase (given that their product is better). Indeed, by not following open standards and instead implementing their own, A can relax their own product quality because no one can move anywhere anyway — an effective customer lock has been established. If the company were not in a monopoly position, this would pretty much be impossible; this method rarely attracts new customers, unless they are also dazzled by the quality of A's products.

Time to snap back to reality. Corporation A, as you might have figured, represents the Microsoft Corporation, who are notorious for exactly this kind of business practice; violating existing standards and enforcing their own instead. It's indeed easy to see how this is very favorable to Microsoft themselves; product lock-in ensures plenty of profit, as long as they keep their software at a fairly acceptable level. Whether this results in a situation profitable to the general public, and the state of computer science as a whole, however, is something else.

Historically it's been easy for Microsoft to employ tactics like this, as the alternatives have rarely been viable; Unix-like systems have been unable to match Microsoft outside academic use. Recently however, with Linux becoming more and more friendly to the average user and more and more powerful, this has become increasingly difficult. Combined with an outcry from the engineering community, it's put Microsoft in a bit of a pinch.

Onto our second example, then: The Open Source community. Unlike Microsoft, the OS crowd (that's Open Source, not Operating System) is unsurprisingly not a corporation, but rather a loosely defined group of people. There are several companies out there that fully support the Open Source concept and employ it regularly as a business practice, making good profit. The very concept of Open Source might also be confusing to the uninitiated, so here's a brief description. Typically, when a company writes a piece of software, they want to keep the source code for it secret, much like an engine designer would want to keep the blueprints to his engine secret and just sell the engines. This is purely financial, of course, and is probably a sane financial move. However, there are people who do not agree that this method — closed source — is the only way to go. Some do not have a profit interest in the product, and others find their profit elsewhere in the producer-consumer chain. Others yet have other motives, but they all have one idea in common: Source code should be open; that is, available to anyone and everyone.

The idea of Open Source has some interesting implications: Anyone can take an existing design and improve on it to create a much better product than before, increasing the technological sophistication in the world, much like he could with the open standards mentioned in our hypothetical financial situation above. Now, you might expect that this would lead to more monopoly-type situations as seen above, and in some unfortunate cases it does. As a whole, however, the Open Source community encourages source to be open and available, and progress is being made in many fields independent of corporations. There's one particular thing in place to explicitly combat situations like this, in fact; The GNU General Public License, or GPL for short. It is a license for source code, drawn up by the Free Software Foundation, that explicitly disallows this sort of behaviour by forcing people deriving new works from GPL source code to license their code under the GPL as well. Put simply, one can say that once you go GPL, you don't go back.

Now as previously mentioned, corporations do make money off Open Source. This might seem baffling from a traditional point of view; surely a company that reveals its innermost secrets to the world cannot be successful? As a matter of fact, they can be. The idea is not to make money off the programs themselves, but on the surrounding business such as hardware setups, upgrades, technical support deals and education/certificates. By releasing the program and its code freely, the company has in fact found an invaluable resource: peer review and improvement. While the company itself may pay people to work on their project, they have also acquired a vast corpus of people who work on the program simply because they want a better program, and by extension this benefits the company who employ the program as part of their business strategy. Some companies even build systems from part proprietary code, but based on a vast, common ground of Open Source programs with much success.

I think that in this last paragraph, we have caught a glimpse of the fundamental philosophical difference I mentioned in the opening abstract. People do work on these projects in their spare time, perhaps for fame and recognition, but more likely because they want to make the program better. If a particular program doesn't offer you everything you need, you can just improve it so that it does do what you need it to do — if you can write good code, that is. Your changes, should you choose to give them back to the community (perhaps as a way of thanking them for providing the program to you to begin with), can then benefit others in the same situation. Through this cycle of improvements, the quality and sophistication of freely available programs is steadily rising at a quick pace, and nothing is kept secret. Standards are followed, and interoperability is everpresent. So what's the difference here?

The main difference is that no one is trying to make any money off of this. At least, not as a primary goal. It seems as if the main goal of all this is to, simply, make better programs. Looking back to corporations such as Microsoft, we see another view; their main objective is not to improve software, but to make money. Indeed, it seems that a large slice of the reason they are in the computer business is that it is highly lucrative. This I believe to be the fundamental difference between large-scale software corporations and the Open Source collectives; one strives primarily towards profit, with software design as a means to achieve profit, while the other strives towards better software, with profit as a means by which to support this evolution (certainly, development is not cheap, and there's nothing inherently wrong with profit). Both of them lead to better software, and both generate profit; that is not to be denied. It is clear to see, though, where the emphasis lies in the different groups.

One might ask oneself why we are here, and what corporations are good for. One view states that the prime objective of corporations is and should be money generation, and indeed this view seems to be the driving force behind many young entrepreneurs. The vision of a future as one of the world's richest men is certainly appealing. Then there's the alternative view that corporations ultimately exist to serve the interests of mankind, to further their respective fields and make a better future for everyone, and that profit is merely a way to sustain this activity.

If it's not already obvious, I might state my personal opinion on this (as if it didn't already saturate this entire article!). The purpose of corporations, and all manner of communities, indeed of our very existence, must inexorably be to further society and make progress. It's a bit sad to see the blatant egoism and chronocentrism of many of today's businesses; that they offer a service merely for the gain of lucre, and improve only reluctantly not to fall behind. Corporations surely have a place in our society — it is irrational to expect to get something for nothing — but I believe that ultimately corporations like Microsoft hinder the progress of the field more than they further it, in the long run.


Post a Comment

<< Home

Get Firefox!