Geoscience Reference
In-Depth Information
chosen - if the toolkit APIs change often, they will be seen as unattractive. The same applies to lan-
guage and compiler versions; the new versions may be better engineered, but may not be as preva-
lent on user systems than their predecessors. Python seems to be a case in point, with most Windows
geospatial software bundling their own copies, which can make updating and maintenance on user
systems more demanding than strictly necessary, for example, compared to Java, which is typically
installed once and used by all applications.
A particularly troublesome issue for dynamically linked software components in relatively long-
running applications is that of thread safety. If the upstream component has a global error handler
and is dynamically linked to multiple downstream components, it may be that they will compete
in resetting it to hand off errors to their own error handlers. The same may occur with the setting
of global variables. These problems may be avoided by static linking of libraries, but this negates
the advantages of having more easily maintained single copies of libraries installed. Even if com-
ponents may be written, or often adapted from earlier code, to be thread safe in themselves, it may
be that thread handling in downstream components makes different assumptions. Modern language
environments, such as Haskell, attempt to attack this problem at its root, but total reimplementation
of complex component stacks is most often not a feasible option.
Defensive use of static linking is a possibility but places the responsibility for critical updating
on the downstream developers in return for control over the dependency in distributed binaries.
Alternatively, the downstream component may simply bundle the source code of the upstream com-
ponents; this is taken to considerable lengths by Boost* and its community - Boost provides free
peer-reviewed portable C++ source libraries written as collections of header files.
It is often convenient for users to install and maintain binary components rather than to install
from source. This then transfers the responsibility for trying to keep component stacks working
together to those who package and distribute binary components, such as the OSGeo4W project
to provide Windows installers and components, or the provision of OS X frameworks for open-
source geospatial software. There are a number of similar Linux repositories, providing component
binary packages, such as DebianGIS § and UbuntuGIS, among others. The packagers may also get
overenthusiastic and release binaries of early development versions of software, perhaps solving one
problem, but leaving others open.
Dependency issues may degenerate into dependency “hell” when downstream necessary compo-
nents in a stack change so as to have conflicting version dependencies on the same upstream com-
ponent. If the packaging metadata is not carefully crafted, updating may lead to a component stack
failing, or losing stability. Since users often see proposed updates as offering greater security and/
or functionality, their presumption will be to update and trust the metadata to protect them against
unanticipated consequences. Writing packaging metadata and binary build systems is another area
in which open-source projects typically lack developer capacity, because it is both hard and unre-
warding. Users take the providers for granted until something gets broken, at which point they
complain, understandably reducing developer motivation to offer time to such services.
14.3 OPEN-SOURCE GEOSPATIAL PROJECTS
The Open Source Geospatial Foundation was brought into being in 2006 as a successor to the
MapServer Foundation, itself created the year before.** In addition to providing a shared infra-
structure and procedural framework for web mapping, desktop application and geospatial library
projects, OSGeo aims to promote open-source geospatial software use and development, including
* http://www.boost.org.
http://osgeo4w.osgeo.org/.
http://www.kyngchaos.com/software/frameworks.
§ http://wiki.debian.org/DebianGis.
https://wiki.ubuntu.com/UbuntuGIS.
** http://www.osgeo.org/content/foundation/about.html.
Search WWH ::




Custom Search