Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Jim Fulton


On May 31, 2007, at 2:47 PM, Dieter Maurer wrote:


Jim Fulton wrote at 2007-5-31 14:15 -0400:

...

I fear my colleagues responsible to maintain the productive versions
would not be happy:

  They want the system to be as stable as possible.

  If they need to introduce a new component, they usually
  prefer to just add this one component. Only if this forces
  other updates, they reluctantly will make them.

The motivation for this behaviour: even if a newer version
is supposed to be backward compatible, it often has slightly  
different

behaviour which may trigger bugs in the other parts of a complex
system.


I agree, but this control should occur at at a different place.  I
suggest that when deploying or releasing an application or system,
you want to fix all of the versions so that a released or deployed
configuration is repeatable and so that changes are introduced in a
controlled way.  This can be done in a number of ways.  You can have
an application meta-package that specifies all of the versions, or,
if you are using buildout, you can use buildout's facilities for
fixing versions.

For individual reusable "library packages", you want to make the
dependencies as non-restrictive as possible so as to maximize
flexibility and reusability.


I agree but not to specify a minimal version and instead to assume
that always the latest release version must be used does not
maximize but reduce reusablitity.

Look at the following szenario:

  In a given system module "A" is installed in version "M.m".

  For some reason, another module "B" in the system cannot work with
  "A" in any version "M.m'" with "m' > m".


I think a ' is missing above.  I assume you mean that B requires "A  
<=M.m".




  I know that this violates your assumption that any newer minor  
release

  is compatible with any older one (in the same major release).
  Unfortunately, such things happen


Sure.  For example, then A doesn't follow the rules and people will  
have to use an inconvenient specification for it.  This will often be  
the case for non-Zope packages. For example, if Python was a  
distribution, it would, sadly, have this property.



  Now assume we want to install module "C" which needs "A" in version
  "M.*".


Given the backward-compatibility policy of A, C's author has made an  
error.



If "M.*" implicitly means: the newest minor release in the "M" series,
then "C" cannot be installed in the hypothetical system.


It means that any version of A in the M series should work.  It  
doesn't mean that the latest is required.  If the requirements of the  
"system" listed B before listing C, then a version of A compatible  
with B would get used and that would also work with C.


If, on the other hand, if C is listed before B, then, using the  
current setuptools algorithm, the latest version of A will be used  
and will be incompatible with B.  (Eventually, we'll switch to a  
better algorithm.)


If, on the other hand, the dependency is expressed by "A >=M.m, <=  
M.",

then "C" can be installed.


Assuming that this is C's dependency, it doesn't make any  
difference.  If C is named before B, you'll still get a version  
conflict.


If your suppositions are only a form of introduction for the "M.*"  
syntax

(or "M*", if you prefer) but does not affect the semantics of "M.*",
i.e. if "M.*" means 'needs the module in *any* "M" version',
then I have no objections.


That's exactly what I meant. In fact, I meant exactly what I said,  
which was that:


  "project_name V.*" would be equivalent to "project_name >=V, 9"


:)


Even for me "M.*" is nicer than "M.9".


More importantly, IMO, "A M.*" is nicer than "A >=M, mailto:[EMAIL PROTECTED]Python 
Powered!
CTO (540) 361-1714  
http://www.python.org
Zope Corporationhttp://www.zope.com http://www.zope.org



___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Dieter Maurer
Jim Fulton wrote at 2007-5-31 14:15 -0400:
> ...
>> I fear my colleagues responsible to maintain the productive versions
>> would not be happy:
>>
>>   They want the system to be as stable as possible.
>>
>>   If they need to introduce a new component, they usually
>>   prefer to just add this one component. Only if this forces
>>   other updates, they reluctantly will make them.
>>
>> The motivation for this behaviour: even if a newer version
>> is supposed to be backward compatible, it often has slightly different
>> behaviour which may trigger bugs in the other parts of a complex  
>> system.
>
>I agree, but this control should occur at at a different place.  I  
>suggest that when deploying or releasing an application or system,  
>you want to fix all of the versions so that a released or deployed  
>configuration is repeatable and so that changes are introduced in a  
>controlled way.  This can be done in a number of ways.  You can have  
>an application meta-package that specifies all of the versions, or,  
>if you are using buildout, you can use buildout's facilities for  
>fixing versions.
>
>For individual reusable "library packages", you want to make the  
>dependencies as non-restrictive as possible so as to maximize  
>flexibility and reusability.

