On Saturday 05 December 2009 03:24:45 pm Roger P. wrote:
with
the JVM.
So what you would be looking for is instead of the equivalent of a “one
click installer” it’s a one click installer that just installs a version
of ruby and any gems needed, then does other things?
Well, now that I’ve seen rip, I’m not convinced gems are necessarily the
end-
all of Ruby packaging, but that’s the idea. Or, more generally,
something that
installs the needed package manager if none is installed already, then
installs a set of dependencies.
That could actually be all that’s needed, other than adding icons and
such for
the result – the app itself could then be distributed as a gem.
It’s the equivalent of an installer that
does ‘net download’ of some of its components, I suppose.
The point here is not so much that it’s a ‘net download’, as that it
brings
the advantages of a package manager to bear – that is, chances are,
there’s a
lot of overlap. Does every rawr app really need to include JRuby,
MonkeyBars,
Nokogiri, etc, etc?
It does go a bit against the mantra of {at least in the windows world}
an installer is an installer, but it has potential.
There are ‘net downloads’ in the Windows world also. I can think of one
way to
mitigate this, though: The option of a full installer, but one which is
aware
of everything else that’s installed. Consider the fact that just about
every
Windows game ever shipped includes DirectX, but you don’t have one copy
of
DirectX installed per game – it only installs/updates if you don’t have
a
recent enough version already installed.
Consider that with Rubygems, you can have multiple versions of a gem
installed…
To make it even better, make it possible to generate a full installer
from any
installed package. Thus, even if you installed with the net-installer
(thus
saving bandwidth), you can create a full installer to share over your
LAN
(thus saving more bandwidth).
On the other hand, for this to work, we need a really robust packager.
In
particular, we need reverse dependencies – I think rip has this? – we
need
to not even prompt the user, but we need the ability to know that a
given gem
was installed as a support library for a given app, so that
uninstallation
works the way you expect.
Of course something like that wouldn’t work for linux.
Well, for Linux, it’s less needed – we have native package managers,
and
users are generally used to these. What’s needed on the Linux side is a
more
universal package manager, some sort of meta package manager. I think
GoboLinux has some good ideas with their “aliens” hierarchy – they
natively
support Rubygems, and Gobo packages can depend natively on gems, or on
CPAN
modules, etc, without having to repackage every gem as a Gobo package.
I wonder what would be a useful cross platform tool…
I’d say start with Windows and OS X, and even if Ruby is an awesome
implementation language, we should shoot for language-independence. And
the
reason I say start with Windows and OS X is that neither has an existing
package manager, so we wouldn’t be stepping on anyone’s toes by
basically
building netinstallers all over the place.
I think Linux can be made even better, but it takes a lot more work.