I believe it is by design that Planet 2 does not resolve this kind of issue.  This gives us room to experiment with different solutions without committing to one up-front, since Planet 1 ran into various limitations of its built-in policies.<br>

<br>I will propose one possible solution for your &quot;webapis&quot; example.  Distribute a primary wrapper package called &quot;webapis&quot; and separate specific versions such as &quot;webapis1&quot;, &quot;webapis2&quot;, and so forth.  Have the code in &quot;webapis&quot; determine at compile-time which specific version of webapis is appropriate for the current Racket version and install that package.  The specific packages would contain the actual code a client would import.  That way, installing the &quot;webapis&quot; package on any Racket version would install only the version of the implementation that works.<br>

<br>I don&#39;t know if this is a complete solution, but it seems like a reasonable starting point.  As we figure out what patterns work, they themselves can be developed as reusable tools and built into their own packages.  I think this room for improvement will make Planet 2 a much better long-term model than Planet 1.  Of course we do eventually want a default system that package developers can use without too much mucking about with &quot;experimental&quot; versioning systems.  But I think an initial period of &quot;crowd-sourcing&quot; the design of that system will do us some good.<br>

<div class="gmail_extra"><br clear="all"><div>Carl Eastlund</div><br>
<br><br><div class="gmail_quote">On Wed, Dec 12, 2012 at 2:29 PM, Ryan Culpepper <span dir="ltr">&lt;<a href="mailto:ryan@cs.utah.edu" target="_blank">ryan@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;m trying to understand how things are supposed to work in planet2 without version information.<br>
<br>
Let&#39;s say I release a package, &quot;webapis&quot;. Time passes, and I notice that Racket gets some cool new features (eg, better SSL support) that the &quot;webapis&quot; package should use. I write the code, and ...<br>


<br>
Do I release the new code under the same package name? If so, then the package breaks for older versions of Racket, because IIUC planet2 has nothing corresponding to planet1&#39;s &#39;required-core-version field. And there doesn&#39;t seem to be a way to tell Racket &quot;no, sorry, go back to the older version of the package&quot;. (Rather, there&#39;s no way for a client to do so. The fix would be for the package maintainer to release an &quot;upgrade&quot; that reverts to the old code.) So it seems like it would be really bad for me to release the new code under the name &quot;webapis&quot;.<br>


<br>
In other words, if a package changes its dependencies, that&#39;s an incompatible change for the package, and it needs a new name. Right?<br>
<br>
Suppose I release the new code as &quot;webapis2&quot;. And suppose there&#39;s another package (let&#39;s call it &quot;scriblogify&quot;) that depends on &quot;webapis&quot;. If that code wants to use &quot;webapis2&quot;, that&#39;s a dependency change, so it would have to be released as &quot;scriblogify2&quot;. There&#39;s no way to express &quot;link me with the most recent compatible version of webapis*&quot;, right?<br>


<br>
Ryan<br>
_________________________<br>
 Racket Developers list:<br>
 <a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/<u></u>dev</a><br>
<br>
</blockquote></div><br></div>