Free Software as Lego

The aim of this article is to provide a new angle at which to look at the free software / open source phenomenon. This subject is strange and even alarming to many, so alternative ways of viewing the phenomenon are required.

The basis of this article is that we can view many aspects of free software in the same way as Lego. Most westerners have played with Lego as children, or have children who have played with it, so the principles should be obvious to many. This view precludes the free-of-charge aspect of free software, but that is the easiest to grasp, and most importantly, is a view which often gets in the way of the other properties of free / open source software. There is also nothing in the GPL which explicitly states that Free Software must be free-of-charge; indeed, Version 2 says: " When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish)." In fact, Richard Stallman points out that:

Actually, this is not an aspect of free software at all. "Free" refers to freedom, not price--free software does NOT mean "free-of-charge". So this is not an omission; it is correct. Please don't say it is an omission.

The important aspect of Lego, is that from a simple set of bricks, almost infinite creations are possible. A box of Lego today normally comes intended to create a particular object, and comes complete with instructions on how to create that particular design. But that is not normally the only thing those bricks are used for. Children are inspired by the original designs, and often make their own changes to the design, for their own pleasure.

Intro: What is Lego? What is Software? What is Freedom? What is Free?

I will assume that the reader is familiar with at least the concept of Lego - for further information, see Lego's website. Lego is a child's toy comprising of small plastic, interconnectable bricks. Bricks are typically purchased in a set which contains all the bricks required to build a particular toy, and instructions showing the steps required to make the toy shown on the box. However, Lego's attraction does not end there, as it would be a poor relation to ready-made toys. The potential exists to easily modify the original design, and it is this flexibility which is Lego's key appeal.

Software, at first impression, has nothing in common with this toy. It does not have such positive, nostalgic, idealistic properties for most people, except maybe that Lego and computer programming are both good educational tools. Real software, however, is seen as the domain of large corporations such as Oracle, Microsoft, and IBM. Few of us would take our child's newest Lego creation into work and try to get it accepted by the board as a new business tool.

I do not propose using childrens' toys in the datacentre. I do, however, attempt to highlight here the positive ways in which Free Software is like Lego, and the differences between the two; showing that Free Software is not just a child's toy, and that it really is being taken seriously in the workplace, and rightly so.

Differences between Software and Lego

There is an apparently fundamental inconsistency in this article: Lego costs money, free software can legally be distributed free of charge, while plastic bricks cannot either in law or in practice. This is not the old "information wants to be free" argument, which is often just an excuse for digital piracy, but just the technical facts which give rise to that phrase: There is very little cost associated with making a copy of digital code - setting up an FTP site or burning CDROMs are probably the most expensive, but not beyond the reach of most; making code available on a public web site (such as SourceForge, Freshmeat, or even Yahoo! or a no-charge ISP) is effectively free of charge; copying from a friend's PC over a LAN is also effectively free of cost, as the hardware has already been purchased. There are many other ways of easily copying software and data.

Many articles about free or Open Source software make a big issue out of the financial cost aspect of obtaining free software. This only applies to the cost of obtaining the software in the first place, which is in itself a negligible benefit, apart from helping to increase the user base (and therefore testers) of the free software. So yes, this is a difference between Lego and free software, but it is hoped that this aspect of free software will not be taken as a major factor.

1. Glued-Together Lego

A ready-made toy, or a Lego creation glued in place and smoothed off, is effectively useless. Many would disagree with this claim. Revisit this once you have finished the article, and see if your perception has changed. Of course, with a toy this does not really matter so much. For mission-critical business use of software, which is what we are really talking about, there are key issues which must be considered.

As the saying goes, you don't miss what you've never had. And this is what keeps closed-source software companies in business and, to many, credible. Glued-together Lego, or closed-source software, will hopefully perform for you exactly as required, have all the features you need, be as secure as you require, and fulfill any other requirements you may have. If you are fortunate enough for this to be the case when you first purchase the software, your requirements are guaranteed to change, and it is change management which makes or breaks business strategies.

Of course, closed-source software houses often release new versions, and many release bug-fixes free of charge - whilst they choose to continue to support the product (unless, of course, they are bought out, or go out of business in the meantime). The consumer, however, has little or no say in what changes are made, when, or how they are implemented. Indeed, the software houses normally keep the "how" to themselves, as they see this as their intellectual property.

