I am currently building a social bible app.
I open sourced my work on it, because I believe everyone should be able to freely access the bible, and I want to be able to build software that is shaped by the community that uses it.
So I made it open source.
I had a vision, I knew what I wanted to build.
I developed a (for my situation) pretty good release plan:
In this phase, the product is ready to use, and I open the registration via invite codes to a select number of people.
I frequently ask them to report bugs and improvements.
If the product is usable without major bugs, I transition into the next phase.
Now, I begin to polish the user interface and flow.
When that's done, I transition into the last phase.
Now everyone can register and use the product.
I write a release announcement.