<div dir="ltr"><div style>This looks great to me!</div><div><br></div>I don&#39;t have a good sense of what level of granularity is the right one, but I naturally would have gone even finer grained with drracket: the macro-debugger, pkg/gui, and maybe even the gui-debugger I would have separated out. (Probably you were focused on lower-level things first, tho.) <div>
<br></div><div>Also for the macro-debugger: I think it is useful by itself, without drracket (I would like to use it for files that in drracket&#39;s implementation, for example). So I think there should be two packages there: macro-debugger-standalone with the &quot;give me a file and show the macro debugger&#39;s result on it&quot; interface and macro-debugger-plugin pkg that fits into drracket.</div>
<div><br></div><div>Robby</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, May 28, 2013 at 4:14 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">Here&#39;s a first experiment at moving collections around into packages:<br>
<br>
 <a href="https://github.com/mflatt/racket/tree/pkg" target="_blank">https://github.com/mflatt/racket/tree/pkg</a><br>
<br>
That repository really is meant as an experiment and a point of<br>
discussion --- not a conclusion!<br>
<br>
In particular, this experiment is about what it might look like to<br>
break up the Racket sources. It&#39;s about what the packages will actually<br>
be and how finely we want to layer the packages.<br>
<br>
To get the discussion started, I&#39;ve tried to err on the side of<br>
breaking things apart (i.e., lots of layers). So, you&#39;ll see lots of<br>
packages.<br>
<br>
<br>
The &quot;racket&quot; directory in the repo is pretty much the same as the<br>
`min-racket&#39; experiment, while each other directory is a package (or a<br>
sketch of a package, because I didn&#39;t get to everything, yet).<br>
<br>
If you build in the &quot;racket&quot; directory, install suitable native-library<br>
packages (see &quot;README.txt&quot;) and then run<br>
<br>
 racket/bin/raco pkg install -i --link --deps link-auto drracket<br>
<br>
then you should get a Racket variant that includes DrRacket, but not<br>
the teaching languages, Redex, or lots of other things.<br>
<br>
If you instead try<br>
<br>
 racket/bin/raco pkg install -i --link --deps link-auto gui-lib<br>
<br>
then you should get a Racket that can run GUI programs, but no DrRacket<br>
or even documentation.<br>
<br>
As the &quot;README.txt&quot; notes, there are many useful packages that you can<br>
install and still keep things relatively small. For example, you can<br>
get a Scribble (without documentation!), Typed Racket, or a web server<br>
with relatively few dependencies.<br>
<br>
<br>
Meanwhile, part of this experiment is defining &quot;-lib&quot; packages that do<br>
not provide documentation, which means they can have fewer build-time<br>
dependencies than they would need for documentation. The &quot;-docs&quot;<br>
packages provide the corresponding documentation. (I&#39;m not sure about<br>
the naming convention; I just had to pick something for now.)<br>
Naturally, the &quot;X&quot; package pulls in both the &quot;X-lib&quot; and &quot;X-doc&quot;<br>
packages.<br>
<br>
I don&#39;t know whether the &quot;-lib&quot;/&quot;-docs&quot; split is worthwhile, but it&#39;s<br>
part of erring on the side of breaking things apart. Maybe it makes<br>
more sense to keep things together and rely on binary packaging to<br>
reduce dependencies.<br>
<br>
<br>
Also worth noting is that the &quot;unstable&quot; collection does not work<br>
nicely as a package --- as should be expected. I created a few<br>
&quot;unstable-&quot; packages and imagine many more, but I&#39;m not sure that&#39;s the<br>
right way to go.<br>
<br>
<br>
So, how does this split correspond to what you expected? (My guess is<br>
that this far too fine-grained for some of us, while others will want<br>
exactly this kind of flexibility.)<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>