Open Source Software

By: Shane Dempsey
By now, most Internet users have heard something about ‘open source’ software or the ‘open source’ initiative. For many, the idea that some programmers are willing give away their programs for free to anyone (usually via the Internet) seems a bit strange at first. Non-technical users often wonder about the meaning of these words and how members of the ‘open source community’ can religiously revere them. Many people already use open source software. The Linux operating system (www.linux.org) is perhaps the most famous and vocal open source project. Web users utilise open source software whether they know it or not. They download web pages from web servers and the most popular web server is developed by the Apache open source project (www.apache.org). Similarly, a large proportion of email on the Internet is handled by sendmail (www.sendmail.org), an open source mailing system. Therefore, in many ways, the Internet itself is built on a series of foundation blocks that are open source software projects.
Most software is developed in high level languages (e.g. C++, C, Delphi) and then converted into a binary version for distribution and sale. In order to make changes to the software, programmers need access back to the original source code in the high level language. In traditional software development, the company who developed the software jealously guards this source code. They then release updates fixing bugs (errors) or adding new features, often for an additional upgrade fee. Open source software is very different. Any programmer can download the source code and change it. Companies who work in this area make money by selling a service based around the software, rather than the software itself. However the concept is a bit more complex that just freely available source code. The authoritative definition of open source can be found here, it covers these points:
* Free distribution – The source code or software itself may be included in another project and freely distributed without restriction or royalty payments to the authors.
* Source Code – The complete source code must be openly, freely and publicly available.
* Derived works – The open source license must allow derived works. These may be distributed under the same terms as the original software.
* Integrity of the author’s source code – The author may restrict distribution of modified code to publicly available ‘patches’ or may require a different name or version number for the modified code.
* No discrimination again persons or groups – “The license may not discriminate against any person or group of persons”
* No restriction of field of endeavour – The code may be used by any project regardless of the field of endeavour.
* Distribution of license – The rights with which the software is distributed apply after redistribution to additional parties without requirement for an execution of the license agreement for those parties.
* License must not be specific to a product – The license should not depend on the software being part of another software program. For example, an open source part of a commercial project may be extracted and used under the terms of its original open source license.
* The license must not restrict other software – The license should place no restriction on other software that is distributed with the open source software. For example it should not mandate that this software may only be open source
These rules may seem complicated and quite abstract but it is worth remembering that a software license is legally binding. As such, the license needs to provide extensive coverage of legal issues regarding usage of the licensed software. Not all open source licenses adhere strictly to the definition outlined above. A brief, perhaps flippant, look at some of the commercial, closed-source licenses is instructive. The open source community’s wary attitude towards Microsoft’s End User License Agreements EULA’s seems justified. Software in general is sold with an ‘as is’ warranty, meaning there is none and no obligation to provide support. Anyone who has installed a Microsoft product has effectively agreed to a contract with Microsoft that contains lines like the following:
8. DISCLAIMER OF WARRANTIES. THE SOFTWARE IS DEEMED ACCEPTED BY RECIPIENT. THE SOFTWARE CONTAINS PRE-RELEASE SOFTWARE AND MAY BE CHANGED SUBSTANTIALLY BEFORE COMMERCIAL RELEASE. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, MICROSOFT AND ITS SUPPLIERS PROVIDE THE SOFTWARE AND ANY (IF ANY) SUPPORT SERVICES RELATED TO THE SOFTWARE (“SUPPORT SERVICES”) AS IS AND WITH ALL FAULTS, AND HEREBY DISCLAIM WITH RESPECT TO THE SOFTWARE AND SUPPORT SERVICES ALL WARRANTIES AND CONDITIONS, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY (IF ANY) WARRANTIES, DUTIES OR CONDITIONS OF OR RELATED TO: MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR COMPLETENESS OF RESPONSES, RESULTS, WORKMANLIKE EFFORT AND LACK OF NEGLIGENCE. ALSO, THERE IS NO WARRANTY, DUTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION, AND CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT. THE ENTIRE RISK AS TO THE QUALITY, OR ARISING OUT OF THE USE OR PERFORMANCE OF THE SOFTWARE AND ANY SUPPORT SERVICES, REMAINS WITH RECIPIENT.
Extract from an actual MS EULA
This is clearly far from the ideal from a consumer’s point of view. While software development is complex, the money the software vendor receives provides the user with no guarantees as to the quality of the product. This is one of the reasons that open source software is becoming popular despite common flaws such as:
* Lack of documentation or poor documentation;
* High level of technical proficiency required for successful usage;
* Very little technical support.
For the experienced user these problems are lessened and the cost saved makes the hassle seem worthwhile.
So you may already be using open source software indirectly when you access the Internet, and over time this model may become more important in desktop applications and business applications.