There are good and bad things about reinventing complex applications just as there are good and bad reasons to do so.
Some Bad things
- *Sometimes* Wasted effort as far as the community is concerned. Though often this is not a programmers main concern
- Confusion and interoperatability. When there are many semi popular ways to do something then it becomes MUCH harder to get things to play together nicely. Everything outside of bits and gates is an abstraction and if everyone uses a different abstraction well...
- Potentially many differently defective spacecraft
Some possibly good things
- Innovation.
- Learning. Always good.
Sometimes, depending on the wheel, it is easier to just code your own then decipher someone elses. I would simply suggest if you are going to rebuild the ship, then take the time to examine what is wrong with the other solutions. If you can't fix the popular means, make a version that solves these problems and is flexible enough so that the next person can bend your vision to their needs and avoid having to do the same. Bonus points if you can make transition from popular existing solutions easy.
I've run into this with templates. I have yet to find any that work the way I think a templating system should work. Many do 99% of what I want but it's that 1% that can't be retrofitted that is the deal breaker. I also find many have syntax and implementation that just runs against my grain of thought. These issues are easier to deal with as translation is a possible solution.
I've been working on one that is radically different on and off (and over and over) for quite a long time. I keep refactoring it over and over and over, trying to get the right balance. (It's not just a templating system actually but rather a whole system of components for easing and securing network programming UIs) Hopefully when it's completed it will be done right (In my book) and once and only once and extensible (A lofty goal..) so no one else has to do the same (An impossible goal I admit but, aim high right?).
-Lee
"To be civilized is to deny one's nature."