WFS 3.0 Hackathon Results

I meant to do my write-up of the WFS 3.0 hackathon much sooner, but it’s been a busy few weeks. And indeed during that time the WFS specification just reached a significant milestone, with its Draft 1 release! So I thought I’d share some thoughts on the hackathon.

Scott Simmons, who organized the sprint on the OGC side, wrote up a great post summarizing all that happened. And there’s quite a few detailed notes in the wfs3hackathon github repo (perhaps too much detail on what we ate), along with a video recording of the final session.

From my perspective the event exceeded expectations. We had a suspicion that the fully open approach and RESTful + JSON approach of WFS 3 could attract more energy and enthusiasm from the developers who actually implement geospatial software. Though some had come across the WFS repository and found it intriguing many had not been able to really dig in and work with the spec. The hackathon created the space and time for a number of developers to try out the specification and give active feedback. Over 30 people showed up, with another 10 people participating remotely, with a number of new servers and clients. I wanted to highlight some of my favorites:

pygeoapi

The geopython crew showed up in force, with both local and remote participation, creating pygeoapi to implement the WFS 3 specification. It is is configured with a WFS 3 OpenAPI specification, and can already talk to a number of different backends. Tom Kralidis has stood up a sample server that you can play with to get an idea of the service and spec, and they’ve continued to work on it after the hackathon. I was able to easily download the source code and get it up and running.

GeoServer

I’m sure my positivity about GeoServer implementing WFS 3.0 is the pride of a parent seeing their child fully grown and doing cool stuff in the world. GeoServer as the first project I ever coded on, but I’m not involved in the project except to cheer them on. But I was excited that GeoSolutions participated remotely, helping to spearhead European participation. They put up a nice blog post on the experience, and drew attention to the next key steps with WFS 3.0, which are to really flesh out the extensions needed to meet established WFS workflows.

Go and WFS

I was also excited to see no less than three Go projects at the sprint. I’ve been seeing a lot of nascent geospatial Go energy lately, and it was cool to see people working on it. go-wfs, part of the Go Spatial github, has been implementing WFS 3 and giving great feedback to help refine the specification. Boundless Geospatial also worked on a WFS server aiming for scalable deployment on AWS. And Ian from Planet built a client for WFS in Go.

GDAL/OGR Driver

On the client side Even built an OGR driver for WFS 3 and got it working against three of the servers. Since a majority of geospatial software leverages GDAL/OGR to read formats this means that WFS 3 can enjoy wide support relatively early. There is still work needed to get it working with the latest changes from the spec, but it was great validation that in a couple days we could get servers and clients talking to one another.

OpenLayers with WFS3 Extension

Philippe Duchesne expanded his linked data portal to read various WFS 3 implementations and display them with OpenLayers. It was super cool to see online visualization of the services being stood up:

GeoServer WFS 3.0 displayed with Openlayers, try it yourself

Further Thoughts

I think the best part to me of the hackathon was that we got participation from mostly people who don’t routinely attend OGC meetings and telecons. Some work for organizations who are quite involved in OGC, but as developers they had never really had a great way to interact. Some had ‘given up’ on OGC but were excited to see the change of direction towards more JSON and RESTful approaches, and heartened by the fact that they could influence the direction of the specifications. And it was really cool to see how both major and minor feedback got incorporated in to the specification, with over 25 new issues and pull requests. And Clemens and Peter, the standard editors, did a great job of quickly improving the specification in response.

The core WFS specification is feeling quite solid now, so I’m hoping more organizations will start to implement and even more importantly start to build extensions and give feedback. I’ve got some further thoughts on the direction of the WFS 3.0 specification and indeed how the approach of the WFS working group is starting to influence the OGC as a whole, but I think I’ll save those for another post.