Open Source Social Networking at the United Nations.

This project is about helping people at the United Nations do their job better, with the introduction of just a little technology.

Two years ago I was just starting to thinking about how to build a set of tools UNDP “Eastern Europe and Central Asia” office in Bratislava .. to help them collaborate better inside the organization, and outside to the many “communities of practice” (from biodiverstiy to AIDS to political corrpution) the UNDP participates in. Like too many groups, their primary collaboration method involved email threads with rotating casts of cc:s, and word doc attachments existing in a hundred inboxes in various states of revision. That’s a story too many know too well.

WaterWiki had shown a collaborative, open approach could succeed at the UNDP, and the aim was to extend to a general, open source, web friendly platform. In a fleeting conversation at FOSS4G 2007, rabble suggested I check out Crabgrass, “a software libre web application designed for group and network organizing, and tailored to the needs of the global justice movement.” Social networking, built on Ruby on Rails, developed by my old school friend Elijah Saxon (when we met again in person recently, we could talk about “14 years ago” .. yikes!).


Crabgrass met a lot of the needs .. easily share versioned documents, outside and across the corporate structure among ad-hoc groups, in a simple and friendly, personalized way. It wasn’t to look like an official UNDP site! So with the confidence in the Rise Up folks, I started working on the first open source project jointly developed by anarchists and the United Nations :). With some sadness, one of my first tasks was to add optional administrative roles to groups; yea, introduced authority to anarchy. Oh well, it was optional, after we developed a plugin architecture! Spent a lot of time integrating with UNDP internal systems .. their authenticaiton system, projects and documents databases, corporate taxonomy .. as well as things like WYSIWYG editing, email alerting, etc.

UNDP Workspaces launched this spring, and it’s now hosting almost 2000 users, and dozens of active groups. Nothing like the success of seeing a project get use.

In another fleeting conversation with Chris Fabian at the UNICEF Innovation Group, the most awesome group of geeks at the UN, I introduced Crabgrass. That set off a long running, fruitful collaboration between UNICEF and Rise Up. UNICEF has sponsored several rounds of improvements, and poured in lots of design thinking, to make Crabgrass usable for the many youth events they coordinate. UNICEF is a full partner in this open source project. Crabgrass is a much stronger platform as a result.

From there, Crabgrass has reached out to many other UN agencies and groups. Dan Scott and I attended Web4Dev in February, and Crabgrass caused a big stir. To be continued. If you have any need for private social networking, check it out.

True Open Source?

It could have been better. Unlike UNICEF, the UNDP approached Crabgrass in the same way as traditional, proprietary software procurement. Requirements lead to a deliverable, and the open source nature is not a direct concern. As a result, I think the UNDP has lost out on the indirect collaboration and leverage open source makes happen.

For instance, there were several features of interest to Crabgrass as a whole, like WYSIWYG. However it wasn’t planned to be tackled immediately by other developers, but it would happen. If the contractual process could account for opportunities like this, and be flexible on requirements, another feature could have resulted, with some features obtained for “free” from the commons. Because time was tight, the work I did on WYSIWYG was sufficient, but not complete enough for Crabgrass core. That work informed the eventual development of that feature in core Crabgrass, but there was some unneeded duplication.

And now that Crabgrass is delivered running as UNDP Workspaces, they aren’t grabbing new updates. There’s so many new features in just the past few months, and more planned .. the use of open source, but not the adoption of open source practices is a big miss. UNDP Workspaces is still a major innovative move, it’s just that there could be more.

I understand corporate policies have necessary concerns about security and maintenance, but the potential for open source means that large organizations should grapple with these issues, rather than put them aside. Open source is more than code, it’s a community.

And onword

Organizations are big diverse beasts. WaterWiki has been a UNDP project, and with a full embrace of openness in all its manifestations .. participation in open source, exposure and open data.

UNDP Global has had a problem in design called Teamworks. The innovative work of designing Workspaces at UNDP Eastern Europe inspired the development of a global platform. I’m very happy to see that they have chosen elgg, another open source platform for social networking. I had evaluated elgg in 2007 for Workspaces, and at that point it was still focused on classrooms, and in a transition period. Glad to see elgg has roared back, under the guidance of folks like Leonard Lin. As a PHP based system, it’s a bit more approachable by corporate IT departments. I hope the Teamworks project takes full advantage of the elgg community. If you want to get involved, consider applying to build Teamworks

Other agencies are getting the message too. Development Seed recently helped launch the World Bank’s intranet, based on Open Atrium. And of course Burning Man Earth is built with django and pinax. Open source and open community to help big organizations, hooray!

Peace Project
Flash map world map. Blue lines on white background. Ambient sounds. MouseOver country. MouseClick on country expands “Peace” in that countries language and alphabet. Second click display pronounciation. Fun part of project would be collecting all the translations.

MIDI – Flash
Create a framework where detailed data from a MIDI stream can be assigned to graphic elements in a visualization. So, each note, velocity, duration, etc. is accessible to the visualization. This would primarily be useful for “live” electronic music performances. I believe this level of detail could create some especially wonderful audio-video mappings.

No doubt some software, or set of softwares, has this functionality (I’d be interested to hear which). So, to do something different, I plan to code the framework so that MIDI events are accessible from Flash MX animations.

In order for Flash to receive MIDI data, in Flash I would use the XMLSocket interface. This is the only way to receive an external stream.

So, I’d code a small .exe proxy, to receive MIDI In (configurable and filterable), and send a lightweight XML stream to a socket. Depending on efficiency of Flash, the XML could be little more than , or it could break the MIDI down into its parts.

Within Flash, there would be a component to register callbacks to classes of MIDI events. These callbacks could then manipulate some part of the animation.

Accessing XML feeds
Want to access XML feeds across domains but don’t know how? Jarle Dahl Bergersen has a great article on his site which shows you how to use do it using redirects with versions for PHP, ASP, Perl, JSP and Python and also links to Mike Chambers method for doing the same in Server Side Actionscript. I think he’s got most bases covered 😉 [Flash Blog]