[racket-dev] planet2 and versions

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Wed Dec 12 15:58:39 EST 2012

I agree with Carl.

But I would make an even stronger suggestion, I would suggest that you
completely drop support for old Racket versions and if necessary
release "webapis-lts" and "scriblogify-lts" packages that conflict
with "webapis" and can only work on old versions. The LTS ones
wouldn't be included in the DrDr-tested collection of packages, but
the others would be. Casual users should upgrade and users with
serious version problems should upgrade slowly with only the LTS
versions.

I would also hope that P2's lack of an ability to depend on the core
version would induce better backwards and forwards compatibility from
Racket in the version.

But I'm a bit radical on this front, so I assume that we will have a
robust alternative based on Carl's idea that uses P2 underneath it.

Jay

On Wed, Dec 12, 2012 at 1:13 PM, Carl Eastlund <cce at ccs.neu.edu> wrote:
> 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.
>
> I will propose one possible solution for your "webapis" example.  Distribute
> a primary wrapper package called "webapis" and separate specific versions
> such as "webapis1", "webapis2", and so forth.  Have the code in "webapis"
> 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 "webapis" package on any Racket version would install only
> the version of the implementation that works.
>
> I don'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 "experimental"
> versioning systems.  But I think an initial period of "crowd-sourcing" the
> design of that system will do us some good.
>
> Carl Eastlund
>
>
>
> On Wed, Dec 12, 2012 at 2:29 PM, Ryan Culpepper <ryan at cs.utah.edu> wrote:
>>
>> I'm trying to understand how things are supposed to work in planet2
>> without version information.
>>
>> Let's say I release a package, "webapis". Time passes, and I notice that
>> Racket gets some cool new features (eg, better SSL support) that the
>> "webapis" package should use. I write the code, and ...
>>
>> 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's 'required-core-version field. And there
>> doesn't seem to be a way to tell Racket "no, sorry, go back to the older
>> version of the package". (Rather, there's no way for a client to do so. The
>> fix would be for the package maintainer to release an "upgrade" 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 "webapis".
>>
>> In other words, if a package changes its dependencies, that's an
>> incompatible change for the package, and it needs a new name. Right?
>>
>> Suppose I release the new code as "webapis2". And suppose there's another
>> package (let's call it "scriblogify") that depends on "webapis". If that
>> code wants to use "webapis2", that's a dependency change, so it would have
>> to be released as "scriblogify2". There's no way to express "link me with
>> the most recent compatible version of webapis*", right?
>>
>> Ryan
>> _________________________
>>  Racket Developers list:
>>  http://lists.racket-lang.org/dev
>>
>
>
> _________________________
>   Racket Developers list:
>   http://lists.racket-lang.org/dev
>



-- 
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93

Posted on the dev mailing list.