Sunday, February 12, 2006

Release often: not always easy

Orbeon PresentationServer (OPS) 3.0 is finally out, and we are quite happy about that! But it took us a while to get there. For most of OPS's history (and before that OXF's), we have tried and often managed to stick to a "release early, release often" strategy, by aiming at releasing something stable every 4 to 8 weeks. We sometimes succeeded, sometimes not. However, between the last two stable versions of OPS (2.8 and 3.0), the gap was much bigger than usual: a little bit over 30 weeks.

There is of course an explanation for this fact: the task of rewriting the XForms engine almost entirely was daunting, more so than we expected. We not only had to design the client-server architecture (which we presented in its broad lines at XTech in May 2005 already, with working examples), but to implement it, write the server-side XForms engine, write the client-side functionality (with all the JavaScript fun), integrate it nicely with the rest of OPS, provide examples and documentation, etc.

During all that time, the code was never in a drastically unstable state. In particular, we managed to keep backward compatibility with our XForms Classic engine; we managed to fit the new XForms architecture very nicely into the Page Flow Controller (PFC), in fact simplifying existing concepts in the process; we also initially based the new XForms NG engine on a refactoring of our existing XForms Classic code, and now things work the other way around, with the XForms Classic engine leveraging what it can of the XForms NG engine.

We could of course have released some intermediate stable releases with updates to OPS 2.8 features, but those would have disrupted the development of OPS 3.0. Instead, we released betas: in mid-July, early September, and early December 2005, with time between releases of 18 weeks, 6 weeks, 12 weeks, and 6 weeks respectively. What is the difference between beta releases and a "final" release? Obviously, it makes a difference in user perception to call something "final" as opposed to calling it "beta". But we also had some objective measures, including a minimal set of features and bug-fixes we deemed absolutely necessary, as well as polishing of the examples and documentation.

With hindsight, it still looks like there was no easy way around the longer development cycle for OPS 3.0. But we can now aim at releasing stable versions more often again, because the bulk of the new XForms engine is in place and incremental updates are more reasonable to contemplate.

No comments:

Post a Comment