Perl: the Markov chain saw | |
PerlMonks |
Re: Too much black magicby starbolin (Hermit) |
on Jul 06, 2008 at 01:07 UTC ( [id://695770]=note: print w/replies, xml ) | Need Help?? |
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}
In Section
Meditations
|
|