<i>My adaptation of esr's open source approach:</i><p><pre><code> 1. paint a picture of something really cool
2. deliver the smallest possible subset of that functionality, that runs
3. be guided by "bug reports" that request features to fill these *gaps*
</code></pre>
This only works for a "flat" project - that is, where each additional feature can be added as a module. This requires a concept that is "flat" and an implementation architecture that is "flat" (has places to add each feature.) If the concept is not flat (or unknown), or if the right architecture is not flat (or unknown), this approach doesn't work.<p>This helps explain the kinds of projects that have popular open source implementations: copies (of concept and implementations) and system software.