<div dir="ltr">For point 3., do you have a sense of what milestones we&#39;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">&lt;<a href="mailto:mflatt@cs.utah.edu" target="_blank">mflatt@cs.utah.edu</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I&#39;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&#39;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&#39;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&#39;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 &quot;pkgs&quot; subdirectory. Each directory in &quot;pkgs&quot; is intended as a<br>
candidate for movement into a separate repository, but each directory<br>
in &quot;pkgs&quot; is either<br>
<br>
  * a package directory (single- or multi-collection); or<br>
<br>
  * a directory (named &quot;...-pkgs&quot;) containing package directories,<br>
    where the packages in each directory are intended to be together in<br>
    one repository.<br>
<br>
It doesn&#39;t have to be just two levels: any number of grouping-directory<br>
layers is fine, and the &quot;separate repository&quot; 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 &quot;pkgs&quot;<br>
is determined by the presence of an &quot;info.rkt&quot; file to indicate a<br>
package. That is, even though a package is not in general required to<br>
have an &quot;info.rkt&quot;, each package in &quot;pkgs&quot; is required to have an<br>
&quot;info.rkt&quot; so that it can be recognized as a package directory.<br>
<br>
The current &quot;...-pkgs&quot; 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&#39;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 &quot;racket&quot;<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 &quot;racket&quot; subdirectory.<br>
<br>
As long as we don&#39;t actually create separate repositories, you can<br>
edit/move libraries and collections in &quot;racket/lib/collects&quot; and<br>
&quot;pkgs&quot;, push and pull via `git&#39;, and rebuild via `racket/bin/raco<br>
setup&#39;. If we do split into separate repositories, then I think it<br>
could be much the same, but with git submodules.<br>
<br>
See &quot;INSTALL.txt&quot; 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&#39;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&#39;s my proposal, hopefully it&#39;s clear that I&#39;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>