In the previous blog post we explained why we think Open311 is a good idea. In this post we’ll explain what it actually does.
Open311 is very simple, but because it’s fundamentally a technical thing it’s usually explained from a technical point of view. So this post describes what Open311 does without the nerdy language (but with some nerdy references for good measure). At the end there’s a round-up of the terms so you can see how it fits in with the actual specification.
We’re using an unusual example here — a blue cat stuck up a tree — to show how applicable Open311 is to a wide range of problems. Or, to put it another way, this is not just about potholes.
So… someone has a problem they want to report (for this discussion, she’s using a service like FixMyStreet).
There’s one place where that report needs to be sent (in the UK, that’s your council). That administrative body (the council) almost certainly has a database full of problems which only their staff can access.
I have a problem :–(the “client”
I fix problems!the “server”
In this example, FixMyStreet is an Open311 client and the council is an Open311 server. The server is available over HTTP(S), so the client can access it, and the server itself connects to the council’s database. In reality it’s a little bit more complicated than that (for now we’ll ignore clients that implement only part of Open311, multiple servers, and decent security around these connections), but that is the gist of it.
Although it’s not technically correct to confuse the client with the user, or the server with the council, it makes things a lot easier to see it this way, so we’ll use those terms throughout.
To start things off, the client can ask the server: what services do you provide?
Until the client has asked the server what problems it can fix, it can’t sensibly request any of them.
What services do you offer?
POT: fix potholes
TELE: clean public teleports
PET: get pets down from trees
JET: renew jetpack licenses …
FixMyStreet can use the response it gets from such a service discovery to offer different categories to people reporting problems. We actually put them into the drop-down menu that appears on the report-a-problem page.
In the Open311 API, this is handled by
GET Service List. Each service has its own
service_codewhich the client must use when requesting it. Note that these services and their codes are decided by the server; they are not defined by the Open311 specification. This means that service discovery can easily fit around whatever services the council already offers. The list of services can (and does) vary widely from one council to the next.
Some services require specific information when they are requested. For example, it might be important to know how deep a pothole is, but it’s not relevant for a streetlight repair.
Tell me more about the PET service!
I can get pets down from trees, but when you request the service, you *must* tell me what kind of animal the pet is, OK?
In the Open311 API, this is handled by the
GET Service Definitionmethod. It’s not necessary for a simple Open311 implementation. In fact, it only makes sense if the service discovery explicitly told the client to ask about the extra details, which the server does by adding
metadata="true"to its response for a given service.
Requesting a service
This is where it gets useful. The client can request a service: this really means they can report a problem to the server for the body to deal with. Some submissions can be automatically rejected:
My hoverboots are broken :–( I need BOOT service!
404: Bzzzt error! I don’t fix hoverboots (use service discovery to see what I *do* fix)
Hey! Blueblue is up a tree! I need PET service (for cats)!
400: error! You forgot to tell me where it is.
If the report is in good order, it will be accepted into the system. Open311 insists that every problem has a location. In practice this is usually the exact position, coordinates on planet Earth, of the pin that the reporter placed on the map in the client application (in this case FixMyStreet.com).
I need PET service (for cats)! Blueblue is stuck up the biggest tree in the park :–(
200: OK, got it… the unique ID for your request is now 981276
In the Open311 API, this is handled by
POST Service Request. You need an API key to do this, which simply means the server needs to know which client this is. Sometimes it makes sense for the server to have additional security such as IP address restriction, and login criteria that’s handled by the machines (not the user).
Listing known requests
The server doesn’t keep its reports secret: if asked, it will list them out. The client can ask for a specific report (using the ID that the server gave when the report was submitted, for example) or for a range of dates.
Did anyone ask you for help yesterday?
Yes, I got two requests:
request 981299: TELE dirty teleport at the cantina (I’m waiting for a new brush)
request 971723: POT pothole at the junction of Kirk and Solo (I filled it in)
In the Open311 API this is handled by
GET Service Request(s). The client can indicate which requests should be listed by specifying the required service request id, service code, start date, end date or status.
Does Open311 work?
Oh yes. On the Open311 website, you can see the growing list of places, organisations, and suppliers who are using it.
The technical bit
In a nutshell: Open311 responds to HTTP requests with XML data (and JSON, if it’s wanted). There’s no messing around with SOAP and failures are reported as the HTTP status code with details provided in the content body.
You can see the specification for Open311 (GeoReport v2). It doesn’t feature blue cats, but if you look at the XML examples you’ll be able to recognise the same interaction described here. And remember the specification is an open standard, which means anyone can (and, we think, should) implement it when connecting a client and server in order to request civic services.
In the next blog post we’ll look at how FixMyStreet uses Open311 to integrate with local council systems, and explain why we’re proposing, and utilising, some additions to the Open311 specification.
Illustrated especially for us by René Carbonell.
The Internet has thrown up a host of challenges for governments, large and small. Most people are familiar with the problems presented by issues like hacking, but there is another challenge which probably worries local governments just as much.
The challenge is this – how can a local government cheaply and efficiently cope with the fact that the public wants to request many services through a rapidly expanding plethora of different channels – phones, websites, email, apps, and Twitter? And how can it keep control of costs when new channels are being invented all the time?
The good news is there’s an answer that can prevent each new channel leading to ever-greater costs – a free technology called Open311. The bad news is not many people know it exists, let alone how to use it, or how it works.
In this post, and two more to follow, we’ll explain how Open311 can help governments (and citizens), how it functions, and what mySociety is doing to make Open311 work a bit better.
Background – the status quo
At mySociety, we’ve been running services for years that send messages of different kinds to government bodies, on behalf of our users. Since the very beginning we’ve always been keen that any public servant or politician who receives a message via one of our systems gets it in a familiar form that doesn’t require any special knowledge or training to read or reply to. That’s why for the first few years FixMyStreet sent all its problem reports via email, WhatDoTheyKnow sent all its FOI requests via email, and WriteToThem sent all its letters to politicians via email and fax (remember fax?).
However, despite the fact that reading and responding to emails doesn’t require governments to procure any new technology or any new skills, these days this approach can clearly be bettered. Today, an email report of a broken paving slab will typically be received by a public servant working in a call centre. This person will normally cut and paste text from the email into a new database, or into a new email, before dispatching it for someone else to consider, and action.
Now, imagine that instead of this, a problem report about a broken paving slab could be sent directly from a citizen and placed into the electronic to-do list for the local government team who fix paving slabs. This would do more than just cut costs – it would make it much easier for the citizen to get sent a notification when their problem is marked as ‘resolved’ in the official database.
This is not an original idea. The team at mySociety are not the only people who think that enabling citizens to directly slot requests, messages and problem reports into local government ‘to do’ databases is desirable. In the USA a group of civic minded technologists at OpenPlans were concerned by the same issue. They decided to do something about it – and they launched a project under the banner of Open311.
In the USA a number of cities have non-emergency government telephone helplines, accessible at the phone number 311. As a consequence ‘311’ has come to refer to more than just a phone line – it has come to mean the entire process of handling service requests from citizens around a whole range of non-emergency issues, from garbage to noisy neighbours.
To the ears of some American public servants the name ‘Open311’ consequently conjures up an image of a better, nicer more ‘open’ way of handling such non-emergency requests from citizens.
So what is Open311?
Beyond a brand, what is Open311? The answer is simple: Open311 is standardised way for computers to report problems (like potholes or fallen trees) to the computers run by the bodies that can fix them (like local governments or city departments). It’s an open standard that was started by the lovely people at OpenPlans, and which is now slowly iterating with the help of people inside and outside of governments.
In other words, Open311 is the mechanism through which citizens can slot their service requests directly into the computerised ‘to do’ lists of local government staff, and the way they those citizens can get back progress updates more quickly and easily.
Why is an Open Standard a good thing?
An open standard is just a way of communicating that anyone can implement it, without paying any money for permission to use the technology. The good thing about open standards is that once several technology systems start using the same ones, different systems from different manufacturers can talk to each other. When you phone someone else’s telephone, you are using an open standard – this means you don’t have to have the same brand of phone as the person at the other end.
What this means for a government is that if you can make your database of pothole reports speak to the outside world using Open311 then you don’t have to worry if reports are coming from two, ten or a thousands different websites or apps. You just run one system and it copes with all of them. This is not actually a new idea at all – local government call centres don’t worry what telephone network people are phoning from, or what brand of phone they are using.
However, it is a new idea in the realm of government IT systems for storing things like pothole repair requests, or school-admission applications. Traditionally these systems have not been set up to speak a common language with the outside world. Unfortunately, this failure to speak a common language has not always been by accident. Unscrupulous suppliers will sometimes intentionally set up systems so that the government has to pay extra money if they want any new channels to be added. Using Open311 is both a way to lower your future costs, and a way to make sure your current supplier can’t lock you into expensive upgrades.
Isn’t opening our systems to the outside a security nightmare?
Open311 is not about opening up private data, such as exposing the home addresses of vulnerable children. Open311 can be configured to open up government systems where that is appropriate, and everything that needs to stay private will stay private. There are no fundamental security problems to using an Open311 system.
Is this just about pothole reports?
No. Open311 isn’t limited to street-fixing services like FixMyStreet, even though that kind of problem is where Open311 started. As more and more public bodies offer their services online, they all face the same problem of spiralling costs as the public demands access through more and more diverse channels. In the future it should be possible to renew parking licenses, pay local taxes and do other complex transactions via Open311. But for today we encourage everyone interested to start at the simpler end of the scale.
How does mySociety use Open311?
We will still happily connect FixMyStreet to systems that don’t use Open311, but we always explain to clients that Open311 is the most desirable way of connecting their new FixMyStreet deployment with their current problem databases. We even offer lower prices to governments who use Open311.
We offer lower prices this partly because our costs go down, but also because we want to leave local governments with street-fault reporting systems that can connect not just to FixMyStreet, but to any new services in this area that emerge in the future. If Google maps or Twitter suddenly add street fault reporting, why should the local governments have to pay more money to handle those problems, when it could get them for free using Open311?
In short, we see Open311 as a solid foundation for building local government services without locking our clients into a relationship with mySociety as suppliers. In future we will also recommend the use of Open311 for services like ‘Please send me a new recycling bin’, ‘Please tell me what jobs you have open’ and ‘Please answer this FOI request’.
In the next post we’ll cover how Open311 works in a bit more detail (but still as clearly as we can), and in a third post we’ll explain how our work with FixMyStreet for Councils has led us to propose some improvements to the Open311 standard.
Photo by Rupert Ganzer (CC)