Introduction to Free, Libre and Open Source Software

for Geospatial Analysis and Modeling

Helena Mitasova and Vaclav Petras
NCSU OSGeoREL at Center for Geospatial Analytics

August, 2015

Four freedoms

  • There are four freedoms that user should have:
    • the freedom to use the software for any purpose,
    • the freedom to change the software to suit your needs,
    • the freedom to share the software,
    • the freedom to share the changes you make.

Four freedoms

  • the free software definition
  • by Richard Stallman and Free Software Foundation
GNU logo, a free operating system by FSF

Gratis versus Libre

  • for free (at no cost) is not enough
  • free software is free to run, study, modify and distribute
  • free is a matter of liberty not price
    • free as in freedom (as opposed to free as in free beer)
    • libre as opposed to gratis
  • also: free software != freeware

More than Open Source Code

  • having source code is not enough
  • Stallman's four freedoms require having the source code
    • but just having the source code doesn't imply the freedoms
  • open source means also open development, open community, open discussions, …
    • not only the possibility to see the source code
    • however, source code is publicly and easily accessible

Free, Libre and Open Source

  • free software (FS), open source software (OSS), free and open source software (FOSS), free, libre and open source software (FLOSS)
  • the term open source is often used for simplicity
    • often used by developers as it refers to a development model
  • the term FOSS is often used in geospatial community
    • free refers to user's freedom
    • open source refers to open development model
    • FOSS4G (free and open source software for geospatial)

Commercial and FOSS

  • FOSS can be used commercially
  • FOSS can be commercial but not proprietary
  • Famous examples:

Commercial and FOSS

Microsoft loves Linux

Satya Nadella, Microsoft CEO, 2014

Apple uses software created by the Open Source community and returns its enhancements to the community.

Apple Inc., 2015

Why industry uses open source

  • vendor neutrality
    • proprietary software has a single vendor (vendor lock-in)
    • open source software is independent on particular companies
    • open source is not influenced by vendor's current business goals
  • flexibility (use where you want, when you want)
  • interoperability
    • open source aims to support standards
    • proprietary software often uses propriety formats
  • cost (no license fees, no license management)
    • low total cost of ownership (includes cost to upgrade or migrate)
  • support (many free options available by default)
    • money not spent on license fees used for support or features
  • influence in development (direct access to developers)

Types of FOSS licenses

  • copyleft licenses
    • GNU GPL
    • free software licenses (according to four freedoms by FSF)
    • code cannot be combined with proprietary (and closed) code into one program
    • examples: Linux, R, GRASS GIS, QGIS

Types of FOSS licenses

  • permissive licenses
    • BSD, MIT
    • source code can be modified, closed and sold as proprietary
    • more options for the developer
      • can combine the source code and software more freely
      • can make the new software proprietary
    • less freedoms for the user (might not get the source code, thus freedoms)
    • example: GDAL used in QGIS as well as in ArcGIS

Users and FOSS licenses

  • licenses are mostly important for the developers
  • users don't have to worry about the license
  • this is different from proprietary software
    • user must read and agree to EULA or similar type of agreement
    • license is used in the meaning license to use
      • often paid or limited (or both) for proprietary software
    • applies to paid software, freeware, online services, …

FOSS development

  • open community of developers and users
    • may include individuals and companies
  • flexible, interoperable and portable
  • extensive supporting software tools for code management, bug tracking, documentation, collaboration
  • browse the source code on-line
  • anybody can modify but only selected changes go to the original project

Code sprints

  • developers and users working together at one place
    • open participation
    • self organized through wiki
    • software development, documentation, data
    • often associated with conferences
  • code sprint, community sprint, developer meeting, hackfest, hack day, hackathon, codefest, meetup

Examples: OSGeo Bolsena 2010, GRASS GIS Prague 2011, OSGeo Vienna 2014, QGIS Copenhagen 2015, GRASS GIS Como 2015

Google Summer of Code

Google has provided funding (~$5500 per student) for open source projects.

8500 students (from 101 countries), 8300 mentors
since 2005 till 2015

Google official page
OSGeo GSoC page
GRASS GIS GSoC page

Examples: wxNVIZ, v.generalize, WMS for GRASS

Standardization

Standardization and open source are different but often related.

OSGeo different from OGC - Open Geospatial Consortium sets standards for interoperability (similar to OpenGL) both proprietary and open source software follows these standards where it is good for them

