[racket-dev] proposal for moving to packages

From: Eli Barzilay (eli at barzilay.org)
Date: Wed May 22 15:30:07 EDT 2013

Yesterday, Eric Dobson wrote:
> On Tue, May 21, 2013 at 4:29 AM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
> > In my tree, I have 20M of compiled code and 13M of source. I like
> > the idea of a reduction of about 50% in size of downloads.
> 
> I'm not sure if something on the order of 10M is something to worry
> about optimizing, that takes like 5-6 seconds to download on a
> 15Mbit connection. And a minute on a much slower connection.

I don't know how Jay got those numbers, but I have a very different
picture:

  363M Current installed tree
  278M No-source tree (with docs)
   56M Installed "textual" tree (has no docs and scrbl files)
   42M Same minus sources

If a package based installation is roughly like the textual thing, and
given that it's easy to extend it to a full installation by adding
packages, then we're talking about going from a 363M tree down to a
42M thing.  I think that the minimal core racket would be even smaller
than the "textual" thing: once I remove things that look like they
shouldn't be there, it goes down to 28M.

The impact of having a huge tree currently is pretty big, IMO.  One
example is that it is impractical to have random linux utilities
implemented in Racket if you need to drag in a 363M working
environment.  It's true that you could in theory use the textual
thing, but the monolithic tree makes it hard for linux distro
packagers to split things into a small core -- hard enough that nobody
did it so far.  Another example is the few brave people who tried to
make things work on small devices, which usually starts with a huge
effort to get rid of unnecessary stuff.

Finally -- consider J. Random User -- installing a 360M thing on your
computer is something that you'd worry about much more than a 28M
thing.  The smaller thing is at a point where you won't worry about it
beind left somewhere, and at a point where it's fine to installed as a
kind of a shared runtime thing for someone who wants to distribute
racket-based applications.

-- 
          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the dev mailing list.