mathew,

First of all, let me assure that I'm well aware of engineering trade
offs.  I suggested that consistency be maintained where feasible, not
always and at the expense of sanity.  I also suggested that extensions
would be useful if there was demand, such as adding support for
Windows-style globbing.  I don't want Ruby put into a straight jacket,
but I also don't want to make it needlessly difficult for Ruby
developers to get their work done.

Your examples of managing filesystem case-sensitivity all have major
shortcomings to interoperability with non-Ruby programs when only used
within Ruby itself.  Two of your solutions are used by file servers that
present a single filesystem level interface to all programs.  They can
get away with the hacks they perform because all programs use the hacked
side of the interface.  Going behind the file server's back can cause
trouble actually.  The third solution only provides a sorting mechanism
for file lists and does not describe a way to store and retrieve file
data given a file path.

If Ruby tried to enforce a lowest common denominator filesystem approach
of any kind, Ruby programs would appear broken to the users who need
interoperability with non-Ruby programs.  Few developers would use it as
a result, and you'll note that not even Java attempts to do such a
foolish thing.

You'll likely argue that Ruby having its own globbing solution appears
similarly broken.  My counter is that end users do not use globbing
enough within Ruby to warrant the extra support load on Ruby developers
who would need to be cognizant of the differences for each platform.
Users' use of globbing will usually be limited to the command line where
globbing is already handled in a platform-specific way outside of the
Ruby script.  I further contend that developers are more than capable of
learning Ruby's implementation and tend to appreciate the fact that they
don't have to worry about differences in implementation per platform.

Consider yourself lucky that you only need to support a single platform
with your scripts.  I'm pleased to escape the old days of non-portable C
code and endless #ifdefs.  If you think I'm misguided or an aberration,
ponder the reasons for the existence of Gnulib, APR, libiberty, and
similar abstraction libraries.

-Jeremy