Thursday, December 6, 2012

plainbox 0.2 released

What is plainbox?

Plainbox is a re-implementation of checkbox that is easier to maintain, understand and embed into additional programs. Checkbox is a tool (launchpad project entrywiki) for testing hardware that Canonical uses to work with vendors for hardware certification.

Why the rewrite?

We chose to rewrite our code because it grew very hard to maintain. The original implementation scaled for many years with additional features but was very hard to understand and difficult to test. We've came up with a much more plain approach that will get the same job done in a more maintainable, testable and practical manner. Plainbox is highly testable, tested and documented (sadly we don't have a public web-clickable docs but do read the source code please!) and we're just getting started!

How do I get it?

Plainbox started out as a separate repository but it has now been integrated into the lp:checkbox repository as a sub-directory. You can get the code directly and look at the associated README.md file. You can also use our checkbox-dev PPA and install the plainbox package directly. Lastly if you're into python you can also grab plainbox from pypi.

What can plainbox do?

Currently plainbox is mostly interesting to people that are into testing and have been using checkbox in the past. Plainbox is already much better at some things (notably error diagnostics, understanding checkbox jobs, detecting dependencies) and entirely lacking at others (no support for saving data back, no GUI, no support for sudo-elevated jobs, a few quirks in the checkbox requirement evaluation system). We support most of the jobs that are in checkbox and by the next version we should really support all of them (maybe except sudo-elevated jobs, those may need some more work to get done properly). 

Plainbox can run automatic and manual tests. It supports advanced dependencies where a test (something we also call a job for technical reasons) can depend on successful execution of other tests. Plainbox can also limit a test to a machine where certain hardware or software is installed via an extensible and powerful resource system (where only the machine with the appropriate resources will execute certain tests). Plainbox (via checkbox) comes with a large library of real-world hardware testing components that can be used to create both generic and very specific solutions).

What's coming next?

In the next few quick releases we want to get all the existing jobs supported properly with simple but powerful command line tool that could allow us to replace checkbox with plainbox in certain scenarios. We have an ongoing project to redesign the UI without the limitations that the original implementation carried but it will take us a while to get to a working prototype.

You can help!

if you are interested in testing, have been using checkbox in the past, want to review our code and point out issues, want to build some custom tools and are looking for software components come and talk to us in #ubuntu-quality on IRC (just ask for plainbox or checkbox and we'll get back to you!). We're a great, friendly team to work with and we would love to see you interested in this topic.