This is why these software products are effectively useless. They may perform a task very well, but with time, you will be forced to either make your requirements fit what the software house is prepared to supply, or to regularly change the company you depend upon, when your requirements change. You must then hope that your requirements are met by a similar product from another software house. Jumping from one product to another, as any IT manager - and software house - well knows, is an extremely costly task, and worse still, has a high risk factor. This flies in the face of good change management strategies.

2. Free Lego

A Lego creation, however, if distributed as Lego in a form ready-built to perform the task required, is completely the opposite of closed-software products.

The same problems which exist with closed-source software also can initially appear with free software. That is, it may not exactly suit your needs, or future releases may go in a different direction from that which you plan for your business. Also by changing from a closed-source product to free software, you will of course have change-management issues, as well as the cost of evaluating the various alternatives available. This is the same situation as with closed-source, but a one-off change, not a perpetuity of change for change's sake.

Now that we have seen free software to be on a near parity with closed-source software, we can start to discuss how free software extends its powers - to your benefit. The real power of free software only starts here - on near parity with closed-source. However because of its nature, it can be extensively changed and re-used by anyone, for any purpose. That includes you, and your business strategy.

First, though, we must address a weakness. With free software, support is likely to be available, although somewhat less likely or harder to find than with closed-source software. This, as we shall see, is not so large an issue as it is with closed-source software.

As has been discussed, one of the main issues with closed-source software is that the user is totally at the mercy of the company who own the product. That is, the software house, or whatever company may subsequently buy them, as buyouts and mergers are commonplace for all but the largest computer companies.

If you do not like your lego's design, you can change it to fit your needs. This is the freedom which gives free software its name. Of course, you may not be a programmer. That doesn't mean that this isn't an option, even a benefit. For simple changes, it is obvious that you needn't be an architect to use Lego. Or you can hire programmers to make the changes required - this is a lot cheaper than hiring them to write it from scratch - or you can use the modifications made already by somebody else. And let's be clear on this - if anybody has made a change to the code, they cannot distribute that unless they make the source code available with it.

