[plt-scheme] How best to use PLaneT?
On Fri, Oct 10, 2008 at 10:22 AM, Grant Rettke <grettke at acm.org> wrote:
> On Fri, Oct 10, 2008 at 7:50 AM, Matt Jadud <jadudm at gmail.com> wrote:
>> My solution seems to be to write my code using very explicit versions
>> on PLaneT repository objects.
>>
>> (require (planet "instaservlet.ss" ("untyped" "instaservlet.plt" 1 (= 3))))
>>
>> was the require statement I should have used. This prevents the
>> library from moving underneath me
>
> To your point, yes you should be locking your version at the exact one
> you want! :)
Careful, that can still cause problems. If you demand *exactly* A:1.1,
and A requires *at least* B:2.2, you can still get behavior changes
when B releases 2.3. Basically, everything only "works" if you stay
consistent with all your upstream suppliers: either everyone requiring
*exact* minor numbers, or everyone allowing upgrades and also
releasing only bug fixes as minor releases (and bumping the major
number for every interface change, no matter how small).
Since the Planet mechanism is designed specifically to support the
latter approach, I currently think the best approach is to allow minor
version upgrades, but to bump major numbers frequently and to put
pressure on other package maintainers to do so (that is, if they
release an interface change as a minor release, report it as a bug -
because it is). If we have a schism, and two different
interpretations of version numbers floating around, we're likely to
build up all kinds of incompatibility.
--
Carl Eastlund