On 19.05.2007, at 21:37, Stephen Colebourne wrote:

Torsten Curdt wrote:
On 18.05.2007, at 21:56, Thorbjørn Ravn Andersen wrote:
I suggest marking the offending methods as deprecated for the 1.x series, and schedule them for removal in the 2.x series.
Well, then let's create a 2.x branch and do a release without the classes *now*. No problem with that. Then it is communicated and people can choose. But doing *nothing* just because of binary compatibility is silly.

Doing nothing because of binary incompatibility is not silly, its essential. Commons has to be far more extreme than almost any other OSS project on this point.

Sticking to the broken takes compatibility to another level. Whether that is what the users demand - I doubt it.

In fact, I contend that commons is now in such a position that we can't make incompatible changes even in major version number releases.

What are major version number releases for then in your opinion?

Especially as no one *has* to upgrade libraries. And checking release notes if you do can't hurt if you upgrade.

Users are forced to upgrade all the time, and thats why they require backwards compatibility.

For example, if project A is complied against the old [beanutils] jar, while project B is compiled against the new [beanutils] jar, then it is impossible to use both project A and project B together. You cannot physically upgrade the jar file to the one B needs, because A needs the old one.
The only solutions to this at present are

-  for the 2.x series to have a different package name, including 'v2'
- to force the user to play with class loaders, so they can load two different versions of the same class

Have self contained jars and the problem (more or less) vanishes because A comes with just the code it needs from the old beanutils jar and B comes the new beanutils code. Unfortunately this will only work if the underlying dependency does not get exposed - like we have in this case. So we still have to be careful. But it would give a whole lot more freedom for changes and re-use IMO.

In summary, I suggest we all just let this one be. This isn't causing major pain IMO.

It feels a bit weird though. We are quite fussy about our releases and now this is meant to be "naaa ...let it be!"? How much pain was the broken cli jar causing that somehow got onto the maven repos?

Also I don't know why have to keep the "just drop it in" attitude up as such a high virtue.

The lesson should be to not have dependencies between commons projects wherever possible.

I still don't buy into the "no dependencies" approach. There is a difference between compile time and runtime. I do agree that self contained projects are easier to handle - but that is also possible with tools (as said before). Did I say that I hate duplicate code? ...that's why I am here at Commons.

cheers
--
Torsten



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

Reply via email to