[racket-dev] proposal for moving to packages: binary vs source

From: Eli Barzilay (eli at barzilay.org)
Date: Fri May 24 03:53:20 EDT 2013

[Note subject change...]

Two days ago, Eric Dobson wrote:
> For binary vs source, I think you are providing a good argument for
> the usefulness of a no source distribution. Some people want to use
> tools written in Racket, and the fact that the tools are written in
> Racket is immaterial to them. They should be able to have just the
> binary versions.

There have been a bunch of concerns expressed about the question of
distributing sources or not -- but I think that generally speaking,
there shouldn't be any problems at all.  Here's a list of things that
contribute to not having such concerns:

1. The eventual goal would be to have very easy selection of packages
   that you want to install.  Either with (a) a bunch of installers,
   (b) possibly doing this by just a different URL that will have the
   installers listed in it as arguments, or (c) with a post-install
   dialog that will ask you for additional packages to install.  (In
   the (c) case, it could also detect packages that you had decided to
   install previously, and re-use the same list.)

   The bottom line is that if *you* want to get the sources, then it
   should be extremely easy to just have them installed (c), or create
   installers that include the sources (a;b) which you'll use.  The
   main point here is that using packages will make such variations
   very easy to implement, and make it easy for you to add sources or
   provide popular options based on demand.

2. With the geiser/drracket concern about reduced functionality
   because there are no sources: the information about the source of
   bindings is still there.  (Ie, things work fine if you remove a
   random source file from a current installation -- the only
   difference is that the actual source file is not there.)

   Now, I'm assuming that there is some way with the package system to
   know for any given file which package it came from.  With this
   information, I think that it would be easy to do something like

     * In drr, if you try to jump to a definition for a function whose
       source is not included, you get a popup telling you that you
       don't have the source, and list an on-line URL where the source
       can be found (which is inferrable from the package information)
       as well as a one-button-click option to install the source and
       then open the file.

     * Geiser could do exactly the same, and also use something like
       `url-handler-mode' to visit the source file directly from the
       on-line source in addition to offering to install the sources.

3. I think that there should be an option for package owners to decide
   how their package gets installed, so for example, if realm must be
   distributed with its sources, it can just specify that and avoid
   the stripping that other packages would go through.

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

Posted on the dev mailing list.