Tuesday, May 15, 2007

The Ideals of Open Source

Increasingly, the "Open Source Software" movement is proving to house some of the best software projects. Increasingly, open source software is proving to be superior to proprietary alternatives. This new philosophy regarding software licensing is proving not only to be appeal, but also wildly successful.

As open source software becomes more common, the general public's conception of what it is remains murky. Many people think that "showing the source" is the essence of what open source is. That is not true. Microsoft has been "showing the source" for a long time, if you sign draconian contracts that prevent you from doing anything useful with it, that is. The key concept of open source software is not the availability of the source, per-say, but rather the TERMS on which the source is made available. It is really built on the "hacker ethic" (not "hacker" in the bad sense) mixed with FSF's idea of "copyleft" (a novel idea in which copyright protects the user not just the vendor).

While various projects reach the ideals of the open source model with varying degrees of consistency, the basic practical, logistical, and philosophical ideas involved are these:

- The internals (source code) of programs should be available to everyone. And not only available, but "tinkerable" in the event that a user wants to modify it. The "tinkerable" part of this is critical because seeing source code without being able to use it, while perhaps being slightly educational, is counterproductive.
- Software should be "free" (perhaps as in "free beer", but most certainly as in "free speech").
- Copyrights should not be one-sided. They should protect both the vendor and the user. The vendor to user relationship ought not be us-verses-them. The activities of vendors can be very useful to users. And the activities of users can be very useful to vendors. There ought to be cooperation. Instead of initiating an antagonist relationship of mistrust, there is a middle ground where one can glide successfully. The vendor should be able to find ways to make money without seeking to subvert their users. Success in software should not be defined as crippling and locking in the user, but rather in empowering them.
- Competition, derivation, and distribution ultimately work for the good of the whole. To spend a good part of ones existence trying to stamp out these things is frustrating and will ultimately be futile. Rather, we seek ways to piggy-back others innovations while giving back to the community to further push forward innovation.
- A sort of "tempered anarchy" can be a very successful model in growing complex software products.

The forces that are fighting against the open source movement have their reasons. They are trying to protect their bottom line, their cash cow. However, they must see that their days are numbered. If your only way to make money is by threats, limiting what others can do, etc., you are on the slippery rope to obscurity. The open source movement may seem anarchic and revolutionary. To some degree, it is. Sort of like desegregation, the end of slavery, the Protestant Reformation, or the American Revolution. I guess that puts it in good company of social upheavals.

The basic foundation of open source is something that has been part of our society as long as history has been recorded. It is something we has humans intuitively know, but "unlearn" because we think that is the only way we can make money. However, there is much money to be made in an open source landscape. It is not communism, but rather the "free market" at its best. It is the best way to foster innovation and work towards a non-monopolized win-win situation.

If I would concur with the nay-sayers that the success of open source solutions will shrink the amount of money out there in software development and cause things to go haywire (of which I am totally not convinced), I as a programmer can rejoice. Why? Because I want a *good* profession, not just a successful one. If there is no money in programming for the good of others (with no crippling licenses), then perhaps its better if the art of software development rest in the halls of irrelevance. If software is limited either a commodity bartered in the hands of a few elite companies or not a workable proposition at all, I'd rather it go away, permanently. However, I'm inclined to believe that the open source and/or free software ideals put forward by bright minds such as Bruce Perens, Eric Raymond, Richard Stallman, Linus Torvalds, etc. are actually workable--both in principle and in practice (over the last 10 or 15 years).

Labels: , ,


Blogger BBS said...

I love Open Source projects. I use Joomla for all my website projects. Although I'm not a programmer, I take part in testing programs to help with development and donate when possible to projects that I use. I'm in the process of updating my computer and my next system will probably be dual boot Linux/Windows. I'm certainly not in a hurry to shift to Vista, given the reports I've been reading.

9:10 PM  
Blogger Mark said...


Glad to hear about your involvement in the open source movement. Especially for someone from the Essex County region :)

Non-programmers have many roles to play, especially within testing, documentation, financial, and organizational areas!

I think donations are an important area that many people overlook. We use open source heavily, why not donate if you like what you are getting? By doing that we can create small alternate economies. As that sort of things develops, programmers and others involved will be able to start working on things they enjoy and what the community needs, not what they "settle on" just to win their bread. And as money flows into worthwhile projects, those projects will naturally evolve and move along at a more rapid speed.

I think this exchange between developers, users, and other contributors to projects can help us to explore alternate ways of "getting by" as a person involved in software.

I've never tried joomla, but would like to some day.

3:11 PM  

Post a Comment

<< Home