software release terminology
People shouldn’t be mucking around with software release terminology. I just read Rob Diana’s rant about the abuse of the term “beta” on the Internet on Mashable! and the terms really shouldn’t be as fungible as that.
The quick and dirty:
- alpha: Build and runs. Barely. Show-stopper bugs common. Sometimes runnable, but doesn’t actually do anything.
- beta: Functional software but buggy.
- gamma: Ready to go gold. Probably still has some insidious bugs that haven’t been ferreted out yet. Also commonly referred to as a “release candidate”
Anything beyond that is unnecessary. Delta is more commonly used to refer to quick bug fixes of already released software, sometimes synonymous with the z version in x.y.z terminology, since deltas are commonly associated with patches. Any other use of delta is confusing. Omega is, I suppose, equivalent to final release, but that’s also probably unnecessary.
As far as I can tell, just because it’s Web 2.0 doesn’t mean these definitions don’t apply. Releasing real alpha software as an accessible service is really asking for trouble. If there’s a showstopper in there that’s going to need an architectural change, you’re either going to have to jump through hoops to preserve your alpha-testers’ data, or you give them the finger and tell them “I told you it was an alpha!” On the other hand, I think it’s legitimate for Google to continue calling Gmail beta, because there may very well be some insidious bug lying in their code base just waiting for the critical mass of users and data to nuke everyone’s Inbox. That’s the problem with networked systems: you can’t easily trace all the paths through your code without actually releasing it to the real world. Most of the bugs tend to be related to (1) data volume (2) traffic volume (3) unintended/unforeseen interactions between components.
Somewhat humorously, medicine has a similar release cycle for pharmaceuticals:
- preclinical:
- pharmacodynamics: figuring out what the drug does to the body
- pharmacokinetics: figuring out what the body does to the drug
- absorption
- distribution
- metabolism
- elimination
- toxicity
- phase I: small trial on (usually) health subjects; pretty equivalent to alpha release software. You’re mostly sure that it won’t kill anyone, but you don’t know whether it will actually do anything, and you could still do some harm.
- phase II: larger trial that includes target subjects. Beta release. No obvious show-stoppers (i.e., instantaneous death), but lots of insidious side-effects. Actuall efficacy is tested. (Is the drug actually functional?)
- phase III: large, ideally, randomized clinical trial designed to test the new drug against the current standard of care. Release candidate: it actually does something, what it does is desirable, and no one has died. Even if the drug isn’t better than the current standard of care, if they can at least demonstrate non-inferiority, they can still go gold.
They now have a phase 0 designation, but this is almost like animal testing on humans, really, from what I can tell.