As I've mentioned before, I am concerned about Ruby becoming tied to
RubyGems. I am concerned because I think Gems overly complicates Ruby's
require mechanism, making it less efficient than it needs to be and
sometimes causing unexpected load behaviors. Even more worrisome to me
though is that Gems ties require versioning (and some of it's other
benefits) to *package distribution*. B/c of this I fear Gems will
become the ONLY acceptable way to distribute Ruby software --indeed, it
already seems to be doing so. Maybe some people want that, but I fear
it locks Ruby in too much, and stiffles any future innovation in the
distribution area.
For these reasons I'm inquiring into the support that may exist for
doing things a little differently. I believe it would be better if
Ruby itself simply elaborated on its #require method (and #load method
of course) to handle versioned directory tiers. Then simply by adding a
version tier to a project's lib/ path versioning would be supported --
independent of any distribution mechinism. To be clear, what I mean is
instead of this:
myproject/
lib/
myproject/
myfile.rb
One would put:
myproject/
lib/
myproject/
1.0.0/
myfile.rb
So even setup.rb can be used just as it always has and versioning would
be supported.
I want to make clear that I am not wishing away Gems in this, I like
Gems and think is makes a great package manager for Ruby. I simply
think the versioning should not be dependent on Gems. And Gems could be
adapted to work with the above system too.
So I'd like to know if others would be in support of this approach as I
have already written a system to do exactly this. The system deals with
all the details that arise doding this and adds some additional
benefits, but the above is heart of the matter. The system is nearly
ready for release. I am down to completing thread safety and
solidifying the exact require interface that will support it.
So what do you think? Anything you'd like me to clarify? Is there
support out there for pursuing this approach?
Thanks,
T.