http://www.perlmonks.org?node_id=293548


in reply to Litmus test: It's ok to roll your own if...

It's always ok to write your own code. Duh!

But... that doesn't mean your code will be cleaner, smaller, faster or more reliable. In fact, you're probably going to repeat mistakes and/or re-invent features that at first glance you thought were stupid.

I'm constantly thinking my previous self was a moron for doing something obviously wrong. Then when I get back into the problem I learn that my previous self has made a design trade-off to solve an unobvious problem. What I really need to remember is that my *future* self is a moron and write better documentation...

On the macro scale: The free software world works on the basis of massive parallelism. Creating duplicate projects improves long-term productivity by allowing different projects to learn about different things. This avoids problems that overly connected fields (like modern science) have due to peer pressure causing everyone to move in the same direction.

Take an example close to our hearts. Perl, Python and Ruby all have very similar goals. Perl 6 tries to learn from them. If all those developers worked only on Perl 5, would Perl 6 be as rich as it is? Would there be as many minds working on the problem?

How about Xt, Tk, Qt and Gtk?

How about Linux and the BSDs?