I agree but not to specify a minimal version and instead to assume
that always the latest release version must be used does not
maximize but reduce reusablitity.

Look at the following szenario:

  In a given system module "A" is installed in version "M.m".

  For some reason, another module "B" in the system cannot work with
  "A" in any version "M.m'" with "m' > m".

  I know that this violates your assumption that any newer minor release
  is compatible with any older one (in the same major release).
  Unfortunately, such things happen

  Now assume we want to install module "C" which needs "A" in version
  "M.*".

If "M.*" implicitly means: the newest minor release in the "M" series,
then "C" cannot be installed in the hypothetical system.
If, on the other hand, the dependency is expressed by "A >=M.m, <= M.",
then "C" can be installed.


If your suppositions are only a form of introduction for the "M.*" syntax
(or "M*", if you prefer) but does not affect the semantics of "M.*",
i.e. if "M.*" means 'needs the module in *any* "M" version',
then I have no objections.
Even for me "M.*" is nicer than "M.9".



-- 
Dieter
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Andreas Jung



--On 31. Mai 2007 20:08:02 +0200 Dieter Maurer <[EMAIL PROTECTED]> wrote:


Jim Fulton wrote at 2007-5-31 10:12 -0400:


In thinking about how we might specify that we want to depend on
major versions but sometimes need to specify minimum versions, the
following occurred to me:

- Suppose that we always had access to the latest released version,

- Suppose that, within a major release, all releases were backward
compatible,

Then I assert that there is no *need* to specify a minimum release
within a major release.


I fear my colleagues responsible to maintain the productive versions
would not be happy:

  They want the system to be as stable as possible.

  If they need to introduce a new component, they usually
  prefer to just add this one component. Only if this forces
  other updates, they reluctantly will make them.

The motivation for this behaviour: even if a newer version
is supposed to be backward compatible, it often has slightly different
behaviour which may trigger bugs in the other parts of a complex system.


That's why one should have enough tests...although tests will never
cover all cases.

-aj


pgpt1WGkPLSoR.pgp
Description: PGP signature
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Jim Fulton


On May 31, 2007, at 2:08 PM, Dieter Maurer wrote:


Jim Fulton wrote at 2007-5-31 10:12 -0400:


In thinking about how we might specify that we want to depend on
major versions but sometimes need to specify minimum versions, the
following occurred to me:

- Suppose that we always had access to the latest released version,

- Suppose that, within a major release, all releases were backward
compatible,

Then I assert that there is no *need* to specify a minimum release
within a major release.


I fear my colleagues responsible to maintain the productive versions
would not be happy:

  They want the system to be as stable as possible.

  If they need to introduce a new component, they usually
  prefer to just add this one component. Only if this forces
  other updates, they reluctantly will make them.

The motivation for this behaviour: even if a newer version
is supposed to be backward compatible, it often has slightly different
behaviour which may trigger bugs in the other parts of a complex  
system.


I agree, but this control should occur at at a different place.  I  
suggest that when deploying or releasing an application or system,  
you want to fix all of the versions so that a released or deployed  
configuration is repeatable and so that changes are introduced in a  
controlled way.  This can be done in a number of ways.  You can have  
an application meta-package that specifies all of the versions, or,  
if you are using buildout, you can use buildout's facilities for  
fixing versions.


For individual reusable "library packages", you want to make the  
dependencies as non-restrictive as possible so as to maximize  
flexibility and reusability.


Jim

--
Jim Fulton  mailto:[EMAIL PROTECTED]Python 
Powered!
CTO (540) 361-1714  
http://www.python.org
Zope Corporationhttp://www.zope.com http://www.zope.org



___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Bernd Dorn


On 31.05.2007, at 20:08, Dieter Maurer wrote:


I fear my colleagues responsible to maintain the productive versions
would not be happy:

  They want the system to be as stable as possible.

  If they need to introduce a new component, they usually
  prefer to just add this one component. Only if this forces
  other updates, they reluctantly will make them.

