Wednesday, March 18, 2015

Review of FOSS4G NA 2015

Warning: this is a LONG post!

Note: updated 3/25/2015 with links to presentation videos where available.

TL;DR

  • FOSS4G NA was awesome
  • There were way more female presenters than at previous events
  • Mapbox was everywhere
  • Boundless wasn’t
  • Lots of new developments on vector tiles, including several efforts from companies other than Mapbox – even some promised from Esri!
  • Progress towards Leaflet 1.0 but I’m a bit puzzled that Mapbox doesn’t have more focus on integrating the worlds of Leaflet and Mapbox GL
  • Cesium is a super cool JavaScript library for doing Google Earth like apps, and had the coolest demos I saw at FOSS4G – drive a monster milk truck!
  • OSRM (Open Source Routing Machine) does incredibly fast dynamic routing, and also shows how much OpenStreetMap data has improved for routing. 
  • People are continuing to do cool stuff with D3 and other approaches to vector maps.

FOSS4G goes from strength to strength

By FOSS4G I mean both the conference and Free and Open Source Software for Geospatial in a broad sense. The conference, as with every FOSS4G I’ve been to, had a fantastic amount of energy and excitement. People were running birds of a feather sessions (BoFs) and other technical sessions until 9 or 10 in the evening. I am just super impressed and excited at the number of smart people doing great things with open source geospatial at the moment. This is clearly where the innovation is happening in the industry currently.

It happened that the Esri developer summit was happening the same week. I don’t pay much attention to that anyway, having never been an Esri person, and certainly didn’t have any spare bandwidth to do so last week. But here is a tweet comparing the two:
It is also notable how Mapbox is setting the pace and Esri is following in a number of areas. News from the dev summit was that Esri is going to adopt the Mapbox spec for vector tiles. It is good to see them adopting the emerging standard on this occasion rather than inventing their own incompatible approach which they have tended to do historically (for example with geoJSON).

More diversity

A number of people, myself included, remarked on the much greater presence of women at this FOSS4G compared to most geo tech events.
Credit to the organizing team for inviting a black woman, Denise Jacobs, to give the opening keynote. You would hope that this would be something that did not deserve comment, but in an industry so dominated by white men traditionally, this did stand out, and it set the tone for a much more diverse event.

Mapbox also deserves credit for the fact that 6 of their 10 speakers were female
I did a quick skim of the overall program and in total counted 22 female speakers and 56 male, so almost 30% female speakers. So still a way to go, but it felt like good progress.

More Mapbox

As noted above, Mapbox provided 10 speakers for the conference and they were everywhere. They received $10m in funding from Boulder based Foundry Group a year and a half ago, and have certainly moved aggressively since then, growing to 80 people and taking on a huge number of talented people.  Mapbox is driving a lot of innovation in the industry at the moment. However, I’m rather perplexed at why they’re not doing more to integrate all their cool newer stuff with Leaflet. See the sections below on vector tiles, Leaflet and OSRM for more.

Less Boundless

When I chaired FOSS4G in Denver in 2011, one concern that came up from several directions was whether OpenGeo, now known as Boundless, had too many presentations at the conference (the same question people are now asking about Mapbox!). They were definitely the company that was seen as the leader in the open source geo world then. At this FOSS4G I counted one workshop and one presentation given by Boundless. In contrast to Mapbox, they have had a high profile array of talent leaving over the past year – including Eddie Pickle, Tim Schaub, Paul Ramsey, Alyssa Wright, Jeff Johnson, and Gretchen Peterson. There are still good people there of course, and I’ve heard they are doing well in the Federal market, but they were certainly less prominent here than at other FOSS4G events.

Vector Tiles

There continues to be huge interest around the development of vector map tiles, which is being driven by Mapbox but the spec is an open standard and others are contributing to developments in this space also, which is a significant step towards widespread adoption.

I talked a bit about vector tiles in my report from the last State of the Map US conference, and I won’t repeat that here. Dane Springmeyer’s talk on vector tiles was excellent as usual.  He mentioned a post from Mike Migurski on “the liberty of postgreslessness” which is an interesting discussion on the original motivation for developing vector tiles, and is definitely worth a read (though Dane also emphasized – and I totally agree – how great PostGIS is too!).

Mapbox GL renders vector tiles in a browser using WebGL, and Mapbox Studio can both create and consume vector tiles. Vector tiles are useful both server side, where they can be used to create raster tiles in a fast and flexible way, and on the client side, where they can be used to create more interactive and flexible maps – but not in all browsers and at the cost of more computing power.

The primary Mapbox tool to create vector tiles is Mapbox Studio – it can also consume vector tiles. A couple of new tools to programmatically create vector tiles are geojson-vt, a library for efficiently slicing geoJSON into vector tiles on the fly, and tippecanoe, a command line tool that can convert very large geoJSON files to vector tiles.

Mapzen has added vector tile support to TileStache, they are providing a free OpenStreetMap vector tile service, which is used in their Tangram project.

