Re: [all][collections] Solving binary incompatability

2004-05-13 Thread Michael Davey
Simon Kitching wrote:

On Thu, 2004-05-13 at 11:46, David Graham wrote:
 

--- Stephen Colebourne [EMAIL PROTECTED] wrote:
   

From: David Graham [EMAIL PROTECTED]
 

If I understand correctly, incompatible changes were made to
   

collections
 

after 3.0 and the next planned release is 3.1.  So, since you haven't
released 3.1 yet, you can still go back and fix the incompatibilities.
   

If only it was that easy :-) The incompatible change is between 2.1 and
3.0 - two released versions. The question is what to do about it.
 

You're allowed to have incompatibilities between different major version
numbers.  A big problem with Collections is its overuse in other commons
components which is in the process of being fixed.  Clients don't have to
migrate to 3.0 if they don't want so I don't see a problem.  If there's
demand you can always release bugfixes from the 2.1 series (ie. 2.1.1).
   

For what it's worth, my opinion is that things are ok as they are.
 

For what it is worth, I agree.

It is valid to introduce binary incompatibilities for major releases.
Ok, these ones weren't intentional, and could have been avoided. But
projects that use commons libs should have a plan for migrating across
major lib releases. 

Ok, it might slow the adoption of commons-collections 3.0, as projects
wait for new releases of all the other commons libs they depend on so
that none of the other libs require collections 2.1. But they'll get
there eventually.
If you really feel like releasing a 4.0, that would be a solution. But
I'm not sure projects will be happy leaping from 2.1 to 4.0, so this may
not speed up adoption of the new version anyway. I certainly don't think
a 3.1 release which is incompatible with 3.0 is a good idea!
 

After reading Simons comments, then re-reading Davids comments, I agree 
with David - if we were feeling generous, we would release 2.1.1 (or 
more likely 2.2) with as much of the new stuff from 3.0 as we can 
(without breaking compatibility) plus the 2.1-compatible IteratorUtils.  
It would also be nice to release a 3.0.1 with only documentation changes 
(to correctly document IteratorUtils) if another release of 3.x is not 
likely to be forthcoming any time soon.  I'd hope that 3.0.1 would not 
require a lot of effort from the release manager.

--
Michael
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


[all][collections] Solving binary incompatability

2004-05-12 Thread Stephen Colebourne
What should commons do when projects get released with unplanned binary
incompatabilities that cause issues, as with collections IteratorUtils?

I can see two basic solutions:
1) Procede onwards, and tell users to upgrade to the later version. This may
not be possible if two OSS projects have built against two versions of the
library.

2) Produce a replacement build that puts the API back to how things were.
This causes problems for anyone who built against the newer version of the
library.


For example, should [collections] next release be 4.0 instead of 3.1, such
that 4 is compatible with 2.1 but not 3? Release 3 then becomes deprecated.
Or does this just create another round of problems.

Any other bright ideas???

Stephen

PS. The particular problem is in IteratorUtils where 6 methods and 2
constants changed return type, which is binary incompatible.



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [all][collections] Solving binary incompatability

2004-05-12 Thread David Graham
We've been using major version numbers to allow non-deprecated
incompatible changes.  For example, if you deprecate something for 1.1 you
can remove it in 1.2 but if you want to make major breaking changes that
deprecation can't solve you need to go to 2.0.

If I understand correctly, incompatible changes were made to collections
after 3.0 and the next planned release is 3.1.  So, since you haven't
released 3.1 yet, you can still go back and fix the incompatibilities. 
Or, you could release 3.1 as 4.0 but that seems like a big jump for a
small amount of fixable changes.

David