The motivation for this behaviour: even if a newer version
is supposed to be backward compatible, it often has slightly different
behaviour which may trigger bugs in the other parts of a complex  
system.


i think we are talking about package dependencies here, and not  
application dependencies


if an egg based application e.g zope 3.5 is released, the package  
versions should be nailed down anyways by buildouts "version" section  
and packages should be more tolerant, so that changes of version  
conflicts gets minimized when collecting them in an application








___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Dieter Maurer
Jim Fulton wrote at 2007-5-31 10:12 -0400:
>
>In thinking about how we might specify that we want to depend on  
>major versions but sometimes need to specify minimum versions, the  
>following occurred to me:
>
>- Suppose that we always had access to the latest released version,
>
>- Suppose that, within a major release, all releases were backward  
>compatible,
>
>Then I assert that there is no *need* to specify a minimum release  
>within a major release.

I fear my colleagues responsible to maintain the productive versions
would not be happy:

  They want the system to be as stable as possible.

  If they need to introduce a new component, they usually
  prefer to just add this one component. Only if this forces
  other updates, they reluctantly will make them.

The motivation for this behaviour: even if a newer version
is supposed to be backward compatible, it often has slightly different
behaviour which may trigger bugs in the other parts of a complex system.



-- 
Dieter
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Christian Theune
Am Donnerstag, den 31.05.2007, 11:12 -0400 schrieb Jim Fulton:
> On May 31, 2007, at 11:09 AM, Christian Theune wrote:
> 
> > Hi,
> >
> > Am Donnerstag, den 31.05.2007, 10:56 -0400 schrieb Jim Fulton:
> >>> Would a requirement of "foobar 2.1*" mean every stable release of
> >>> "foobar 2.1" and all micro versions?
> >>
> >> I don't understand your question.
> >
> > The intention was to find out whether your proposed schema only  
> > applies
> > to the major versions or all version components.
> 
> Any version.  So: "foo 2.3.4" is equivalent to: "foo >=2.3.4,  
> <2.3.4.9".

Ok, thanks for the clarification.

-- 
gocept gmbh & co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Jim Fulton


On May 31, 2007, at 11:09 AM, Christian Theune wrote:


Hi,

Am Donnerstag, den 31.05.2007, 10:56 -0400 schrieb Jim Fulton:

Would a requirement of "foobar 2.1*" mean every stable release of
"foobar 2.1" and all micro versions?


I don't understand your question.


The intention was to find out whether your proposed schema only  
applies

to the major versions or all version components.


Any version.  So: "foo 2.3.4" is equivalent to: "foo >=2.3.4,  
<2.3.4.9".


Jim

--
Jim Fulton  mailto:[EMAIL PROTECTED]Python 
Powered!
CTO (540) 361-1714  
http://www.python.org
Zope Corporationhttp://www.zope.com http://www.zope.org



___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Christian Theune
Hi,

Am Donnerstag, den 31.05.2007, 10:56 -0400 schrieb Jim Fulton:
> > Would a requirement of "foobar 2.1*" mean every stable release of
> > "foobar 2.1" and all micro versions?
> 
> I don't understand your question.

The intention was to find out whether your proposed schema only applies
to the major versions or all version components.

> BTW, I intend to propose allowing versions to be used without *s.

Ah, fine too, I guess.

Christian

-- 
gocept gmbh & co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Jim Fulton


On May 31, 2007, at 10:51 AM, Christian Theune wrote:


Ah,

Am Donnerstag, den 31.05.2007, 10:12 -0400 schrieb Jim Fulton:

In thinking about how we might specify that we want to depend on
major versions but sometimes need to specify minimum versions, the
following occurred to me:
 [...]


Ah, I think it's a good idea. And it would still allow us to handle
restrictions when authors don't handle their project management  
like we

do.

Would a requirement of "foobar 2.1*" mean every stable release of
"foobar 2.1" and all micro versions?


I don't understand your question.

BTW, I intend to propose allowing versions to be used without *s.

Jim

