Succeeding Means Letting Go: A Response to David Eaves
BY Tom Steinberg | Thursday, July 26 2012
Tom Steinberg is director of mySociety.
Like almost anyone who runs any organization, I want my colleagues and I to be acknowledged when we do good work. The fact that we work for an NGO — mySociety — doesn't for a moment mean that we are lacking in a full compliment of all the normal human failings — vanity, greed, pride etc etc.
I am confessing these failings as a preamble to discussing David Eaves' claim, here on techPresident, that mySociety's hyper-nascent Components strategy is more about getting other people to use our code than it is to foster wider civic innovation.
Rhetorical question number 1: Do I want people to use code mySociety writes to help them build civic sites more quickly and successfully? Absolutely.
Rhetorical question number 2: Do I want people to use only code mySociety to do this? Absolutely not.
But how to prove this? How do you know I'm not just pretending to be open and inclusive, before trying to dominate the market like Microsoft or Google? After all, I did just tell you that I was human — and humans lie, on average, just about all the time.
Fortunately, we have already embarked on a major project which I hope might persuade readers that total world domination is not our goal. I apologize to David for the fact that he hasn't been told about this project before now.
Over the last few months we have been coordinating with Ciudadano Inteligente of Chile so that they — not mySociety — can build one of the next key Components. They've chosen to build a Component for handling legislation, which they're calling Bill-It. They're not just building it for love — they need it to underpin a new political website they're building. There's no money changing hands here either, they just want to use their own skills to build something useful for other people at the same time as they solve their own problems.
In this case, what 'making Bill-It useful for other people' means is:
a) designing it so it uses the API of PopIt, a Component mySociety is building to store lists of people; and
b) so that their own component is re-usable by other people, for storing legislation.
The very fact that our two organizations have decided to build components and make them interoperable is, I think, the best reassurance I can give to David Eaves. It isn't easy to coordinate two different tech teams almost on different sides of the planet, especially when both teams are being asked to take no shortcuts or quick hacks.
To be clear — we've actively chosen to tie our selves to the masts, and do the development in a way which is intentionally inconvenient for us both. The Components are intentionally being written in different languages (to avoid the perception that the Components are just for coders of one language), and by different people with different first languages, and they're only allowed to interoperate over REST. There's no back doors — no direct database access on the local machine. If something is broken or missing on the Component you're trying to plug into, the coders have to wait for the partner 10 timezones away to add it in. It's a massive pain — way, way harder that mySociety just building both pieces in house.
So why would mySociety or Ciudadano Inteligente choose to go through such self-imposed pain? It's because we believe that the only way that the Components can really thrive beyond our organizations is if they are truly interoperable over the web, truly owned by different people, and if they can handle massively varying political and cultural contexts. It is our goal that in the future any of the Components being used to underpin a website or app can be out and replaced by a clone that speaks the same API, but which may be built by a different group, in a different language. Interoperability and flexibility are everything.
In the next couple of years mySociety isn't going to build many Components — boundaries, people and speeches are all we have on our plans. We're not going to build many, because to make each narrow little Component really attractive, flexible and well documented, we're going to have to put a ton of work in. Not really sexy work, either.
Speeches, politicians and boundaries alone isn't anything like enough different kinds of data build big complex sites — we really need for other people to get stuck in, and to build components that talk using the same standards that we're working on with Ciudadano Inteligente. We're hoping to persuade our Polish friends at Sejmometr, who have the most amazing ninja civic coding skills, to choose a new Component, and to work with us to make sure that it can talk constructively to the other Components, written far, far away. Maybe components containing political donations, or criminal records, or share ownerships? We'll see.
So, to return to the self-interest aspect — what does mySociety really want from this? Well, I guess — and speaking only for myself here — I'd like some credit for recognizing that pointless code-replication is particularly bad in the civic sector, because there's so little money compared to other parts of the net. And, if we get lucky in future, and it all works out, I guess I'd like people to note that I was that guy who ran that organization that got all those different people to build components that really, properly talked to each other, and really made the whole civic hacking universe easier to get into. That would be quite enough for me.
Editor's note: Tom Lee of the Sunlight Labs has also posted a response to Eaves.