18 5 / 2012

Blocks of work in our future

by edmundvonderburg

On Monday I’m joined by a couple of GSoC students on the PopIt project. Hurrah!

These are some of the big blocks of work that we’ll be dividing up and tackling:

Representing partial dates. In the past we’ve done this using django-date-extensions which is a bit of Django code that lets you leave the day or month field empty (written by our very own Matthew). There are some issues with this approach (eg how do you represent Q2 of 2008, and how do you sort easily asc and desc in the db). So another approach is needed and I’m thinking that an abstraction that has a start and an end date would probably work well. Perhaps. Needs more thought, but it is something that PopIt will need.

Very simple image resizing proxy (should be in a new repo so we can release it as an npm package for others to use). See this previous post for the background to this. Check there isn’t one already.

Code that lets you edit the data client-side via the API. Probably based on Backbone This is one of those easily described tasks that is actually huge. Will also probably involve quite a lot of interaction with mySoc’s designer Jed. I’ve got some ideas about how to make this a really elegant thing.

Schema updates. MongoDB is schema-less - but this doesn’t mean that our data is. We’ll need some way to update the data as we change the way that it is stored. I’m thinking that we’ll embed a schema version in the data and then can either lazily update it as we access it, or more likely have a script that runs over all the data updating it. We’ll want some sane way to store and manage these change sets. Oh for a MongoDB version of Django’s South :) Again probably releasable separately as an npm module I hope - perhaps there is one already?

Code documentation - I’ve not written nearly as much as I should have. Naughty me. I’m guessing we’ll use something like JSDoc - as suggested in Google’s JS style guide (actually we should probably try to apply most of that document). This is more of an ongoing task that will mostly fall to me for the existing code, but we should do it as we go for the new stuff. Just like the tests.

Migration Tool - this is Dominik’s first task. This is to help people get data they already have into PopIt. Should be easy enough for anyone to use - if you can program you should use the API instead.

Ops - deployments, backups, restores - that sort of thing. We have a sysadmin joining the mySoc team soon - no doubt he’ll have plenty to say on that. I’m really bad at sys admin.