If a person or corporation decides to use open source software for a certain purpose, nowadays the choice in software is large and still growing. In order to choose the right software package for the intended purpose, one will need to have insight and evaluate the software package choices. This chapter provides an insight into open source software and its development to those who wish to evaluate it. Using existing literature on open source software evaluation, a list of nine evaluation criteria is derived including community, security, license, and documentation. In the second section, these criteria and their relevance for open source software evaluation are explained. Finally, the future of open source software evaluation is discussed.
Key Terms in this Chapter
Community: A group of people with shared interests that interact. In case of open source software, the community is the group of developers and users that come together, mostly on a Web site, to discuss, debug, and develop the software.
Software Longevity: The life expectancy of software, measured by various factors among which is its age.
License: An agreement that is attached to the use of a product. In case of software, the software license agreement defines the terms under which you are allowed to use the software. For open source software, there are a number of common licenses, not bound to a specific piece of software, that can be used for almost any type of open source software. These licenses are well known so users and developers usually know the conditions of these licenses.
Documentation: The documents that are associated with a piece of software. There is usually user documentation, in the form of help files, tutorials, and manuals, and there can be developer documentation, such as programming guidelines and documents explaining the structure and workings of the software (source code). In some cases there is administrator documentation, which explains how to install and configure the software. The latter is more important for large pieces of software, where one installation will be used by many users, such as Web applications.
Software Release Activity: The number and significance of releases that are made for a certain software package. A release can be a minor change such as a bug fix, or a major change such as added functionality.
Maturity Model: Not to be confused with the capability maturity model (CMM), a maturity model as discussed in this chapter is a model that can be used to assess the maturity of a software package, evaluating the software using several criteria.
Software Security: How well a piece of software is built in terms of vulnerabilities and defense against them. Any software will have some type of security hole in it that allows a person, often with hostile intentions, to break into the software and use it for purposes that are unwanted. It is necessary for developers to minimize these holes and fix them if they are discovered. In case of open source software, because the source is public, the users may help in discovery by examining the source code. This, however, also means that a person with hostile intentions can also find these holes by examining the source code. Thus, it is always important to keep a close eye on security.