in reply to On waiting until a world becomes a better place...
What I've done is first scope out the competition. That is, I check what CPAN has to offer, and maybe check out what features and limitations they have. If I can shoe-horn it into what I need, I'm done. If it fits comfortably, even better.
Otherwise, I decide how much change it needs to fit. It may need some architectural changes, or they may be superficial. I evaluate this, decide how long it's likely to take if I ask the author to add those features. Then I figure out how long it would take me. Here I have two choices: rewrite, or extend. With a rewrite, I obviously place no dependancy on the original module(s). With an extend, I derive off the original module, and override as I need.
Of course, there are modules whose basis for existance is extending, such as CGI::Application. That's not a deficiency in the design, that's a purposeful design (which I call "framework" - but I don't know if that's the technical Comp Sci term). I really like frameworks. They say, "There is no such thing as a fleshed out product in this area, so I'm just going to help you do it yourself." These "fit" much better since they were designed for flexibility.
Generally speaking, I end up down the "rewrite" path all too often because I end up with no time (as in span) to wait for things outside of the frameworks.
|
|---|