Ushahidi 3.0 Development Release

Ushahidi
Oct 30, 2013

If you've been following Ushahidi 3.0, you know we've been working on it for a while, and might have noticed that we've been fairly quiet about it lately. That's because the V3 team has been heads down these past few months working on getting it built and out to our community. It's finally time to show off some of what we've done. We're rolling out a developer release of Ushahidi v3(v3.0.0-alpha.1). 3.0c Grab the code on github, or download it here, then head over to the install instructions. Or just head over to the demo site and have a look. (If you want a quick way to spin up your own demo, try out our one-click deploy and install on Pagodabox)

Who this release is for

We've called this a developer release to emphasize that this really isn't production ready yet. This release is a chance for developers to try V3 out, have a look at the code and help us build it. For the rest of us: have a look at the demo, but don't deploy/upgrade just yet ;).

What to expect

With this release you should be able to get V3 installed, create and delete posts, view a list of posts and drill down to individual post pages. There's also a bunch of UI prototypes in the app, so you can see what things will look like, but they're still powered by fake data.

A mockup of Ushahidi v3

The base of the API has been done for a while, we blogged about it way back in April. This now includes all the main endpoints needed for V3, and authentication handling via OAuth2. The big achievement in this is that we have the basic UI built and working. There's still a lot to be done, and a lot that's not quite working, but the framework is there.

There are still a lot of rough edges you should know about, here's a breakdown:

What's working:

UI

Post listings - listings work and load real data. They're page-able and sort-able, but not search-able yet.

Individual post pages - these work and load real data. However they don't render custom form data yet, and the images are faked.

Post create form - well kind of. It should mostly work, but there are definitely still bugs with this.

Deleting a post

API

Posts endpoint

Forms, groups, and attributes endpoints

Media endpoint

Tags endpoint

Users endpoint

Posts revisions and translations support

GeoJSON support on Posts endpoint

Supports OAuth2 for authentication

What's not working:

Searching posts

Workspace menu - the menu is there, but none of the links do anything

Login

Register

Related posts - always shows the most recent 3 posts

Media - We're just using fake images at the moment, there's no way to upload new ones

Custom forms - these exist in the API, but there's no UI for managing them.

Looks like it works, but doesn't

There are a bunch of views built into that app that are really just design prototypes. They look real, but they're not powered by real data.

Sets listing

Set details

Editing posts

Adding posts to sets

Authorization (aka. why does it keep asking me to 'Authorize This Request'?)

Our authorization is currently a quick hack. The JS app hits the API directly, and this means it has to use a standard OAuth authorization flow. At the moment thats a plain unstyled bit of UI: the ugly 'Authorize This Request' screen. On top of that the default token time out is only an hour - so you'll often hit the authorize screen quite a few times while developing.

This is temporary, we're working on a real solution, but for now please bear with us.

How to get involved

Download and install Ushahidi 3.x

Get a development build

Pick a feature to work on (Check out our list of small tasks to get started with and our v3 roadmap)

Follow our dev process to submit changes

Join in discussions:-

Sign up on the mailing list

Join our skype: add robbie.mackay(or any other ushahidi team member) and ask to be added to the dev chat

Some technical details

The API

We've talked about this in detail before.. so here's the quick summary

RESTful API

HATEOAS style links between API calls

OAuth2 authentication

GeoJSON support directly in the posts API

Using our own API to build the frontend

Frontend Architecture

The V3 frontend is a javascript app built on top of the API. We've used a lot of other libraries and tools to get things moving quickly:

Backbone and Marionette JS - These provide the main framework for the application, they handling routing, fetching data and rendering HTML

SASS and compass - these provide us with a smarter, better CSS

RequireJS - this handles async loading of all our JS files and lets us split things up into modules

Grunt - helps to automate some of the frontend dev: building SASS files, and building optimized RequireJS files.

Kohana Media module - this handles actually serving all the CSS/JS/images/templates to the browser. We're using this to allow media files to live within Kohana's cascading file system.

Leaflet - the mapping library we're building on to render GeoJSON from the API

QA and testing

With V3 we're pushing ourselves to use test-driven development. We're using PHPUnit and behat for tests and we have a QA team working on test plans and test cases to find bugs as we work. These plans and test cases have already been published on the wiki.

Nairobi based? Join us on 6th November, 2013!

We're hosting a meetup at the iHub on 6th November, 2013 between 5.30 p.m and 6.45 p.m to showcase some of this stuff to our Nairobi community. We will do our best to make it available for our global community to join via a Google Hangout, but this is pending. We promise to record it ;)