Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw
 
PerlMonks  

Re: Too much black magic

by starbolin (Hermit)
on Jul 06, 2008 at 01:07 UTC ( [id://695770]=note: print w/replies, xml ) Need Help??


in reply to Too much black magic

Unfortunately the problem is not unique to your situation nor to only C::R and S::U. There probably isn't a perl programmer who hasn't struggled with omissions in one or more modules. On a larger scale, any engineer struggles with interoperability of parts.

In my life as an EE I made daily decisions such as: "A and B don't work together, do I, keep A and abandon B, keep B and abandon A, or do I modify the circuit to establish de-coupling between the parts." The most important criteria often lay in whether the respective vendors were co-operative in resolving problems. This co-operation, unfortunately, usually depended on the size of our business with the vendor.

Experienced designers knew, if you designed too many wis-bang parts into the design, these interdependencies would kill your project, or your health. So we had rules to avoid this situation. "Use only parts with multiple sources." "Don't use 'wis-bang' parts." "Avoid 'single-product' vendors." and important for the OP "Use only one 'wis-bang' part per design and surround it with 'jelly-bean' parts. The idea behind these was to prefer parts that had cross-licenses agreement between vendors and thus a stable interface specification. It also assured that vendors were competing on price and reputation, thus ensuring their interest in interoperability. The last rule ensured that problems were isolated to one vendor with which you, hopefully, had some clout.

FOSS has only a loose coupling between vendor and customer. The writer of a module often has no financial interest in the success of his code. Thus we rely exclusively on reputation to encourage vendor interest. ( And that's not a very big stick. )

The conclusion to all of this is that we have little control over the interoperability of the modules we choose. Including multiple modules without research and testing will assuredly result in interoperability problems. We need to choose carefully and to shun modules that are too tightly coupled to the core or too each other. We have to choose modules with responsive authors and/or large user bases. Authors here often admonish us to "Don't reinvent the wheel." This is good advice but there is also a valid need for decoupling pulling us in the other direction. We need to also admonish others to: "Pick only tested modules with proven track records." "Use only one 'wis-bang' module per design." "Check for and avoid close module coupling." "Avoid modules from unresponsive authors."

I know these assertions are going to get me into trouble, web forums having a low tolerance for assertions, but I think we need to promote some standard cautions to temper the standard "Don't reinvent the wheel." admonition.


s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s |-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,, $|=1,select$,,$,,$,,1e-1;print;redo}

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://695770]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2024-04-19 02:23 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found