Also SpatialDev has developed a Leaflet plugin for vector map tiles using HTML5 canvas. As they say, “though there is extensive use of MapboxVectorTiles in Mapnik PNG tile rendering as well as MapboxGL, there is a strange lacking of libraries that integrate these vector tiles directly into Leaflet”. There are various examples referenced on their web site. Spatialdev also has a very interesting looking tool called PGRestAPI which is written in node.js and provides a REST API for PostGIS that can serve data as vector or raster tiles, geoJSON, Esri JSON, and more. I plan to look at this further for work that I am doing.

As an aside, I find it interesting how much the vector tile spec reminds me of the “IFF” (Interface format file) that the IBM GFIS product used back in the 1980s, with its emphasis on compactness. They use a number of the same tricks, like dictionary encoding of attribute values, and relative encoding of coordinates.  Just when I thought geoJSON was winning in the format wars with its simplicity and readability, along comes something at the other end of the spectrum with its focus on compactness and performance, but much more complex. Obviously both have their pros and cons, it’s not a case of one or the other, but I continue to find it entertaining how cyclical the computer industry is!

Leaflet

Vladimir Agafonkin gave his usual excellent presentation on “Leaflet, WebGL and the Future of Web Mapping”. He talked about progress towards Leaflet 1.0, which will feature things like flyover animation (similar to how Google Earth flies from one location to another), improved vector rendering, and a wide range of lower level improvements. And the code is slightly smaller than the previous version, something Vlad is always focused on! He hopes to have a beta version of 1.0 soon, but acknowledged that this has taken longer than he hoped.

His talk got quite personal as he talked about some of the challenges he’d experienced and how he had really been suffering from burnout over the past year. Aside from the difficulty of running a successful open source project and the challenges that come with that, which he articulated well, Vlad is living in a country with a war going on (Ukraine) and he and his wife had twin girls last year.

He talked about how he’d mitigated this by working on a number of other cool new projects like RBush, a high performance JavaScript library for spatial indexing of points and rectangles, which sounds great, and geojson-vt which I mentioned above. But the talk of his burnout did leave me somewhat concerned both for Vlad and for Leaflet. I hope for both of their sakes that between Vlad, the Mapbox team, and the broader community, they can figure out a way to spread the load a bit more so that not so much of the weight of moving Leaflet forward is on Vlad’s shoulders.

The other thing I should mention is that I was somewhat puzzled, as were several others I talked to, that Mapbox doesn’t seem to be doing more to integrate the worlds of Leaflet and Mapbox GL. Multiple Mapbox people in multiple presentations said that they were conceptually hugely different things, but I don’t really agree with that. Yes you can’t rotate maps in Leaflet, but as someone who has invested heavily in developing some serious enterprise applications on top of Leaflet, I really want to be able to plug in vector tile layers to my existing Leaflet applications – there are multiple advantages to this even if I don’t have the full interaction that I would have with a full MapBox GL application. Third parties seem to be doing more to integrate the two than Mapbox does, as mentioned above. There is a Mapbox GL Leaflet project, but this was only mentioned in passing, it didn't get much emphasis. Also someone asked about conversion scripts from CartoCSS styles to Mapbox GL, and the answer was that they were too different to do this. Again I didn't find this a very satisfactory answer – if you’ve defined large numbers of styles in CartoCSS you don’t want to recreate all of those completely manually. Sure some complicated cases might not translate, and you would have to make further changes to take advantage of new features of Mapbox GL, but a script that at least converted basic information like colors, linestyle, fill etc seems as though it would be useful.

It just seems to me that given the massive adoption of Leaflet, it would really help adoption of Mapbox GL with some closer integration between the two – I hope they will consider putting more effort into this.

Drones – and kites!

A hot theme at all the geo conferences I’ve been to in the past year has been the use of drones for mapping, and FOSS4G NA was no exception. I have been tempted to buy a drone for a while but hadn’t been considering building one, and I nearly skipped “Building Your Own Mapping Drone from Scratch using Open Source Hardware and Software” by Ragi Burhum. However, his infectious enthusiasm now has me seriously considering a drone building project ☺.  Check out his presentation video, and there is lots of info at DIY Drones.

This was followed up by another good talk from Michele Tobias and Alex Mandel on kite photography, and a presentation in the afternoon (which I missed) on OpenDroneMap from Stephen Mather. Another good source of information is Aaron Racicot’s presentation from FOSS4G 2014 in Portland – see the video and slides. This whole area is definitely something I want to play with more.

Cesium

My vote for the coolest of the many cool demos at FOSS4G NA goes to the presentation on Cesium JS by Matt Amato. I really hadn’t been aware of Cesium up to this point, so this was one of the best discoveries of this conference for me. It’s a Google Earth like 3D globe application, but which runs in JavaScript and is much more customizable than Google Earth was. Its significance is even greater now that Google is deprecating the Google Earth API.



The most fun demo was this one which lets you drive a Monster Milk Truck around various impressive locations – you can leap into the Grand Canyon among other things (but don’t worry, the truck is indestructible and bounces nicely!). There are more demos on this page for Google Earth developers, and still more here. One application that I thought was really cool was doarama which lets you follow multiple GPS tracks over time, and look around from the point of view of any of them – shown to great effect in this example of a paragliding trip in the Alps.

