On-Ramps to Open Source
Lyzi Diamond, Mapbox
FOSS4G-NA 2015
Hi! I'm Lyzi. I do Education at Mapbox. I am also a co-founder of Maptime.
Let's start with a postulate: every open source community experiences the same growing pains.
Folks already inside the community don't know what to do about it.
Folks interested in joining the community don't know what to do about it.
Neither group can even identify the problem!
But there is a disconnect. It is difficult to join an open source community as a beginner...
... and it's difficult for an open source community to open itself up to beginners.
Why? Open source is meant to be accessible by nature. And it is, technically.
But not always conceptually.
In 1997, Eric Raymond published an essay called "The Cathedral and the Bazaar".
This is considered one of the seminal programming texts. It is an essay in praise of open source, particularly in the Linux community.
The essay is full of quotes like this:
"A certain base level of design and coding skill is required, of course, but I expect almost anybody seriously thinking of launching a bazaar effort will already be above that minimum. The open-source community's internal market in reputation exerts subtle pressure on people not to launch development efforts they're not competent to follow through on. So far this seems to have worked pretty well."
"So far this seems to have worked pretty well."
Raymond is describing the infancy of modern-day open source communities. (Keep in mind he was writing in the late nineties. Parachute pants were a popular fashion choice.)
A different time.
Open source projects in our time typically start when people with a common skillset have a common problem or frustration that they want to solve together.
Doing that in the open means more people will contribute and it will mature faster.
That is what Raymond was writing about.
But there comes a time when the project has users who are not the same as the developers.
In the nineties, this divide didn't exist.
Technology was for technologists.
The whole concept of an open source community is relatively young itself.
Open source PLUS consumer technology is even younger.
Add into that everything in between and you see...
We simply haven't had time to solve this problem yet.
I repeat: YET.
As a community, open source geospatial is pretty amazing.
We put a lot of focus on education and growing our community.
But we have yet to solve this problem.
And I have an idea of how we can start.
Hint hint
Geospatial technology has many facets. There are many problems to solve that require different skill sets.
So why are we trying to onboard everyone in the same way?
There are tons of places you can start. There are tons of doors.
Or, if you prefer: on-ramps.
I have subdivided our field into five main groups:
1. Cartography
2. Web Programming
3. Spatial Analysis
4. Data Management and Acquisition
5. Community Mapping
The number of tools you can use for mapping has been growing exponentially.
This is awesome! It means we have many places to start.
Let's walk through each of these groups and talk about on-ramps that can build on existing skillsets.
Let's identify some comfortable introductions to geospatial open source.
Let's sing and talk about puppies and rainbows! Yay!
This is of course not meant to insinuate that these are the only ways to get involved. They are simply helpful paradigms for those lost among us who just want to get involved.
Also, disclaimer: I do work at Mapbox, but I'm not only going to talk about Mapbox tools. That would be counter to the goals of this talk. We want diversity of tools for a diversity of projects!
1. Cartography
a.k.a. making pretty maps :)
In terms of web mapping, cartography applies to basemaps, feature layers, and the ways the two interact.
Bad cartography is easy to spot (and way easy to create).
Good cartography is difficult to define and emulate.
We want people with good design skills in our field!
They make beautiful things.
This map was made with Mapbox Studio.
So was this one.
You can use Mapbox Studio to make map tiles for web maps or to make styles and print static maps.
It is a free and open source desktop application that comes pre-loaded with data from OpenStreetMap and Natural Earth.
This is just one of the reasons that Mapbox Studio is a great onramp to open source geospatial for designers: no data wrangling necessary!
It's also a great onramp because it does require some additional learning.
Styling in Mapbox Studio is done using a language called CartoCSS.
There are many resources to learn CartoCSS, but simply the act of learning something new is awesome preparation for learning other tools in open source geo.
Another open source tool for cartography is QGIS.
QGIS is a more "WYSIWYG" cartography platform, as described in this blog post by the inimitable Gretchen Peterson.
"The cartographic capabilities of QGIS are sufficient to produce almost all the common map layout components with an adequate amount of advanced capabilities and even some options, like the color blending modes, that aren’t typically found elsewhere."
They also have a pretty swell map gallery!
2. Web Programming
Arguably the best and definitively the most ubiquitous open source JavaScript mapping library is Leaflet.
Leaflet powers so many things!
Leaflet is an awesome place to start because it powers so many things.
Mapbox.js is actually a Leaflet plugin.
Anything you can do in Leaflet you can also do in Mapbox.js.
Leaflet also has a ton of plugins that give a huge range of functionality...
... and there are tutorials galore for making your first Leaflet map.
There are of course other open source JavaScript mapping libraries, like OpenLayers, Polymaps, and D3.geo, but Leaflet is an excellent place to start.
There are also JavaScript mapping libraries that do more than just getting an interactive map on a page...
like Turf.js!
3. Spatial Analysis
A huge percentage of folks who are new to open source geospatial are coming from a traditional GIS environment.
Creating data, editing data, classifying data...
Raster data, vector data...
Data data data!
For this crowd, the most familiar-looking tool will be QGIS.
QGIS is an open source desktop mapping platform. It is free and works on many different systems.
It works with rasters and vectors:
You can do fun styling to show off results of analysis:
But maybe best of all, QGIS has an awesome community of users and developers.
There are some excellent tutorials for getting started. There's also room for using Python scripting inside QGIS when it's time to level up!
Another popular analysis and visualization tool that's an awesome place to start is CartoDB.
With CartoDB you can upload a spreadsheet and get to visualizing and classifying data in relatively few clicks.
That's a great feeling: one that keeps you coming back for more!
4. Data Management and Acquisition
This section falls into two camps:
If you love converting data into different formats and computational analysis, you should learn about GDAL.
GDAL stands for Geographic Data Abstraction Library.
It is a command-line tool for data conversion and processing. It can do a lot. (OGR is the related utility that handles vector data.)
My good friend Derek Watkins has put together an awesome cheat sheet for learning GDAL and OGR commands.
If you love storing data and conducting large-scale spatial operations, you should learn about PostGIS.
PostGIS is a spatial database extension for PostgreSQL, which is an open source object relational database.
PostGIS is concerned with how data is stored and manipulated, joined and related.
It is often the heavy lifter behind spatial web applications that have lots of data.
PostGIS can be a bit difficult to get started with, but that's just because databases require a specific way of operating.
BoundlessGeo has an excellent intro tutorial that uses their OpenGeo Suite. It's a good place to start.
5. Community Mapping
This one is pretty obvious...
OpenStreetMap is the crowd-sourced map of the world.
It is entirely open source and has sprung countless projects to facilitate community mapping.
All organizing for OpenStreetMap-related projects and events happens on the OSM Wiki.
OpenStreetMap is an open source community itself.
How do many people -- especially newcomers -- interact with OpenStreetMap?
The in-browser iD editor.
You see, iD is an onramp itself.
It's an entirely open source project with the goal of bringing more people into an open source community.
It's quite beautiful.
It also shows us that we have the power to build these on-ramps collectively.
Open source projects can themselves be on-ramps to open source communities.
It just takes a little thought and a whole lot of empathy.
Then, all of a sudden, those newcomers are themselves experts and are bringing in newcomers themselves.
We have an amazing opportunity to grow our community here.
There's absolutely nothing stopping us from taking it.
I'm @lyzidiamond on Twitter! These slides are at lyzidiamond.com /onramps! Come talk to me! I like talking to people!