Specifications
CHAPTER 7. OPEN SOURCE DEVELOPMENT METHODOLOGY 65
This is the actual citation of Paragraph 10 of the Academic Free License. This clause should
prevent a licensee from suing the licensor and using his work at the same time. The Academic
Free License is accepted as an open source license according to the Open Source Initiative.
The license is not classified as free software license by the Free Software Foundation since it is
not GPL-compatible.
7.2 Tools and Services
The development of the Input Abstraction Layer has been accomplished by using free and open
source software throughout. This section summarizes the most important tools and explains
their meaning for the general development of FOSS. Additionally, several pointers for further
reading are provided.
Prior to implementing the Input Abstraction Layer, a comprehensive examination of several
open source projects has been performed. This way, sophisticated algorithms and thoughtful
data structures are found. Even if a project has a completely new approach to solve a problem,
the internals of the implementation are similar. Reading and understanding source code is one
of the essential parts for a successful FOSS development. A helpful insight into reading foreign
source code is provided by [Spi03]. This book gives an excellent insight on how to read code in
general and examines several open source projects. The GNU Coding Standards [Fsf04a] are
essential for the development of FOSS projects. These standards provide guidelines on software
design, the use of the C programming language and on how software should be documented.
The GNU Autotools consist of the utilities autoconf(1), automake(1) and libtool(1)
which help to develop software that is platform and system independent to the greatest possi-
ble extent. Another reason to use the GNU Autotools are the packages for the various Linux
distributions. Using the GNU Autotools spares the package maintainers a lot of time since
dependencies to other programs or libraries are already defined by the configure script which
is generated by autoconf. The use of the Autotools thus leads to a symbiotic relationship
between the developers and the package maintainers: the developers relieve the package main-
tainers by supplying a standardized source package, the package maintainers take on the work
to create the distribution’s packages once a new version of the software is released.
The Autotools are available at http://www.gnu.org/software/. A comprehensive guide
for working with the GNU Autotools is provided by [VET00]. The source code of the Input
Abstraction Layer is released as a GNU Autotool package.
The tenor “release early, release often” [Ray01] is important to achieve a high quality
level of the software. Publishing all changes of the software quickly after the implementation,
malfunctions are found faster by the users and thus, they can be corrected before causing more
trouble. It is suggestive to work on a version control system such as CVS or Subversion and
allow public access to it. This way other developers and experienced users are given the chance
to access the latest version of the source code. Stable branches of the development should be
released as source packages.
CVS is available at http://www.cvshome.org/, Subversion can be obtained at http:
//subversion.tigris.org/. Further reading regarding the use of version control systems
is provided by [FB03] and [CSF04]. Since subversion is relatively new, [CSF04] provides infor-
mation about switching from CVS to Subversion. The development of the Input Abstraction
Layer is realized using Subversion as version control system. Appendix D provides an example
on how the Input Abstraction Layer’s source code can be obtained using Subversion.