Make maps better, together.
Collaborative mapping and the Open Source Way
Traditional software development
![ye olde computer](images/ye-olde-computer.gif)
* Go to the store and get a floppy disk
* Released every N years
* Very specialized, high cost to reproduce
* Writing software was really, really hard
* Low-level languages, complex problems
…and then the Internet happened
![the internet](images/the-internet.gif)
* Updates are immediate (and often automatic)
* Cost to transmit is negligible
* 20 years -> solves all the hard problems
* High level languages, standardized stacks, design patterns
A brief history of the internet
- Everything → HTTP
- XML → JSON
- SOAP → REST
- SAML → OAUTH
- Adobe PDF, Microsoft Word → Markdown
- ESRI Shapefile, Google KML →
GeoJSON, TopoJSON
What we learned
* desktop ≠ internet
* open > closed
* Simple > Complex
* Pragmatic > Perfect
* Dumb format, smart tools
* Easier to upgrade a tool than a standard
* Experimentation is key
Open source isn’t just
hipster nonsense
![hipster nonsense](images/hipster-nonsense.gif)
* WordPress - ~1/4 sites
* Apache - ~40%, + nginx - ~20%
* Android - ~80% of sales
* Linux server - ~40-60%
* Chrome - ~%40
What’s open source?
Open > Closed
* open collaboration
* shared tools, shared data
* demo of whiteouse/petitions
* {"key vocab"=>"repo, user, organization, commits, issues, pull requests, forks, branches"}
But first, a story
![:beers: :beers:](https://assets.github.com/images/icons/emoji/beers.png)
data.dc.gov
![Data.dc.gov screenshot](images/data-dc-gov.png)
When I first opened a Shapefile
![Shapefile screenshot](images/shapefile.png)
When I first opened a KML file
![KML screenshot](images/kml.png)
Down the
Hole…
![KMZ Screenshot](images/kmz.png)
When I First Opened a GeoJSON file
![GeoJSON Screenshot](images/geojson.png)
GeoJSON on GitHub
View, edit, collaborate
* `.geojson`, `.topojson`, `.json` files
* Points, lines, and polygons, oh my!
(the entire GeoJSON spec)
* Clustering over ~1000 markers
* Custom markers
* Identify popups
* Stupid simple embeds
* Gists
Why GeoJSON?
- No API to learn
- No SDK to install
- No license to
![:moneybag: :moneybag:](https://assets.github.com/images/icons/emoji/moneybag.png)
- Open & Interoperable
- It’s the Internet
The Process
- Commit a
.geojson
file to GitHub
- ???
So easy this adorable kitten can do it
![ipad](images/ipad.gif)
(oh and also treating data as code)
What about our License Map?
![Stenson's](images/stetsons.png)
* embeds
* API
View
![view](images/view.gif)
Edit
![edit](images/edit.gif)
Edit GeoJSON
![edit](images/edit-geojson.gif)
Import via Drag and drop
![drag](images/drag-and-drop.gif)
Save to Gist and GitHub
![save](images/save.gif)
Collaborate
![collab](images/collab.gif)
Pull Request
![Pull Request](images/pull-request.png)
Who made what change, when?
![Revision History](images/revision-history.png)
DC Bars sans TV
![Bars sans TV](images/bars-sans-tv.png)
GeoJSON Diff
![property diff](images/property-diff.png)
Flu Shot Open Standard
![Philadelphia flu shot open spec](images/philly-flu.png)
* Philly
* Chicago
* SF
![:chart_with_upwards_trend: :chart_with_upwards_trend:](https://assets.github.com/images/icons/emoji/chart_with_upwards_trend.png)
![graph](images/graph.png)
* Mapping for ~9 months, diffs for ~3
* Hosts hundreds of thousands of GeoJSON files
* Served millions of maps (Hockey stick: > 1/4 Mil / month )
* Diffed tens of thousands of changes both proposed and realized
Why GitHub?
- Liberating data
- Democratizing mapping
- Treat data as code
GitHub for software collaboration
* 5M users
* 10k+ government users
* 10M projects
* Bulk of the technology you touch on a daily basis
Git
![git command line](images/commit-log.png)
Petitions.whitehouse.gov
![petitions.whitehouse.gov](images/petitions.png)
* also project open data
Software documentation
![docs](images/docs.png)
Issues
![issues](images/issues.png)
Contributor modifies
![Pull request](images/petitions-pull-request.png)
Maintainer reviews
![Diff](images/petitions-diff.png)
If even the NGA can do it…
![NGA](images/nga.png)
How to get started
- Open source some already-published data
- Open source some tools in your data-processing pipeline
- Contribute to an open source project you use
- Non-code: Feedback repos, recipes, where to get lunch near the office
Make maps better, together.
Collaborative mapping and the Open Source Way