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.
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.