Citizen lawmakers: is Iceland the future of politics?

August 26, 2011 | 2 comments

Iceland's open-door government

Note: it’s been pointed out in the comments (and elsewhere) that the source article is full of inaccuracies. Here’s the rebuttal. Nonetheless, I think there’s strong interest in a new kind of democracy that takes its inspiration from the hierarchy flattening we’ve seen on the web. It’s an issue I’m still keen to explore.

My original post follows.

I’m intrigued by this opinion piece by the The South African Civil Society Information Service. It’s certainly true that Iceland hasn’t been making headline news despite its role in the current economic downturn. The governmental change they’ve been experiencing there has been off the radar for a lot of people, myself included – but it’s incredible, and deserves much more attention.

Background: Iceland moves away from the global financial system

Following deregulation of its banking system, Iceland’s foreign debt was around 900% of its Gross National Product, and when the financial crisis in 2008 killed off its three main banks, the IMF and the EU offered to take on the debt.

Elections were brought forward to April 2009, resulting in a left-wing coalition which condemned the neoliberal economic system, but immediately gave in to its demands that Iceland pay off a total of three and a half million Euros. This required each Icelandic citizen to pay 100 Euros a month (or about $130) for fifteen years, at 5.5% interest, to pay off a debt incurred by private parties vis a vis other private parties. It was the straw that broke the reindeer’s back.

The Icelandic Head of State refused to ratify this into law, and instead held a referendum, in which 93% of the population voted against repaying the debt.

A new constitution for the people, by the people, written in full view of the people

Defiant stuff already, but the best was yet to come: they also decided to write a new constitution, in a way that had never before been possible:

To write the new constitution, the people of Iceland elected twenty-five citizens from among 522 adults not belonging to any political party but recommended by at least thirty citizens. This document was not the work of a handful of politicians, but was written on the internet. The constituent’s meetings are streamed on-line, and citizens can send their comments and suggestions, witnessing the document as it takes shape. The constitution that eventually emerges from this

Bonita: a PHP template manager with lofty ambitions

August 23, 2011 | Leave a comment

I’m fed up of using the same PHP template pattern over and over in my web apps, so I decided to write it from scratch and iterate on some core ideas. And then open source it under an Apache 2.0 license.

The result is Bonita: a simple PHP templating engine. It’s definitely version 0.1, but I thought I’d put it out there now in the spirit of release early, release often. Future enhancements will include a static cache, simple functions to handle action tokens for XSS, and some stubs to do things like semi-automatically generate RSS and Activity Streams.

Isn’t PHP already a template language? Yes and no. Its origins are definitely as a template language, but these days it’s a perfectly good way to write fully-fledged web applications. After all, Drupal, WordPress, StatusNet and Elgg are all PHP-based. (Yes, the language is much-maligned, and certainly has its flaws, but it’s also much-used.)

Aren’t there already templating systems for PHP? Yes, but they’re typically designed for sites rather than apps. Bonita includes support for creating streams and automatically drawing PHP objects out of the box, as well as content post-processing and template plugins. Support for anti-XSS form action tokens is another example of a feature that really mostly makes sense for web app developers.

Why are you releasing this? By releasing this under an Apache 2.0 license, I get to continue using the ideas, but I also get to share it, and let the wider community help me build out the system. That seems like a more efficient model for development to me; it also sits better with me. (And, hey, if nobody uses it, the worst that’s happened is that I have a great backup of my code on GitHub.)

Are you releasing Bonita on behalf of anyone? No. This is my own code, and it’s not being released or endorsed by any other organization or entity.

Interested? Bonita’s GitHub project is over here.

Learn to program the Codecademy away

August 18, 2011 | 1 comment

I’m really taken with Codecademy, a series of free tutorials on learning to code. It’s incredibly simple, and you can take the first exercise without signing in.

I know quite a few people whose portfolio of skills could be enhanced with a little bit of coding; this is a great start for them. I’m not sure it really gets over the initial “eeurgh” factor many people have when they think about programming – but maybe it’s just not for those people. It’s certainly the friendliest coding tutorial I’ve ever seen.

Decentralized social networking using web intents

August 11, 2011 | Leave a comment

Connect with meI believe that web intents are the last missing piece for decentralized social networking. (Previously I’ve talked about creating a social web architecture using Activity Streams and OAuth; this builds on that idea.)

Picture this chain of events:

  1. I visit your website, and see that you have a “connect to me” button[1].
  2. I click the button, launching the “social-connect” web intent.
  3. If I have web intents, my browser “logs me in” to your website via OpenID, silently passing the URL of my identity site[2]. I never have to manually log in with a URL, which has been the main criticism of OpenID. (If I prefer, I can have my browser log in via Facebook, Twitter, Microsoft Live ID, etc etc.)
  4. If I don’t have web intents, your website falls back to prompting me to connect using any of its supported schemes.
  5. In the handshaking process, your site assigns my identity a unique token, or a unique token is obtained from my identity (depending on authentication scheme). Either way, you end up with an internal token that represents my identity, which both your website and my identity site know.
  6. My identity site determines the locations of your Activity Streams, RSS feeds, etc, in the usual ways.
  7. You receive a notification that I’ve connected with you, and can now place me in an access group via a visual interface. Think Livejournal’s friends lists, Elgg’s friends collections, or Google+’s circles. When you post new content, to your site, you can restrict it to any combination of those groups.
  8. My identity site periodically makes requests to your website for new content, signing it with my token.
  9. I read new content and activity from a central reader panel attached to my identity site.

Of course, technologies like Portable Contacts, OAuth and even FOAF can have a place here: this simply provides a loose connection mechanism for nodes. I also feel like the “social-connect” intent could trigger an OStatus subscribe action, although I’d like to see signed requests so that access permissions can be enabled.

Needless to say, web intents can help a great deal for other parts of the process, for example clicking on “share” or “comment” on a piece of content. I also think Creative Commons licenses have a part to play here when it comes to sharing and resharing content across the decentralized social web, but that’s a story for another day.

The connect to me button should be distinctive. You should see it and automatically know that you can connect socially with this website. I’m thinking something obvious and instantly recognizable, akin to the RSS icons, or the star that now ubiquitously means “bookmark this”. I’ve illustrated this post with a quick Sharpie prototype, but it’s not really meant to be a recommendation. (Nonetheless, I’ve shared it under a Creative Commons license.)

Your identity site could be self hosted, or it could be a Google Profile, a WordPress.com site, or any commercial profile. Needless to say, everyone can have more than one identity site, and there’s no reason why your identity platform couldn’t support pseudonyms, alter egos and access-restricted profiles.