There was a GPL project once to create a Mathematica style numerical programme - It never even got beyond the design stage. When I looked through the mailing lists there were tons of people all giving their opinions on how the system should be designed, but no-one ever took the inititative to start writing something. As a result everyone eventually lost interest in a project that was clearly going nowhere.
There's a subtle reason that programmers always want to throw away the code and start over. The reason is that they think the old code is a mess. And here is the interesting observation: they are probably wrong. The reason that they think the old code is a mess is because of a cardinal, fundamental law of programming:
It's harder to read code than to write it.
This is why code reuse is so hard. This is why everybody on your team has a different function they like to use for splitting strings into arrays of strings. They write their own function because it's easier and more fun than figuring out how the old function works.