> Essentially what I'd look for in an installer like this would be
> something
> that, first, either starts with a gem, or also builds a gem, to make the
> whole
> process that much easier for people who already know about gems. Then,
> the
> binary package (the exe on Windows) detects or installs Ruby and
> Rubygems,
> then installs gem dependencies using Rubygems (perhaps with ri and rdoc
> disabled by default). If it was designed for JRuby, it could do the same
> 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.
···
On Saturday 05 December 2009 03:24:45 pm Roger Pack wrote: