Twice I've heard Ezra Zygmuntowicz from EngineYard say that every great software project starts as a hack.
DHH said it like this:
The best frameworks are in my opinion extracted, not envisioned. And the best way to extract is first to actually do.
Linus Torvalds said it like this:
Nobody should start to undertake a large project. You start with a small trivial project, and you should never expect it to get large. If you do, you'll just overdesign and generally think it is more important than it likely is at that stage. Or worse, you might be scared away by the sheer size of the work you envision. So start small, and think about the details. Don't think about some big picture and fancy design. If it doesn't solve some fairly immediate need, it's almost certainly over-designed. And don't expect people to jump in and help you. That's not how these things work. You need to get something half-way useful first, and then others will say "hey, that almost works for me", and they'll get involved in the project.