While relaxing this past Thanksgiving with my family, I asked my Ph.D brother how he liked Linux Medical News newsletter he replied that he liked the letter, particularly when my Chihuahua Cindy speaks, but the articles ‘are like a new language. I still don’t quite get what open source means.’ He’s not alone. It is time to review the basics.
Software is the stuff that drives computers, much like music on a Compact Disk drives a stereo, or a TV set requires a broadcast in order to be meaningful. Software is composed of odd little sonnets to a computer that are frequently laboriously constructed by a programmer. Here’s a short example of the software that drives part of LinuxMedicalNews. You don’t have to understand any of it, just know that it exists:
<dtml-in “objectItems([‘Poll Question’])”>
<dtml-in “objectItems([‘Poll Response’])”>
<input type=radio name=”responses:list” value=”<dtml-var questionId><dtml-var id>″>
The above is referred to as ‘source code’. Applying a computer to the source code makes the computer perform useful work. In the above case it is a small part of what makes the little poll box on the front page of LinuxMedNews work. In the terms of computer programming, it is the ‘source’ for achieving that work. As you can see from the source code example above, the intricacies of the source code can be quite complex and hence, time consuming to make. But once created, it can easily be transmitted by floppy disk, CD-ROM or the Internet and be reused by others. It can also be extended, changed or fixed if it has an error. It becomes a concentrated piece of knowledge, and one less thing for a programmer or software engineer to spend time on. Good source code can greatly accelerate what an engineer can create in a reasonable period of time.
LinuxMedNews frequently mentions the term ‘open source’. We can define open source now: it is source code that is distributed and available for a programmer or software engineer to reuse, extend or fix if it has errors. Precisely what I have done above. I’ve given you, the reader, my source code so that if you wanted to build a site like LinuxMedNews that displayed polls you could use the above programming to do it. This would save you an hour and possibly much more of work reproducing what has already been done.
Let’s pause for a moment to consider another term you may hear frequently: ‘Free’ software. I put it in quotes because it means freedom from closed-source restrictions, not free in the monetary sense. A common example is that free software is ‘free as in speech, not as in beer.’ Read more about what ‘Free’ software is here. The term ‘Free’ pre-dates ‘open source’ software and the two are quite similar except for some licensing differences which you can read about here. Let’s return to our source code discussion.
What happened with the above source code example is a demonstration of open source in action. I needed to run polls on LinuxMedNews. Howard Shaw, a colleague of mine who runs Houston Linux Users Group thought he could also use polls for his HLUG site. He wrote the source code above to fix an appearance problem in a previously written poll program and since I had a similar need, Howard sent it to me by e-mail to use on my site. He saved me a lot of work. In the future, I’ll return the favor.
‘I’ll return the favor’ is not just a haphazard statement in free software. It is the essence of free software. If you make changes to source code you’ve received, and distribute or publish those changes, you have to give anyone who uses it the same rights you have. Note that private changes for your own use remain private (see discussion below). In fact, the various free licenses require that you do so, or you don’t use the software.
The converse of this is ‘closed source’. Howard could have made things hard for me by denying me access to his source code. He could instead have said I’ll create your polls for you on my site and you can just link to the poll on my site. This would have made things quite inconvenient for me, as well as making me dependent on Howard for polls.
Closed source software is what most commercial software companies do. They usually do not give the customer source code, which is the means to produce the commercial programs. They only give the binary translations of these programs which a computer is happy with, but which is more or less useless for a person to read.
Without the source code, the customer isn’t free to fix, extend or change the software, they must rely on the company to do it for them. Whether customer changes are a priority for the company is subject to the goals and available resources of the company. There is no guarantee that the company will ‘do the right thing’ from the customers viewpoint. They do after all, have to stay in business. However, removing the restrictions on a customer fixing or extending the software, with the requirement that the fixes or extensions go back to the company, frees the customer from having to wait or otherwise be inconvenienced by closed source. The company benefits by reduced maintenance costs and free extensions for its products. More ways a company benefits can be found here.
These issues are particularly important for medical software. The same can be said for industries that need high availability and adaptability. The amount of engineering resources required to create and maintain medical software is large and expensive. Medical software has to be able to react to the ever changing winds of medical knowledge and delivery while still being reliable and cost effective. It needs to be interoperable and extendible so that novel applications such as patient simulators can be built from a stable base. These are goals that no single medical software company has been able to deliver. The resources are simply not available at a reasonable cost. Only free and open software holds the possibility of achieving these goals. That is why free and open source software is so compelling in medicine.