I have been preaching the software design methodology where you release early and release often. After each release, you add just one new feature at a time and then release again. This ensures that you always have a recent working demo available online while you work on the next feature. This is ideal for Open Source projects.
I have seen this called the "spiral", "component assembly", or "incremental release" design lifecycle. From what I can tell from this recent About.com article, it is also called "evolutionary", "emergent", and "continuous" design. Is it all the same thing or are there subtle differences?
Regardless of what it is called, I think it is a good way to go.