For a first example, we shall take Sendmail (http://www.sendmail.org/). You are very likely to need a piece of software to send and distribute email, deal with aliases, reject unwanted Spam/UCB (Unsolicited Bulk Mail), etc. Looking around, Sendmail and Microsoft Exchange are the two major players (although there are a number of free alternatives to these two). Sendmail claims to handle 80% of all email sent at some point along its journey. With Microsoft Exchange you are vulnerable to any Microsoft bugs, have no access to the code on which it runs, and remain vulnerable until Microsoft find it suitable to acknowledge the bug, and then eventually fix it. With Sendmail, and appropriate programming skills, you are free to fix any vulnerabilites you may find, and distribute these fixes amongst all your mail servers; you may even provide them to other companies if you so wish. While there may appear to be no immediate benefit to sharing your discovery, you, and your firm's, credibility in the IT community could rise, which may, in turn, lead to increased trade, higher-quality employees, etc.

Sendmail also is typical of free software in its configuration setup. Whilst Microsoft champion the Graphical User Interface (GUI), they do not provide an alternative. Sendmail, however, uses plain text files for its configuration, so that an optimal configuration, once produced, can be replicated amongst different servers. Changes can also be made using commonly-available utilities, such as patch(1).
(GNU's free implementation of patch is, of course, the de-facto standard across both Free and closed-source operating systems).

Although a Microsoft Outlook exploit, the Love Bug virus was a good example of the difference between open and closed source. The fix for the bug in the closed-source mail client was not available for many days, but businesses needed to get around the problem as soon as possible. Via internet discussion groups, modifications to the Sendmail configuraton file (sendmail.cf) were available to block the particular message causing the problem, alleviating the users of the flaws in their badly-coded software. I have not heard of a method for blocking the message using Microsoft Exchange; although I am sure that there are procedures available, these would have to be expressed as lengthy instructions for a human to "click on this option, then type I LOVE YOU into this dialog box, followed by either X or Y, depending on your configuration", etc, etc, etc. If you're running 20 mail servers, can you be sure you've changed each one in exactly the same way?

This is the price paid for allowing an external company to determine your IT policy. Of course, GUI utilities are available for modifying the Sendmail configuration (such as linuxconf under the GNU/Linux operating system). But they are optional extras, not the only path, enforced by unchangeable code. The reason these alternatives exist, is not to fulful some company's private strategy, but because somebody wanted it badly enough to write it. Once it's been written, it costs nothing to give it away.

A second case study would have to be the Apache web server, which, according to the major researcher of the subject, Netcraft (http://www.netcraft.com/), hosts around 60% of all web sites. Ironically, because its open development method of exposing all flaws early to interested parties meant that fixes were readily available as "patches", it acquired its name as "A patchy web server". However this open development cycle has again created the most highly trusted web server on the internet at this time. Because the code is available for inspection by experts, who have scrutinised the code and submitted patches, it is the more to be trusted. This openness also means that modules can easily, confidently and reliably be written to the Apache web server, such as perl_module for the (free) Perl language, php3_module, or my favourite, which best-guesses malformed URLs, speling_module[sic].

A side-effect of the freeness of the software - which exists to protect the user, not the developer - is that modifications have been made, such as the TUX web server, based on the (free) Linux kernel and the Apache web server, making the best of both worlds - an in-kernel web server. This is a technical benefit which basically means the difference between having a computer which also a web server, and a computer which IS a web server. Of course this is a trade-off; a machine running TUX would not be an ideal database server, but serious professionals do not try to use a web server for anything else. For example, my own laptop PC runs the Apache web server, to make it convenient for me to develop interactive web pages, but that is not its primary purpose, so plain GNU/Linux and Apache suits this case better than TUX. The choice exists, though, only because the developers of both systems have freed their code, allowing a third party to combine the two into a single, focused product.

As discussed, this strengthens the code, increases the user base, but does not directly benefit the programmer. This article was not written from the developer's perspective, but suffice it to say, that with such systems as Linux, Sendmail, and Apache effectively running the internet, the developers of these systems are adequately rewarded, in part by financial donations from grateful users of their code. Being the author of a respected piece of free software is also a very strong item on the programmer's CV.

3. Licensing and Warranties

Warranties are considered an essential for business use. It is normally assumed, that with a large corporation behind the product, that you are guaranteed of a certain quality.

Version 2 of the GPL, the most common free software license, includes the following statement:

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

Shocking! This can often put people off using software published under such a license, in favour of closed-source from a large corporate, such as Microsoft. However, few of these people read the actual warranty available to them. The Microsoft EULA for Windows 98 SE, for example, has the following warranty for most countries (this extract taken from the section "WARRANTY AND SPECIAL PROVISIONS FOR ENGLAND, SCOTLAND, WALES AND IRELAND"):

LIMITED WARRANTY. Manufacturer warrants that (a) the SOFTWARE will perform substantially in accordance with the accompanying written materials for a period of ninety (90) days from the date of receipt, and (b) any Microsoft hardware accompanying the SOFTWARE will be free from defects in materials and workmanship under normal use and service for a period of one (1) year from the date of receipt. Any implied warranties on the SOFTWARE and Microsoft hardware are limited to ninety (90) days and one (1) year, respectively. Some states/jurisdictions do not allow limitations on duration of an implied warranty, so the above limitation may not apply to you.

So the closed-source product is warrantied to "substantially" match the manuals for three months, whereas the GPL software puts the onus onto the user to confirm that it is of acceptable quality. This appears to be a vast difference, until you notice that by opening the shrinkwrap of the closed-source software to read the accompanying documentation, or installing the software to test its performance, you have accepted the license agreement. By reading the documentation you will find that no warranties against data loss, etc, are provided therein. So the GPL openly gives no warranty, whereas the closed-source warranty gives 90 days of effectively meaningless warranty.

4. Support Issues

To Be Written

5. References

I submitted an early draft of this article to Richard Stallman of the Free Software Foundation. The email I sent to Richard Stallman may be found here.
Richard Stallman sent two replies, each addressing a different aspect of the question.
His first applies to a question of modifying GPL code, and is available here.
His second reply applies to the article in general, and is available here.
Lego is a trademark of the LEGO Group, www.lego.com

Discuss this article on the Forum

Articles - Lego
Share on Twitter Share on Facebook Share on LinkedIn Share on Identi.ca Share on StumbleUpon