I am asking this because I was working on a FOSS project for many months and few bad initial design decisions and I had to spend a lot of time rewriting a lot things, and basically the project has come to a dead halt because it just not possible to fix those things now !

I dont want to repeat the same mistakes again  :) I want to be more careful this time.

I just to know what the provable things and the best approaches for such projects - reinventing the wheel and repeating the same stupid mistakes is just not fun :)

:D