--- Stephen Colebourne [EMAIL PROTECTED] wrote:
 What should commons do when projects get released with unplanned binary
 incompatabilities that cause issues, as with collections IteratorUtils?
 
 I can see two basic solutions:
 1) Procede onwards, and tell users to upgrade to the later version. This
 may
 not be possible if two OSS projects have built against two versions of
 the
 library.
 
 2) Produce a replacement build that puts the API back to how things
 were.
 This causes problems for anyone who built against the newer version of
 the
 library.
 
 
 For example, should [collections] next release be 4.0 instead of 3.1,
 such
 that 4 is compatible with 2.1 but not 3? Release 3 then becomes
 deprecated.
 Or does this just create another round of problems.
 
 Any other bright ideas???
 
 Stephen
 
 PS. The particular problem is in IteratorUtils where 6 methods and 2
 constants changed return type, which is binary incompatible.
 
 
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 





__
Do you Yahoo!?
Yahoo! Movies - Buy advance tickets for 'Shrek 2'
http://movies.yahoo.com/showtimes/movie?mid=1808405861 

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [all][collections] Solving binary incompatability

2004-05-12 Thread Stephen Colebourne
From: David Graham [EMAIL PROTECTED]
 If I understand correctly, incompatible changes were made to collections
 after 3.0 and the next planned release is 3.1.  So, since you haven't
 released 3.1 yet, you can still go back and fix the incompatibilities.

If only it was that easy :-) The incompatible change is between 2.1 and
3.0 - two released versions. The question is what to do about it.
Stephen


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [all][collections] Solving binary incompatability

2004-05-12 Thread David Graham

--- Stephen Colebourne [EMAIL PROTECTED] wrote:
 From: David Graham [EMAIL PROTECTED]
  If I understand correctly, incompatible changes were made to
 collections
  after 3.0 and the next planned release is 3.1.  So, since you haven't
  released 3.1 yet, you can still go back and fix the incompatibilities.
 
 If only it was that easy :-) The incompatible change is between 2.1 and
 3.0 - two released versions. The question is what to do about it.

You're allowed to have incompatibilities between different major version
numbers.  A big problem with Collections is its overuse in other commons
components which is in the process of being fixed.  Clients don't have to
migrate to 3.0 if they don't want so I don't see a problem.  If there's
demand you can always release bugfixes from the 2.1 series (ie. 2.1.1).

David


 Stephen




__
Do you Yahoo!?
Yahoo! Movies - Buy advance tickets for 'Shrek 2'
http://movies.yahoo.com/showtimes/movie?mid=1808405861 

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [all][collections] Solving binary incompatability

2004-05-12 Thread Simon Kitching
On Thu, 2004-05-13 at 11:46, David Graham wrote:
 --- Stephen Colebourne [EMAIL PROTECTED] wrote:
  From: David Graham [EMAIL PROTECTED]
   If I understand correctly, incompatible changes were made to
  collections
   after 3.0 and the next planned release is 3.1.  So, since you haven't
   released 3.1 yet, you can still go back and fix the incompatibilities.
  
  If only it was that easy :-) The incompatible change is between 2.1 and
  3.0 - two released versions. The question is what to do about it.
 
 You're allowed to have incompatibilities between different major version
 numbers.  A big problem with Collections is its overuse in other commons
 components which is in the process of being fixed.  Clients don't have to
 migrate to 3.0 if they don't want so I don't see a problem.  If there's
 demand you can always release bugfixes from the 2.1 series (ie. 2.1.1).
 

For what it's worth, my opinion is that things are ok as they are.

It is valid to introduce binary incompatibilities for major releases.
Ok, these ones weren't intentional, and could have been avoided. But
projects that use commons libs should have a plan for migrating across
major lib releases. 

Ok, it might slow the adoption of commons-collections 3.0, as projects
wait for new releases of all the other commons libs they depend on so
that none of the other libs require collections 2.1. But they'll get
there eventually.

If you really feel like releasing a 4.0, that would be a solution. But
I'm not sure projects will be happy leaping from 2.1 to 4.0, so this may
not speed up adoption of the new version anyway. I certainly don't think
a 3.1 release which is incompatible with 3.0 is a good idea!

Cheers,

Simon



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]