OSRM

I was also super impressed with OSRM, the Open Source Routing Machine. This is an incredibly fast interactive routing library which can route all the way across the US in a fraction of a second, and you can dynamically drag intermediate points and it will reroute interactively.

Check out the presentation here and demo here – click a start and end point on the map, then drag either the end points or intermediate points around. This also shows how far OpenStreetMap data has come for routing – the main thing it is missing relative to Google now is good geocoding / address matching, and there are various efforts in progress to improve that (and also Street View, where there are also some open source initiatives, but matching that will be further away).


D3 and other vector stuff

There was less on D3 than at some other recent conferences, but Michael Bowman gave a very nice talk with a series of D3 examples that each built on the previous one. He had an entertaining quote on SVG:
Check out his map examples - choose them from the pulldown at the top. Most of his presentation was reviewing code, and to me his examples seemed far less incomprehensible than most D3 code I've seen. I plan to look through them in more detail when I can. A useful link he shared lets you browse many more D3 geo examples at bl.ocksplorer. We have been doing some work with D3 recently and I think that people are just scratching the surface of the cool things that can be done with it in an interactive mapping context.

They didn't present at the conference, but I ran into Erez Cohen of Mapsense, who I had talked to remotely a few months ago but hadn't met in person before. They don't have any publicly available demos yet, but are working on some new vector mapping technology that has very impressive performance with large data volumes. Keep a lookout for interesting things coming up from them.

Design and usability

There were a number of good sessions on design and usability. Gretchen Peterson gave a good talk on "How to Win Friends and Use QGIS". One of her top tips was "Other people will like you instantly if you make pub maps" - which is what she proceeded to do. I have been meaning to play around with QGIS for a while but hadn't managed to find the time, but Gretchen's live demo was a great introduction to QGIS as well as having lots of good map design tips. I also learned what an inverted polygon shape burst fill looks like! Gretchen will be doing a hands on version of this talk at the upcoming Maptime Boulder on April 9.

I also enjoyed the talk "Think before you code" by Lizzi Slivinski, on the design of the Toledo Flood Hazard Visualizer, which covered various aspects of usability and user interface design. This application also used D3.

And more ...

I really need to end this post :), I'm sure I've missed some important things so I apologize in advance for that. But here's a quick list of other interesting things that came up at some point, either in presentations or conversation:
  • Boost is a C++ geometry library that is a potential alternative to GEOS. One reason this is important is that GEOS can't be used in iOS applications, as Apple doesn't allow use of LGPL licensed software, but Boost can be.
  • Turf is a geometric / geospatial library for JavaScript which looks pretty powerful. Its primary developer Morgan Herlocker is now working for Mapbox and Turf is being integrated with other Mapbox offerings.
  • Torque and Windshaft from CartoDB both came up a couple of times in different presentations. Torque does really cool temporal animations. Andrew Hill showed a cool example analyzing the 1962 escape from Alcatraz. I continue to be impressed with what CartoDB is doing, and they recently acquired the services of Mr PostGIS, Paul Ramsey, which adds even more strength to their team.
  • AmigoCloud is another cool system I hadn't come across before - cloud hosted mapping including ability to make offline updates, and do two way sync of updates with an Esri system.
  • Cloudant presented about the work they're doing with CouchDB and PouchDB, including offline sync, which sounds like another interesting thing to explore.
  • I missed the GDAL talks but heard there is lots of activity there with GDAL 2.0 coming soon, integration of GDAL and OGR (raster and vector), new geometry types including curves, and more. 
  • I also missed out on most of the PostGIS talks this time but there was a whole PostGIS track and lots of discussion on topics like raster processing and spatial analysis. We use PostGIS extensively in large and demanding enterprise applications, and it's great.
  • One of my colleagues went to the workshop on PySAL, a python library for spatial analysis, and was very impressed with its capabilities.
  • A couple of cool open source 3D globe applications for iOS and Android are WhirlyGlobe-Maply and glob3mobile.
  • I took a side trip with Jeff Johnson of Aero Glass, whose advisory board I'm on, to visit ODG in San Francisco, who are one of the leaders in augmented reality glasses. Their latest hardware is really impressive. It currently sells for around $5000 but they are planning to bring out a more consumer focused model this year which will be significantly less expensive.
  • The ODG side trip was great, but unfortunately it made me miss the keynote from Planet Labs, who are doing very cool things with tiny imaging satellites. Frank Warmerdam of GDAL and OSGeo fame is working there these days.
  • Linda Hecht who was formerly Chief Marketing Officer at Esri, and had worked there for 28 years, left them recently which I found interesting. She attended FOSS4G to find out more about the open source world, and left suitably impressed:

Summary

So all in all, FOSS4G was another great brain-filling event, lots of interesting things to research further! All the presentations were recorded, so I encourage you to check those out, they are starting to appear on youtube. I think that the plan is that there will be links from the FOSS4G NA schedule pages too - click through on individual talks to see more details, and a number of those pages also have links to speakers' slides.