<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Jun 3, 2013 at 2:44 PM, Eli Barzilay <span dir="ltr">&lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt;</span> wrote:<br>



<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Yesterday, Laurent wrote:<br>
&gt; On Sun, Jun 2, 2013 at 1:47 PM, Eli Barzilay &lt;<a href="mailto:eli@barzilay.org" target="_blank">eli@barzilay.org</a>&gt; wrote:<br>
&gt;<br>
&gt;     To clarify, because of reasons that I won&#39;t go into on the list,<br>
&gt;     the actual chances of me getting this implemented (and of such a<br>
&gt;     change being accepted) are pretty much in the area of &quot;slim to<br>
&gt;     none&quot;.  <br>
&gt;<br>
&gt; That&#39;s a bummer. At first sight I&#39;d have thought that it would have<br>
&gt; just been a matter of creating a directory with the same name as the<br>
&gt; package, and then decompressing the package into that directory.<br>
<br>
</div>At the lower level, packages use links, and &quot;raco link&quot;&#39;s default mode<br>
of work is at the collection level.  There is obviously a need for<br>
packages that correspond to collection roots, but I wanted to see the<br>
default being the same as the raco-link default (which fits most uses<br>
that don&#39;t come out of the current main tree).<br></blockquote><div><br></div><div>Not sure I was clear, or I don&#39;t exactly understand what you mean.<br></div><div>And maybe I&#39;m missing some important point here.<br>


</div><div><br></div><div>But the more I think about it, the less I see why this <br>double-directory thing should be the default behavior of the new package<br>system (I can understand why it&#39;s useful for plt packages though). <br>


</div><div>Even Carl&#39;s &quot;mischief&quot; package doesn&#39;t make use of collections like <br>that.<br></div><div>Jen&#39;s &quot;this-and-that&quot; does, though, but then every collection of his <br>
package must have a name that is different from any existing collection.<br></div><div>(And actually I think that&#39;s a bad idea, and that he should split his <br>package into several single-collection packages −unless they are <br>

tightly related− because I don&#39;t want to install all his collections if I want <br>to only try one of them, unless there is a way to install only one <br></div><div>collection of an existing package?)<br></div><div><br>

</div><div>For example, my personal racket project  tree is arranged somewhat like <br>that:<br></div><div><span style="font-family:courier new,monospace">racket<br>

├── project-B<br>│   └── main.rkt<br>├── project-A<br>│   └── main.rkt<br>├── not-yet(?)a-project-C<br>├── my-collects<br>│   ├── slideshow<br>│   ├── scribble<br>│   ├── racket<br>│   └── data<br>└── misc<br>    ├── try-this.rkt<br>



    └── try-that.rkt</span><br><br></div><div>project-A and project-B are git clones.<br></div><div>my-collects contains all my extensions to racket&#39;s collections,<br></div><div>plus some more generally useful collections.<br>

</div><div> <br>For my personal use,  I just do:<br>  raco link project-A project-B my-collects<br>and all is fine.<br></div><div></div><div>I tend to believe it&#39;s a quite common tree for racket users.<br>
<br></div><div>In &quot;my-collects&quot;, I have names that would collide with racket&#39;s collections, <br>so instead of having:<br></div><div>(require orseau/racket/slideshow)<br></div><div>as in the former package system, I would now have<br>


(require some-funny-name/slideshow)<br></div><div>after renaming my-collects to some-funny-name to make sure it does not <br>collide with anything else.<br></div><div><br></div><div>... and since I don&#39;t want to invent a funny name for each extension of a <br>

racket collection I do, I prefer to put them all in a single package and <br></div><div>collection.<br></div><div>
<br></div><div>Now if I were to follow the new package system, I&#39;d need to change my <br>tree to:<br><span style="font-family:courier new,monospace">racket<br>├── misc<br>│   ├── try-that.rkt<br>│   └── try-this.rkt<br>

├── </span><span style="font-family:courier new,monospace">some-funny-name</span></div><div><span style="font-family:courier new,monospace">

│   └── some-funny-name<br></span></div><div><span style="font-family:courier new,monospace">│       ├── data<br>│       ├── racket<br>│       ├── scribble<br>│       └── slideshow<br>├── not-yet(?)a-project-D<br>├── project-A<br>

│   └── project-A<br>│       └── main.rkt<br>└── project-B<br>

    └── project-B<br>        └── main.rkt</span><br><br></div><div>which is a mess. And I would also need to change my git repos to<br></div><div>match that structure, which looks awkward.<br></div><div>/But/ I don&#39;t care if the tree of the packages I *install* look like that.<br>

<br></div><div>So what I would like is to keep my tree like the first one, but the <br>
package system can still install like the second one.<br><br></div><div>My proposal was that for single-collection packages, I could keep<br></div><div>my tree like the first one, my git clones like project-A/main.rkt, and<br>


</div><div>tell the package manager (probably in the info.rkt file) that it is a<br>single-collection package so that when it installs it in the<br>installed-package-directory-that-I-will-not-look-into it generates a tree<br>


like the second one.<br><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div>
</div>Well, the reason I think that plain collection packages are important<br>
is it will simplify dealing with packages, and lower the investment<br>
threshold that you need to publish a package.  Along the same line,<br>
there should also be a way to put out just a single file (or very few)<br>
as a first step where I make some code public but with absolutely<br>
minimum effort on the publisher&#39;s side.  See for example the<br>
&quot;Processing&quot; thread, where Sean said that people who do these kind of<br>
thing &quot;don&#39;t even know what source control is, let alone packages&quot; --<br>
so the existence of such a crowd is a perfect reason for a single-file<br>
thing being another important point on the code distribution spectrum.<br></blockquote><div><br></div><div>I entirely agree with that, and I think it is of utmost importance for a <br>programming language (and system) to make sure that its users can <br>


</div><div>easily share code. Probably all of you agree with that, but I want to <br>emphasize that it&#39;s really important to put as much effort as required<br>into that.<br><br></div><div>Don&#39;t get me wrong, I really like the steps forward taken with the new<br>

direction of the package system, but right now there&#39;s a psychological<br>wall that prevents me from publishing more v2 packages.<br></div></div><br></div><div class="gmail_extra">Laurent<br></div><div class="gmail_extra">

<br></div></div>