--
Jim Fulton  mailto:[EMAIL PROTECTED]Python 
Powered!
CTO (540) 361-1714  
http://www.python.org
Zope Corporationhttp://www.zope.com http://www.zope.org



___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Christian Theune
Ah,

Am Donnerstag, den 31.05.2007, 10:12 -0400 schrieb Jim Fulton:
> In thinking about how we might specify that we want to depend on  
> major versions but sometimes need to specify minimum versions, the  
> following occurred to me:
>  [...]

Ah, I think it's a good idea. And it would still allow us to handle
restrictions when authors don't handle their project management like we
do.

Would a requirement of "foobar 2.1*" mean every stable release of
"foobar 2.1" and all micro versions?

Christian

-- 
gocept gmbh & co. kg - forsterstraße 29 - 06112 halle/saale - germany
www.gocept.com - [EMAIL PROTECTED] - phone +49 345 122 9889 7 -
fax +49 345 122 9889 1 - zope and plone consulting and development


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Stephan Richter
On Thursday 31 May 2007 10:25, Benji York wrote:
> Jim Fulton wrote:
> > In thinking about how we might specify that we want to depend on  
> > major versions but sometimes need to specify minimum versions, the  
> > following occurred to me:
>
> I really like it.  Of course we can do it without new syntax (unless I'm
> missing something), but the syntax would help a lot in making the intent
> clear.
>
> +1

I really like it too and the reasoning sounds good to me.

+1

Regards,
Stephan
-- 
Stephan Richter
CBU Physics & Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Benji York

Jim Fulton wrote:
In thinking about how we might specify that we want to depend on  
major versions but sometimes need to specify minimum versions, the  
following occurred to me:


I really like it.  Of course we can do it without new syntax (unless I'm 
missing something), but the syntax would help a lot in making the intent 
clear.


+1
--
Benji York
Senior Software Engineer
Zope Corporation
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



[Zope3-dev] A thought on backward compatibility and minimum versions

2007-05-31 Thread Jim Fulton


In thinking about how we might specify that we want to depend on  
major versions but sometimes need to specify minimum versions, the  
following occurred to me:


- Suppose that we always had access to the latest released version,

- Suppose that, within a major release, all releases were backward  
compatible,


Then I assert that there is no *need* to specify a minimum release  
within a major release.


Consider an example:

I depend on foo 2 (foo >=2 <2.999).  Now foo 2.5 introduces a new  
feature and I use this feature. In reality, I now depend on version  
2.5 or higher (and <2.999).  I shouldn't need to specify this. After  
all, I'll always get new releases.  Why wouldn't I?  Well, I might  
also depend on bar and bar might depend on foo <=2.4. Why would bar  
do this?  The only sane reason is that 2.5 introduced a backward- 
incompatible change, but we don't allow that.  If we don't have to  
worry about backward incompatible changes within a major release  
cycle, then there is no reason to set an upper limit and therefore,  
there is no *practical* need to specify a lower limit.


Combined with the fact that that great majority of packages don't  
change very much after they have become stable, I think most package  
dependencies could be expressed very simply if there was a simple  
syntax to specify *just* the major version.  In the context of  
setuptools, I think "*" could be used, as has been suggested, but  
without leading =s.  So, to specify foo version 2, I think the  
following syntax would be very reasonable:


  foo 2*

This wouldn't prevent someone from specifying a minimum version.  For  
example, to combine this with a minimum requirement of 2.5:


  foo 2* >=2.5

If people like these ideas, I'd be willing to lobby for them on the  
distutils sig, especially if I have help. :)


Note that the proposal would be that, a specification of the form if  
a version number followed by a * would be equivalent to a range:


   "project_name V*" is equivalent project_name "V.*" is equivalent  
to "project_name >=V 

(Or maybe equivalent to "project_name >=V.dev <=V.9".)

Also note that It's not clear that the * is needed.

"foo 2" isn't a valid specification.  We *could* extend the  
requirements language to allow a project name followed by a version  
number.  So:


   "prject_name V" is equivalent to "project_name >=V mailto:[EMAIL PROTECTED]Python 
Powered!
CTO (540) 361-1714  
http://www.python.org
Zope Corporationhttp://www.zope.com http://www.zope.org



___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com