<div dir="ltr">For point 3., do you have a sense of what milestones we'd have to reach (at what times) in order to have a successful release? <div><br></div><div style>Robby</div><div style><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Wed, Jun 5, 2013 at 7:19 PM, Matthew Flatt <span dir="ltr"><<a href="mailto:mflatt@cs.utah.edu" target="_blank">mflatt@cs.utah.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I've updated the package experiment again:<br>
<br>
<a href="https://github.com/mflatt/racket/tree/pkg" target="_blank">https://github.com/mflatt/racket/tree/pkg</a><br>
<br>
<br>
State of the Proposal<br>
---------------------<br>
<br>
Based on discussion of the initial proposal,<br>
<br>
<a href="http://lists.racket-lang.org/dev/archive/2013-May/012364.html" target="_blank">http://lists.racket-lang.org/dev/archive/2013-May/012364.html</a><br>
<br>
I'm revising the proposal as follows:<br>
<br>
* The details of the repository organization (including where to split<br>
repositories) should be different.<br>
<br>
As described in next section of this message, the experimental<br>
repository represents a revised proposal, but there's plenty of room<br>
for further refinement.<br>
<br>
* The main distribution will not be in binary form; we keep source<br>
alongside build bytecode and documentation, as before.<br>
<br>
Creating a package catalog that provides binary versions of packages<br>
(for use in constrained environments) remains a clear possibility,<br>
but that's now on the backburner.<br>
<br>
* The process for building installers is as originally proposed, but<br>
substituting built packages (i.e., source plus binary) instead of<br>
binary packages.<br>
<br>
The big pieces that were missing are now implemented.<br>
<br>
<br>
Current Proposed Repository Organization<br>
----------------------------------------<br>
<br>
In the latest version of the experimental repository, packages are all<br>
in a "pkgs" subdirectory. Each directory in "pkgs" is intended as a<br>
candidate for movement into a separate repository, but each directory<br>
in "pkgs" is either<br>
<br>
* a package directory (single- or multi-collection); or<br>
<br>
* a directory (named "...-pkgs") containing package directories,<br>
where the packages in each directory are intended to be together in<br>
one repository.<br>
<br>
It doesn't have to be just two levels: any number of grouping-directory<br>
layers is fine, and the "separate repository" contour can be anywhere<br>
among the grouping layers (as long as each repository is a directory,<br>
and as long as each package is wholly within some repository).<br>
<br>
<br>
The line between grouping directories and package directories in "pkgs"<br>
is determined by the presence of an "info.rkt" file to indicate a<br>
package. That is, even though a package is not in general required to<br>
have an "info.rkt", each package in "pkgs" is required to have an<br>
"info.rkt" so that it can be recognized as a package directory.<br>
<br>
The current "...-pkgs" name for each grouping directory is just a<br>
convention.<br>
<br>
<br>
The package groupings themselves are not much improved from before ---<br>
lots of work to do there, but that's work that would happen by everyone<br>
if and when we go this direction.<br>
<br>
<br>
New targets the in Makefile can install package links in the "racket"<br>
directory, so that (on Unix, at least)<br>
<br>
make core<br>
make pkg-links<br>
racket/bin/raco setup<br>
<br>
is essentially the same as the current<br>
<br>
cd src<br>
mkdir build<br>
cd build<br>
../configure<br>
make<br>
make install<br>
<br>
except that the resulting build is in a "racket" subdirectory.<br>
<br>
As long as we don't actually create separate repositories, you can<br>
edit/move libraries and collections in "racket/lib/collects" and<br>
"pkgs", push and pull via `git', and rebuild via `racket/bin/raco<br>
setup'. If we do split into separate repositories, then I think it<br>
could be much the same, but with git submodules.<br>
<br>
See "INSTALL.txt" for more information.<br>
<br>
<br>
Your Turn<br>
---------<br>
<br>
If we pursue the path demonstrated in this experimental repository,<br>
then we have several infrastructure details to work out yet, to say<br>
nothing of finishing up the organization of our collections and<br>
libraries into packages.<br>
<br>
I think we're at the point, though, for you to assess whether this is<br>
the right direction. If it looks like a good direction, then the<br>
follow-up question is how fast to move.<br>
<br>
Some possible conclusions:<br>
<br>
1. This is the wrong way.<br>
<br>
2. This is plausible, but the details are not right or not clear; we<br>
should stick with our current repository structure for at least one<br>
more release and consider switching after that.<br>
<br>
3. This will work, and we should switch right away and start sorting<br>
out the details together --- but we should not actually break out<br>
into separate repositories until after a release or so.<br>
<br>
4. This will work, we should try to switch right away --- AND we should<br>
split the repository as soon as possible.<br>
<br>
Since it's my proposal, hopefully it's clear that I'm in camp 3.<br>
<br>
Opinions?<br>
<br>
_________________________<br>
Racket Developers list:<br>
<a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
</blockquote></div><br></div>