OSGeo and OGC coordinate their activities.

OSGeo

Open Source Geospatial Foundation

By 2005 there was more than 200 FOSS4G projects: need for selection and organization

Founding projects (February 2006):
GDAL/OGR, GeoTools, GRASS, Mapbender, MapBuilder, MapGuide Open Source (Autodesk), MapServer, OSSIM

Mission: To support the development of open source geospatial software and promote its widespread use.

OSGeo projects

Web Mapping
deegree, geomajas, GeoServer, MapServer, OpenLayers, PyWPS, ZOO-Project
Desktop Applications
GRASS GIS, Marble, QGIS, gvSIG, Optics
Geospatial Libraries and Databases
FDO, GDAL, GEOS, GeoTools, OSSIM, PostGIS, Orfeo Toolbox, rasdaman
Metadata Catalogs
GeoNetwork, pycsw

Some projects are in incubation (code and license cleanup, small community).

FOSS4G Landscape

OSGeo
global organization, local chapters and related projects like GeoForAll
OpenStreetMap
data, applications, services

FOSS4G Landscape

LocationTech
working group at Eclipse Foundation
FOSS4G conferences
global and local conferences
Individual projects and communities
projects and communities exist on their own

Example Desktop System

GIS
QGIS, GRASS GIS
statistics
R (geostatistics, predictive modeling, …)
database, attribute data
SQLite, PostgreSQL with PostGIS, LibreOffice
graphics
Inkscape, Gimp, ImageMagic
  • Portability: works on Linux, Mac, Windows
  • Interoperability: programs designed to work with others

Example WebGIS System

backend
GRASS GIS, R, SAGA GIS
front end
OpenLayers, Django
database
PostgreSQL with PostGIS
server
ZOO-Project or PyWPS (OGC WPS, native support for GRASS GIS)
  • Flexibility: standards and open formats allows to switch different components
  • Scalability: can be copied to more machines at no cost

GRASS GIS history

  • 1983 started at US Army CERL as land management support system, see an old promotional video
  • evolved into general purpose GIS
  • 1999 GNU GPL, international team of developers
  • 30 years of GRASS GIS development in 2013
  • check out last change (probably just few hours ago)
  • last release Dec 28, 2016 [last checked Feb 2017]

GRASS GIS

  • portable: different OS, 32/64bit, code in C and Python
  • web-based infrastructure
    • Subversion code repository with online source code browser, feature requests, bug reports, users and programmers manual, wiki, IRC
  • support
  • sponsors
    • Municipality of Trento, Fondazione Edmund Mach, Google via OSGeo, … individuals

GRASS GIS spatial data types

  • 2D raster (imagery, DEMs, …)
  • 2D/3D topological vector
  • 3D raster (voxels, volumes, soil properties, …)
  • time series (of anything above)

GRASS GIS functionality

  • current version 7
  • almost 500 modules
  • more modules in GRASS GIS Addons repository
  • wide range of functions
    raster and 3D raster
    map algebra, DEM, interpolation, flow, neighborhood, solar, cost surfaces
    imagery
    rectification, multispectral, classification, segmentation, FFT
    vector and database
    buffers, overlays, conversions, networks, attribute management, SQL
    spatio-temporal
    temporal topology, algebra, sampling, statistics, aggregation
    visualization
    2D display, 3D visualization, temporal visualization, PS and PDF maps
    interoperability
    WMS support, export to different formats

GRASS GIS Basics

  • database structure
    • based on cartographic projections and user's need to organize data
    • example
      • north_carolina_state_plane_meters (location)
        • new_highway_project (mapset)
          • elevation (raster)
          • streets (vector)
        • wake_county (mapset)
      • usa_latlon (location)
  • interfaces
    • Graphical User Interface (now wxGUI, other GUIs in the past)
    • Command Line Interface (examples in manual)
    • Application Programming Interface (C for hard work, Python for scripting)
    • designed for easy transition between the interfaces
  • computational region
    • extent and resolution for raster computations

GRASS GIS Learning Resources

Summary

  • FOSS, FOSS4G, open source
    • software that is free to run, study, modify and distribute
    • solutions that are not depended on a particular company
    • open development, code sprints, GSoC, …
    • driven by user needs, not vendor needs
  • OSGeo
    • umbrella organization
  • different combinations of software can be used
  • GRASS GIS
    • most established general purpose open source GIS
    • large portfolio of functions