-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hello.
I'd like to discuss my plans for 0.2 release for the validation dashboard a.k.a. launch control.
I would like to have a roughly two-week development cycle. This will ensure that we don't get carried away with large features taking lots of time without planning them ahead of time. I would also like each release to feature some user-visible improvements (features or bug fixes) as well as backend infrastructure improvements (better tests, better internals, new feature elements that take >1 cycle to develop).
I would like to reuse the proposal laid out by James Westby that defines how the infrastructure team plans future work and mix it a little with the original blueprint for the dashboard. What this means in practice is that each release should bring us closer to the feature set outlined in the blueprint _and_ introduce features/changes requested via the stakeholder process. I think this will work fine until we finish all of the features originating in the blueprint.
For the upcoming 0.2 release (currently scheduled exactly two weeks after 0.1) I'd like to focus on the following topics:
* Support for migrations south. South allows us to change the database on upgrades and plays nice with distributed version control. South is like rails migrations and is in general a very good thing. Without it we will soon start rolling out upgrade scripts that are just an ugly reimplementation of the idea.
* Support for background (asynchronous) bundle processing. Currently the bundle is deserialized immediately during the put() request. This does not scale very well and we should really do this in the background. There are several solutions on how to implement background processing for Django apps and I'd like to select something _really_ simple until it is obvious we need more. There is a project called django-chronograph that essentially allows to use cron-like tasks inside django. Chronograph itself is triggered from cron (or some other external cron-like program) and then proceeds to process jobs defined within django apps. For this cycle I'd like to add chronograph dependency and move deserialization into a periodic task.
* Better information about failed bundle imports. Currently there are some issues with the way databrowse application works (it seems to choke on OneToOne fields and GeneralRelation fields. This makes it impossible (AFAIR) to navigate to bundle deserialization information from the bundle itself and in general makes it hard to know what went wrong. I'd like to provide a basic set of views that show streams and bundles and provide a clear indication of deserialization errors there. This would be based on existing work on bundle stream views so it should fit in this cycle.
* Better unit tests for django views. As discussed with James Westby we should have several approaches to each view we offer. We should test for the contents of the django rendering context (the data that goes in the template) _and_ scrub some of the HTML output to see we didn't make a typo in the template or other similar issue. In general we should add the front-facing view tests and I'd like to spend some time on this.
* Initial work for JSON validator. There is a branch with generic JSON schema validator. I'd like to finish this branch (add several missing validators we need) and make it possible to include this validator in 0.3. It would change how we do deserialization from JSON to the database. It would no longer require us to use launch_control.models.* (so less dependency on client side code, something we wanted to have to be able to release them separately in the future). It would also dramatically improve the error messages. I would not merge the branch into trunk yet but rather merge several extra branches into the .json-schema branch itself and get those reviewed as usual.
* Initial support for user authentication. I would like to add sign-in/sign-out elements to the web UI. This will allow us to have private/team streams and while not exciting in the short term it is a required step to getting full support for private (and non-anonymous) test data in the system.
A roughly identical list of planned changes is also here in my redmine instance: http://suxx.pl/redmine/projects/launch-control/roadmap
That is all. Please tell me what you think.
Best regards Zygmunt Krynicki