# from David E. Wheeler
# on Thursday 29 January 2009 15:06:

>As I said in my previous email, if I'm installing your code, I'm going
>   to be running it, anyway. So why can't the build script be written
> in Perl?

Well, that's the wrong argument.  Sure, running arbitrary code requires 
more trust than not, but structured data can be queried to the answer 
for a given environment regardless of the environment in which the 
query was run.

So, arbitrary code would check $^O eq 'MSWin32', or possibly something 
silly like "-d 'c:\\progra~1'" and yield the desired answer on the 
target environment.  But, if I wanted to determine the win32 
dependencies from Linux (for e.g. bundled packaging from a single build 
machine), I would have to set $^O to get the right answer -- and that 
might have undesired side-effects.

One could require/suggest that authors use some slightly more structured 
mechanism so that the query could pass a hash with e.g. a 'target_os' 
key, but then you still have a black box of code to run:  "my %answer = 
code(%inputs)", which is a closed system.  A data structure is a more 
open system (like an open-face sandwhich) because you can see what the 
conditionals are.

And yes, you have to admit that at some point you haven't provided the 
key/function for "whatever thing you didn't think of" and so you end up 
with an eval($blackbox) situation.  But, that's just one pickle in the 
sandwhich so you can still identify the cheese and mustard because 
everything is laid out where you can get at it.

And, we could require that user functions be named, which means you 
could absorb them into a later definition of the format.

Note that I'm thinking beyond just building or doing CPAN meta stuff.  
Things like if_os_is(...) and has_library(...) are used differently 
when you start dealing with packaging for three platforms.  There is 
also the use-any-of-these-modules issue, where I might have 
specifically chosen one to include.

--Eric
-- 
"Left to themselves, things tend to go from bad to worse."
--Murphy's Corollary
---------------------------------------------------
    http://scratchcomputing.com
---------------------------------------------------

Reply via email to