I can't forget to mention a Larry Wall frase:
We can't forget that reinvent the wheels is important to create a variance of codes, to create options, like in a genetic enverioment. And us, the users, will make the selection of what will live.
For example, when I started to work with XML and Perl, I can't find any tool that work like I want, since I always want tools that are easy, direct and powerfull. Soo, Perl in the time already have a lot of XML handlers, but I started to do my own, with a different approach to work with XML. Today XML::Smart works exactly as I want, and has much more than I can imagine when I start to build it, since the community always make good contributions. Soo, XML::Smart today is a tool that enable any Perl user to use XML, even if it don't know much about XML. Also I have got good reviews of it, including from IBM, that is the main creator of XML by the way.
Soo, if I can't find a tool with the resources that I want and the architecture that I need, yes, I will build my own. But before start building another CPAN module I always take a look around, including the source of what I find to see if they are in the right architecture, than I decide, to use it, contribute to it, or start a new module.
Soo, I have reinvented some wheels:
Created it because I can't find a Mail sender based in SMTP (platform independent), that don't need big dependencies like libnet, that has authentication, and is able to send TXT & HTML messages, attachments, etc... All in one package.
Well, after wait/search 1 year for a Pod 2 HTMl tool that handles index, css, and enable personalizable outputs, I stop to wait and build one. Soo, now I can have nice and well HTML builds on the flight, where I also can set my own events, and handle links (L<>), codes (VERBATIN), and all the POD syntax without care about the HTML generation, entities, URI links, etc...
This actually wasn't a new wheel, since I really can't find something that do that. I found Perl6::Classes, but it doesn't work very well, since is very easy to break the filter with complex Perl codes. But this is a bug of Filter::Simple and Text::Balanced, where I also make some work around to fix them on Class::HPLOO. But Perl6::Classes also have a complexer syntax, it isn't simplier as I want/need, since Class::HPLOO was designed to make the OO development faster and similar to Java, since my team work a lot with Perl & Java at the same time, and I was tired to listen the Java folks to disturb me about the Perl syntax for OO.
Soo, now I have Class::HPLOO that make the development of new modules and classes for development of systems much more faster and easy. Also I can have Perl developers that are not soo experts on PerlOO working with 100% OO codes. And the Java folks are using much more Perl now, actually they think to build in Perl before to think in Java solutions.
Let's mention Larry Wall again:
"I fill computer programmer not as something it has to do as computers, it has to do as humans. It's like, ok, I will going to make this easy to the computers or for ther person envolved?".
Soo, I think that XML need do be easy and simple to use and generate, since if it's not simple and direct, it won't make it job: "Be a language that integrate easy different applications and architetures.". Before XML::Smart I was really thinking that is much more easy to create our own formats, now XML rox.
Soo, if I think that I can make something better, yes I will, since no one is oblicated to use it, only to love it! ;-P
Graciliano M. P.