If I decide to lunch in the park, taking my sandwich and bag of
assorted goodies to the shade of a likely tree, I may not, even in this
idyllic environment, find everything to my liking. I could, of course,
suffer silently. Or I could decide to change what fails to suit.
Now most everyone would agree that if my complaint were with the
placement of the trees, or the season, or the reasonable conduct of
others in the park, the proper choice would be to suffer them silently.
Digging up my chosen tree to replant closer to the creek would, by
almost everyone's standards, by inappropriate.
But by the same token, hardly anyone would claim that I ought not
add the condiments of my choice to the sandwich I'm about to chew. Be
they pickled hot peppers or strange sauces, the choice is, and should
be, mine, and very few reasonable people would dispute that.
The difference, it seems to me, is that redecorating the park may
well affect--for better or worse--the enjoyment others take in it, while
decorating the sandwich affects only me. Thus I can undertake the later
on my own authority, but ought not undertake the former without
consulting everyone.
The reason for my bringing this up, if it isn't already apparent,
is that I have noticed a recurring theme on this list: some people seem
to assume that a ruby program's extending/modifying of ruby's core
classes is more akin to mucking with the park than to modifying the
sandwich. Note that I say "seem to assume" because I am frankly puzzled
by their position and do not claim to fully understand it.
At first I thought they were acting as if one pragmatic picnicking
programmer putting pickled peppers on his or her sandwich was going to
ruin the park for everyone. This seemed unreasonable in the extreme.
What business is it of theirs if some people take advantage of a feature
of the language they do not care to use? Even if they share an
installation of ruby with the people who prefer peppers, the effects,
there will be NO EFFECT visible to them and thus no harm.
I subsequently came to suspect that they were perhaps being more
reasonable than that, but acting on the basis of an assumption that I do
no share: that the park was a better analogy than the sandwich, and that
any "local" modifications to the core classes must perforce affect
everyone. As I enumerated elsewhere (when I first formed this
impression) changes (especially extensions) to the core classes can by
made quite local, though the basic fact that they are limited to the
program in which they occur seems to me to handle most of the
objections.
A third possibility is that they are aware that the pickled peppers
only affect the sandwich they are put on, but they still don't want the
other guy to use them because they might someday want to eat the other
guys sandwich. This is kind of a stretch, since no one is forcing them
to eat someone else's sandwich, and they are free to reject any that
they don't like the taste of. But in some ways this theory best fits
the data.
A fourth possibility is that their objections are more akin to
moralizing than to personal objections. It isn't that they believe they
have any reason to object, but still, "it isn't right" and thus "people
shouldn't do such things".
None of these are clearly the right way to understand the
situation, so I ask:
Why the rabid objection to people putting broccoli on their
sandwiches if they like it?
-- Markus