RE: [collections] Generifying Collections

2006-10-27 Thread Jörg Schaible
Torsten Curdt wrote on Thursday, October 26, 2006 11:20 PM:

 I still think that's a better world than package name changing every
 time we want to make a non-backwards compatible change.
 
 Frankly speaking - I don't really say a way around this if you want to
 save people from dependency hell.

+1

... and we're already there in our projects.

- Jörg

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



RE: [collections] Generifying Collections

2006-10-26 Thread Jörg Schaible
Hi Niall,

Niall Pemberton wrote on Thursday, October 26, 2006 3:18 AM:

[spip]

 Beyond this, there are some classes (like TypedList that we
 don't even want to port as they'd be pointless), plus my
 desire to create a smaller jar file (time depending), there
 is ample reason to not worry excessively about backwards
 compatability. We shoud target about 90% backwards
 compatible, with the rest being fixing API flaws and issues
 we have now.
 
 Don't you mean 0% backwards compatability - which is what changing
 the package name results in? 
 
 A simple port may appeal conceptually, but its not really viable at
 all. 
 
 I would disagree - if it really is the case that 90% could be ported
 with backwards compatibility, then it would seem viable IMO.

This is true for an application, but not for a library that is used 
wide-spread. I know a lot of commercial packages depending on some commons 
jars. See if my app is using a package of vendor a that depends on 
collections-2.0 and vendor B that depedns on collections-4.0. Now I cannot 
build/run my app anymore, since either package of vendor A fails or the one of 
vendor B. And don't call this hypothetic, we already have such a situation in 
real life altzough the lib versions are 95% binary compatible - it was 
unfortunately not enough.

Therefore the whole discussion is not really about introducing generics, but of 
handling incompatibilities between major version changes. And if we cannot get 
the compatibility right anyway, we can also make the next step and 
refactor/clean-up API between major versions much better along with increasing 
the version dependecy on the JDK.

This way a user might have to search and replace the package name in *his* 
library, but then he might be able to compile in 90% of the time and has a 100% 
certainty, that he does not break another app/library his artifact must coexist 
with.

 Having said that, its not me thats going to be doing the work, but it
 does seem valuable to discuss port vs. refactor rather than refactor
 being a defacto decission and just having an argument on package
 names. 

It is somewhat a general decision for commons.

- Jörg

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



Re: [collections] Generifying Collections

2006-10-26 Thread Torsten Curdt

I believe that our users will find 5 == JDK5 to be an easier concept to grasp.


+1

cheers
--
Torsten

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



Re: [collections] Generifying Collections

2006-10-26 Thread Torsten Curdt

On 10/25/06, James Carman [EMAIL PROTECTED] wrote:

For someone who uses Commons Collections a lot in their applications, this
is going to be quite a pain if I want to upgrade.  Yes, I realize that
there's such a thing as find and replace, but the fact that I have to do
that if I want to upgrade is just a bother.  That's my $0.02.


Well, easy ...then you don't upgrade ;)

Sorry, but the fact that an upgrade is not always is as easy as
replacing a jar is not an argument (IMO) As long as there is an
upgrade path it's up to the user to walk that path or not. The
important thing though is to have such a path.

cheers
--
Torsten

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



Re: [collections] Generifying Collections

2006-10-26 Thread Torsten Curdt

 One reason that I proposed (c) is simply that when you say
 collections5 or collections2 aloud it sounds like you're talking
 about a version of Collections, whereas if you say
 commons5-collections it's more suggestive of a fork, which is what
 we're really trying to get at.


...is it?

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



Re: [collections] Generifying Collections

2006-10-26 Thread Niall Pemberton

On 10/26/06, Rahul Akolkar [EMAIL PROTECTED] wrote:

On 10/25/06, Niall Pemberton [EMAIL PROTECTED] wrote:
snip/

 Having said that, its not me thats going to be doing the work, but it
 does seem valuable to discuss port vs. refactor rather than refactor
 being a defacto decission and just having an argument on package
 names.

snap/

:-)

Its not going to be me either, which is why I have (more or less)
retired from the conversation. You're right that this isn't about
package names, but really whether the intent is to produce a backwards
compatible generified collections:

 * If so, be encumbered with whatever that entails
 * If not, acknowledge with new collections package

It appears to me that the latter might bring more joy to the
development of the new collections and result in elegance and entirety
of the transformation, but for the reason I mentioned a couple of
paragraphs ago, my opinion is not as important as some others.


+1 - the final decision is down to whoever is going to work on it and
if they want to take the opportunity to refactor, then better to do
that and see progress rather than try and impose something which would
probably mean nothing happens. Still, I think its worth
debating/considering since IMO even if the decision stays the same,
its a better decision for having been fully discussed.


-Rahul

P.S.- Regarding your Collections#max question, using casts like you
suggest compromises the upper bound of T in the signature, and doesn't
convey the correct information to the reader (and arguably more
importantly, to the compiler, which consequently cannot guarantee the
author-intended type safety, at which point the value proposition of
using generics diminishes greatly)


Thx. I guess I've only seen the benefits of generics as saving a cast
and making the code more readable - since type safety hasn't ever
really caused me problems. Probably I need to make this mindset shift
for java5.


 Niall


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



Re: [collections] Generifying Collections

2006-10-26 Thread Niall Pemberton

On 10/26/06, Jörg Schaible [EMAIL PROTECTED] wrote:

Hi Niall,

Niall Pemberton wrote on Thursday, October 26, 2006 3:18 AM:

[spip]

 Beyond this, there are some classes (like TypedList that we
 don't even want to port as they'd be pointless), plus my
 desire to create a smaller jar file (time depending), there
 is ample reason to not worry excessively about backwards
 compatability. We shoud target about 90% backwards
 compatible, with the rest being fixing API flaws and issues
 we have now.

 Don't you mean 0% backwards compatability - which is what changing
 the package name results in?

 A simple port may appeal conceptually, but its not really viable at
 all.

 I would disagree - if it really is the case that 90% could be ported
 with backwards compatibility, then it would seem viable IMO.

This is true for an application, but not for a library that is used 
wide-spread. I know a lot of commercial packages depending on some commons 
jars. See if my app is using a package of vendor a that depends on 
collections-2.0 and vendor B that depedns on collections-4.0. Now I cannot 
build/run my app anymore, since either package of vendor A fails or the one of 
vendor B. And don't call this hypothetic, we already have such a situation in 
real life altzough the lib versions are 95% binary compatible - it was 
unfortunately not enough.



I think you mis-understand me - I get the issues with backwards
compatibility in libraries (I was around last time Collections caused
problems!). I was suggesting porting the 90% and doing something else
with the rest that couldn't be ported with backwards compatibility
(e.g. deprecate MutliMap and create generified MultiMap2) - with the
result being 100% backwards compatibility.

Niall


Therefore the whole discussion is not really about introducing generics, but of 
handling incompatibilities between major version changes. And if we cannot get 
the compatibility right anyway, we can also make the next step and 
refactor/clean-up API between major versions much better along with increasing 
the version dependecy on the JDK.

This way a user might have to search and replace the package name in *his* 
library, but then he might be able to compile in 90% of the time and has a 100% 
certainty, that he does not break another app/library his artifact must coexist 
with.

 Having said that, its not me thats going to be doing the work, but it
 does seem valuable to discuss port vs. refactor rather than refactor
 being a defacto decission and just having an argument on package
 names.

It is somewhat a general decision for commons.

- Jörg


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



Re: [collections] Generifying Collections

2006-10-26 Thread Henri Yandell

On 10/25/06, Rahul Akolkar [EMAIL PROTECTED] wrote:

On 10/25/06, Niall Pemberton [EMAIL PROTECTED] wrote:
snip/

 Having said that, its not me thats going to be doing the work, but it
 does seem valuable to discuss port vs. refactor rather than refactor
 being a defacto decission and just having an argument on package
 names.

snap/

:-)

Its not going to be me either, which is why I have (more or less)
retired from the conversation. You're right that this isn't about
package names, but really whether the intent is to produce a backwards
compatible generified collections:


There are two conversations overlapping each other :)

One is collections specific. What to actually do for the next major
version of collections/separate version of collections-generics.

The other is commons specific. When we make non-backwards compatible
API changes outside of the 0.x-1.0 dev cycle, do we let the user deal
with the random pain of transitive dependencies mismatching at runtime
after recompiling, or do we force them to deal with the non-random
pain of having to change their package names before recompiling.

This only really applies to recompiling - anyone who drops a major
version change in at runtime doesn't deserve any kind of support.

If you're pulling in a major version change, then it's also definitely
your responsibility to check your transitive dependencies. I don't
think we should be renaming packages to make that easier for people.

The only bit that makes the package rename tempting is that in many
cases the transitive is going to be more than just your development
group and commons, there will be other open source (well any external)
projects in between. So people will be held up from using those other
projects until they move.

I've mulled it for a bit, and I don't think that it's worth it for us
to try and change package names to make it easier for people not to be
held up by other entities. If we do that then there will be less
pressure for those projects to upgrade, and we'll just be causing lots
of pain for the many to save pain for a much smaller group. Admittedly
the many get their pain at compile time while the smaller group
wouldn't have found their pain until runtime if they don't have good
build practices.

Tomcat's not a good example btw - people rarely depend on Tomcat jars,
they don't put the major version in the package name (or any kind of
number) and there was lots of confusion when Tomcat 5 and 5.5 were
out.

So I'm -1 to the package stuff - just not convinced by the argument so
far. I do hope that we can get the generics stuff moving without the
package name bit being an issue until we release.

Hen

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



Re: [collections] Generifying Collections

2006-10-26 Thread Kris Nuttycombe

Henri Yandell wrote:

I've mulled it for a bit, and I don't think that it's worth it for us
to try and change package names to make it easier for people not to be
held up by other entities. If we do that then there will be less
pressure for those projects to upgrade, and we'll just be causing lots
of pain for the many to save pain for a much smaller group. Admittedly
the many get their pain at compile time while the smaller group
wouldn't have found their pain until runtime if they don't have good
build practices.
That's quite a hard line to take. A great many projects depend upon 
older versions of the commons jars, and getting the development group 
for a third-party jar that you depend upon to upgrade their dependencies 
can be a process that takes way too long for many development 
environments. Hell, this is a problem even within commons - I have an 
application that depends on Digester 1.7, which in turn depends upon 
Collections 2.1 while my code needs features from Collections 3.2, and 
the only reason it works is because 3.2 is backwards compatible for the 
features that Digester is using.


Realistically, users only have so much leverage on projects to get them 
to upgrade, and development teams only have so much time to cut new 
releases. Are we going to start doing point releases for our own 
projects for dependency version upgrades whenever someone requests it?

So I'm -1 to the package stuff - just not convinced by the argument so
far. I do hope that we can get the generics stuff moving without the
package name bit being an issue until we release.
I'm definitely +1 to getting moving, so would folks agree to at least 
create a branch from the head of collections where the development can 
get started? We can always move stuff around in SVN as needed at a later 
date.


Kris

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



Re: [collections] Generifying Collections

2006-10-26 Thread Will Pugh

Torsten Curdt wrote:

On 10/25/06, James Carman [EMAIL PROTECTED] wrote:
For someone who uses Commons Collections a lot in their applications, 
this

is going to be quite a pain if I want to upgrade.  Yes, I realize that
there's such a thing as find and replace, but the fact that I have to do
that if I want to upgrade is just a bother.  That's my $0.02.


Well, easy ...then you don't upgrade ;)

Sorry, but the fact that an upgrade is not always is as easy as
replacing a jar is not an argument (IMO) As long as there is an
upgrade path it's up to the user to walk that path or not. The
important thing though is to have such a path.
This seems like a strange argument, since the Don't Upgrade path is 
valid for people who are running into conflicts from API changes as well 
(and there are probably a lot more people that won't run into these 
problems if the removals are mostly focused on deprecated components.)


I understand that sometimes conflicts can be a bit round about, they 
upgrade to (or add) a new component of Y and it causes their 
commons-collections to get upgraded.  They still have the choice of not 
making this upgrade, or using that other component.  Or they have the 
choice of using JarJar or some other tool force package changes.  Or 
helping to fix the dependency if they are using some open source project.


I think we want to make the common case as easy as possible, and 
changing the package names makes the common case a pain in the butt.


I would suggest this means staying as close to backwards compatible as 
possible, with the removal of only things that have been deprecated.

cheers
--
Torsten

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



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



Re: [collections] Generifying Collections

2006-10-26 Thread Jörg Schaible
Kris Nuttycombe wrote:

 Henri Yandell wrote:
 I've mulled it for a bit, and I don't think that it's worth it for us
 to try and change package names to make it easier for people not to be
 held up by other entities. If we do that then there will be less
 pressure for those projects to upgrade, and we'll just be causing lots
 of pain for the many to save pain for a much smaller group. Admittedly
 the many get their pain at compile time while the smaller group
 wouldn't have found their pain until runtime if they don't have good
 build practices.
 That's quite a hard line to take. A great many projects depend upon
 older versions of the commons jars, and getting the development group
 for a third-party jar that you depend upon to upgrade their dependencies
 can be a process that takes way too long for many development
 environments. Hell, this is a problem even within commons - I have an
 application that depends on Digester 1.7, which in turn depends upon
 Collections 2.1 while my code needs features from Collections 3.2, and
 the only reason it works is because 3.2 is backwards compatible for the
 features that Digester is using.

I was just about to take the same example. Digester 1.7 also depends on
older beanutils 1.6.1 or ancient JCL 1.0(.0)

 Realistically, users only have so much leverage on projects to get them
 to upgrade, and development teams only have so much time to cut new
 releases. Are we going to start doing point releases for our own
 projects for dependency version upgrades whenever someone requests it?

Exaclty. And big commercial venders are even worse. If you do not use
exactly their delivered dependency, you can lose the maintenance because
you have an undefined environment.

 So I'm -1 to the package stuff - just not convinced by the argument so
 far. I do hope that we can get the generics stuff moving without the
 package name bit being an issue until we release.
 I'm definitely +1 to getting moving, so would folks agree to at least
 create a branch from the head of collections where the development can
 get started? We can always move stuff around in SVN as needed at a later
 date.

- Jörg


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



Re: [collections] Generifying Collections

2006-10-26 Thread Sandy McArthur

On 10/26/06, Henri Yandell [EMAIL PROTECTED] wrote:

I've mulled it for a bit, and I don't think that it's worth it for us
to try and change package names to make it easier for people not to be
held up by other entities. If we do that then there will be less
pressure for those projects to upgrade, and we'll just be causing lots
of pain for the many to save pain for a much smaller group. Admittedly
the many get their pain at compile time while the smaller group
wouldn't have found their pain until runtime if they don't have good
build practices.


I can support either way but if I'm going to support breaking
backwards compatibility I think we should release minor releases of
all components that are broken by this change, even if they aren't the
latest major release.

My personal preference is to let a few people who care about
refactoring collections perform some major surgery into a new package
name and produce something leaner, meaner and hopefully easier and
more robust to use.

--
Sandy McArthur

He who dares not offend cannot be honest.
- Thomas Paine

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



Re: [collections] Generifying Collections

2006-10-26 Thread Henri Yandell

On 10/26/06, Jörg Schaible [EMAIL PROTECTED] wrote:

Kris Nuttycombe wrote:

 Henri Yandell wrote:
 I've mulled it for a bit, and I don't think that it's worth it for us
 to try and change package names to make it easier for people not to be
 held up by other entities. If we do that then there will be less
 pressure for those projects to upgrade, and we'll just be causing lots
 of pain for the many to save pain for a much smaller group. Admittedly
 the many get their pain at compile time while the smaller group
 wouldn't have found their pain until runtime if they don't have good
 build practices.
 That's quite a hard line to take. A great many projects depend upon
 older versions of the commons jars, and getting the development group
 for a third-party jar that you depend upon to upgrade their dependencies
 can be a process that takes way too long for many development
 environments. Hell, this is a problem even within commons - I have an
 application that depends on Digester 1.7, which in turn depends upon
 Collections 2.1 while my code needs features from Collections 3.2, and
 the only reason it works is because 3.2 is backwards compatible for the
 features that Digester is using.

I was just about to take the same example. Digester 1.7 also depends on
older beanutils 1.6.1 or ancient JCL 1.0(.0)


Then the options are:

1) don't upgrade
2) yell at middle project to do a new release (ie: Digester in this case)
3) yell at us to do a backport release (ie: you need specific bugfixes
on the collections 2.x branch and not the 3.x one).
4) do it yourself and depend on an internal fork (of either 2 or 3).
5) risk that the library is backwards compatible for the necessary
features (by testing lots and hoping).

I still think that's a better world than package name changing every
time we want to make a non-backwards compatible change.


 Realistically, users only have so much leverage on projects to get them
 to upgrade, and development teams only have so much time to cut new
 releases. Are we going to start doing point releases for our own
 projects for dependency version upgrades whenever someone requests it?

Exaclty. And big commercial venders are even worse. If you do not use
exactly their delivered dependency, you can lose the maintenance because
you have an undefined environment.


Doesn't that mean you'd be kept off of Collections 4.x too?

Hen

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



Re: [collections] Generifying Collections

2006-10-26 Thread Stephen Colebourne

Kris Nuttycombe wrote:
I'm definitely +1 to getting moving, so would folks agree to at least 
create a branch from the head of collections where the development can 
get started? We can always move stuff around in SVN as needed at a later 
date.


I'm happy for you to start work now. I don't see that we need to hold 
you up :-)


You need to 'tag' the current collections trunk, then branch it. For the 
moment, the JDK5 branch can go in commons-proper rather than the 
sandbox. [collections] trunk needs to stay as the 3.3 / JDK1.2 line for now.


Stephen

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



Re: [collections] Generifying Collections

2006-10-26 Thread Kris Nuttycombe
Okay, fine with me. Do I need to request any special write access for 
SVN, or should I be okay? Thus far all I've done is work in the sandbox.


Kris

Stephen Colebourne wrote:

Kris Nuttycombe wrote:
I'm definitely +1 to getting moving, so would folks agree to at least 
create a branch from the head of collections where the development 
can get started? We can always move stuff around in SVN as needed at 
a later date.


I'm happy for you to start work now. I don't see that we need to hold 
you up :-)


You need to 'tag' the current collections trunk, then branch it. For 
the moment, the JDK5 branch can go in commons-proper rather than the 
sandbox. [collections] trunk needs to stay as the 3.3 / JDK1.2 line 
for now.


Stephen

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




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



Re: [collections] Generifying Collections

2006-10-26 Thread Stephen Colebourne

Kris Nuttycombe wrote:
Okay, fine with me. Do I need to request any special write access for 
SVN, or should I be okay? Thus far all I've done is work in the sandbox.


Depends on what the vote was when you joined. If there was no vote, and 
you just got sandbox access because you were already in ASF then we need 
to vote on you ;-) If you got voted on, then you should have commit rights.


You could try making a small commit (add or remove a space to a file) 
and see if it works.


Stephen

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



Re: [collections] Generifying Collections

2006-10-26 Thread Kris Nuttycombe
Yep, I was voted on and tested out adding a blank line to a file and it 
appears I'm set to go. Thanks!


Kris

Stephen Colebourne wrote:

Kris Nuttycombe wrote:
Okay, fine with me. Do I need to request any special write access for 
SVN, or should I be okay? Thus far all I've done is work in the sandbox.


Depends on what the vote was when you joined. If there was no vote, 
and you just got sandbox access because you were already in ASF then 
we need to vote on you ;-) If you got voted on, then you should have 
commit rights.


You could try making a small commit (add or remove a space to a file) 
and see if it works.


Stephen

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




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



Re: [collections] Generifying Collections

2006-10-26 Thread Torsten Curdt

 Well, easy ...then you don't upgrade ;)

 Sorry, but the fact that an upgrade is not always is as easy as
 replacing a jar is not an argument (IMO) As long as there is an
 upgrade path it's up to the user to walk that path or not. The
 important thing though is to have such a path.
This seems like a strange argument, since the Don't Upgrade path is
valid for people who are running into conflicts from API changes as well
(and there are probably a lot more people that won't run into these
problems if the removals are mostly focused on deprecated components.)


Sorry, not sure I get what you are saying

If it's just your decision to upgrade a library you should not be moaning about
work. We are talking about a major API change! Don't expect that to be done
with a jar replacement.

If you have to upgrade because another library is depending on another version
that's another story ...and then comes the question whether that's easy or not.


I understand that sometimes conflicts can be a bit round about, they
upgrade to (or add) a new component of Y and it causes their
commons-collections to get upgraded.  They still have the choice of not
making this upgrade, or using that other component.  Or they have the
choice of using JarJar or some other tool force package changes.  Or
helping to fix the dependency if they are using some open source project.

I think we want to make the common case as easy as possible, and
changing the package names makes the common case a pain in the butt.


Your project depends on A and B. A depends on the old-style collections
while B already made the move and uses the new collections. Now what?
As it is an incompatible change the only thing is trying to push A to upgrade
its dependency. (or jarjar magic) THAT is what I call a PITA. While otherwise
they would be happily living next to each other and everyone is happy.

For sure we could provide some scripts or even eclipse refactoring scripts
if necessary/possible. Most likely you will only need to remove all imports and
ask eclipse to organize imports on your code base anyway. To me that sounds
easier than trying to squeeze (let's face it) a new API into the same package.

cheers
--
Torsten

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



Re: [collections] Generifying Collections

2006-10-26 Thread Torsten Curdt

I still think that's a better world than package name changing every
time we want to make a non-backwards compatible change.


Frankly speaking - I don't really say a way around this if you want to
save people from dependency hell.

cheers
--
Torsten

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



RE: [collections] Generifying Collections

2006-10-25 Thread Jörg Schaible
Hi Kris,

Kris Nuttycombe wrote on Tuesday, October 24, 2006 5:10 PM:

 (Compare this with the JDK where they had to jump through ridiculous
 hoops to make generics fully backwards-compatible, and created a
 half-arsed mess in the process...)
 
 
 This is the real problem. We must use a different namespace
 for the Java package itself. A lot of stuff depends on c-c
 (http://www.mavenregistry.com/search/artifact/19973 +
 http://www.mavenregistry.com/search/depended_upon_artifacts,
 quite impressive) and even in 3 years there will be stuff
 available that still depends on those old versions.
 
 A new package name solves the problem of coexistence as
 long as the jar name contains the version (e.g.
 commons-collection-3.1  commons-collection-4.2) but it
 creates new problems for e.g. Maven, that cannot handle two
 (binary distinct) versions at the same time.
 
 So there are three points to decide:
 - does a new package name imply a different Jakarta Commons project?
 - shall we give up existing brands (it means in the end the
 establishment of a new brand for all commons projects)?
 - if we keep the project name, do we have to accept the
 inevitable limits of popular tools such as Maven?
 
 - Jörg
 
 One possibility that occurs to me is that we could take the
 problem to a
 higher level. Since a number of projects are going to be facing this
 problem, what about a package rename at the commons level - say,
 org.apache.commons2 or org.apache.commons5? This way, the
 Maven problem
 and the package rename problems can be solved, and yet we can
 still keep
 the individual brand names untainted. This can also scale
 with new JDK
 releases - you would end up with a commons for each release
 where you
 have a binary incompatible break, but this seems less obnoxious to me
 than having each project have to keep up with a
 component-level naming
 scheme.

well, I don't think this is necessary for complete commons, but we may consider 
doing so for major releases of the individual componnets. Collections might 
have org.apache.commons.collections4 for the next major version ... and so it 
would not interfere with older versions, have individual groiupIds (concerning 
Maven) and the artifacts can coexist, the version scheme is not dependent on 
the JDK and the minimal JDK requirement can be changed easily.

- Jörg

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



Re: [collections] Generifying Collections

2006-10-25 Thread James Carman

For someone who uses Commons Collections a lot in their applications, this
is going to be quite a pain if I want to upgrade.  Yes, I realize that
there's such a thing as find and replace, but the fact that I have to do
that if I want to upgrade is just a bother.  That's my $0.02.


On 10/25/06, Jörg Schaible [EMAIL PROTECTED] wrote:


Hi Kris,

Kris Nuttycombe wrote on Tuesday, October 24, 2006 5:10 PM:

 (Compare this with the JDK where they had to jump through ridiculous
 hoops to make generics fully backwards-compatible, and created a
 half-arsed mess in the process...)


 This is the real problem. We must use a different namespace
 for the Java package itself. A lot of stuff depends on c-c
 (http://www.mavenregistry.com/search/artifact/19973 +
 http://www.mavenregistry.com/search/depended_upon_artifacts,
 quite impressive) and even in 3 years there will be stuff
 available that still depends on those old versions.

 A new package name solves the problem of coexistence as
 long as the jar name contains the version (e.g.
 commons-collection-3.1  commons-collection-4.2) but it
 creates new problems for e.g. Maven, that cannot handle two
 (binary distinct) versions at the same time.

 So there are three points to decide:
 - does a new package name imply a different Jakarta Commons project?
 - shall we give up existing brands (it means in the end the
 establishment of a new brand for all commons projects)?
 - if we keep the project name, do we have to accept the
 inevitable limits of popular tools such as Maven?

 - Jörg

 One possibility that occurs to me is that we could take the
 problem to a
 higher level. Since a number of projects are going to be facing this
 problem, what about a package rename at the commons level - say,
 org.apache.commons2 or org.apache.commons5? This way, the
 Maven problem
 and the package rename problems can be solved, and yet we can
 still keep
 the individual brand names untainted. This can also scale
 with new JDK
 releases - you would end up with a commons for each release
 where you
 have a binary incompatible break, but this seems less obnoxious to me
 than having each project have to keep up with a
 component-level naming
 scheme.

well, I don't think this is necessary for complete commons, but we may
consider doing so for major releases of the individual componnets.
Collections might have org.apache.commons.collections4 for the next major
version ... and so it would not interfere with older versions, have
individual groiupIds (concerning Maven) and the artifacts can coexist, the
version scheme is not dependent on the JDK and the minimal JDK requirement
can be changed easily.

- Jörg

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




RE: [collections] Generifying Collections

2006-10-25 Thread Jörg Schaible
James Carman wrote on Wednesday, October 25, 2006 11:50 AM:

 For someone who uses Commons Collections a lot in their
 applications, this
 is going to be quite a pain if I want to upgrade.  Yes, I realize that
 there's such a thing as find and replace, but the fact that I
 have to do
 that if I want to upgrade is just a bother.  That's my $0.02.

I know, but you really start to hate the situation, if you rely on 3.x and some 
old component you're also dependend on needs 2.x (and cannot use 3.x becasue of 
compatibility).

- Jörg

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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Colebourne
Stephen Colebourne wrote:
  Because commons isn't like other OSS projects. We can't go around
  changing our APIs freely, even between major versions. Its a simple case
  of us being at the bottom of the stack of jars. If we do change an API,
  any API then jar hell ensues because higher OSS projects will clash on
  their required versions of [collections].
Henri wrote:
 I'm not convinced by that. What you're saying is that if we want to
 have a major API change in a component, that we need to change the
 package name so two pieces of code can sit side by side. If that's
 true, then we should do it for all major versions (as major API change
 is the defining factor of major version changing) and stay within the
 same component.
 Having a bit of deja vu - think we had this discussion 6 months ago

Actually it was over [net], and recently. And yes, its not nice, but a 
different package name is all that we get given by Java at present. However, 
there are cases where a major version change can be done without breaking 
backwards compatability - typically, where the only change is to remove 
deprecations ([lang] 3?).

We could just say that its the responsibility of everyone using commons to 
repackage our code into their package structure, but IMHO thats just not 
practical, and quite wasteful.

 Basically - we need to start putting the major version in our package
 names. I hate that, but I can see the need.
Yep, it sucks. Yep, its essential.

 So this would be a branch of collections, with a package name
 change to org.apache.commons.collections4.*.
Well, the number is dependent on the strategy we are trying to achieve:

a) using '4' would indicate that every major version will have a new package 
name, but then you can't use a major version to just remove deprections (a 
compatible major version change)

b) using '5' would indicate the technology reason for the version. The package 
would be commons-collections5-1.0.

c) using '5' as the commons name - commons5-collections-1.0

I favour (b) as I view this as a fork of [collections] for a new technology. I 
believe the language changes in JDK5 are significant enough to warrant a fork.

 Would be sweet to have a build system that could deal with moving
 source from org/apache/commons/collections/ to the correct directory
 and package name prior to compiing/source-packaging. Might be worth
 playing with some Ant scripts for that.
Not sure how that helps. The new JDK5 code will probably be a proper fork, with 
some significant method name/class changes.

Stephen





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



Re: [collections] Generifying Collections

2006-10-25 Thread Mario Ivankovits

 Well, the number is dependent on the strategy we are trying to achieve:

 a) using '4' would indicate that every major version will have a new package 
 name, but then you can't use a major version to just remove deprections (a 
 compatible major version change)

 b) using '5' would indicate the technology reason for the version. The 
 package would be commons-collections5-1.0.

 c) using '5' as the commons name - commons5-collections-1.0
   
d) using '2' would just indicate a major major next generation
release. The package would be commons-collections2-1.0.

I'd prefer (d) as then we can have a commons-collections3 in the future
if needed without having it to couple to a JDK version, in case the fork
is not coupled to a new technology brought by the JVM.


Ciao,
Mario


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



RE: [collections] Generifying Collections

2006-10-25 Thread Jörg Schaible
Mario Ivankovits wrote on Wednesday, October 25, 2006 3:03 PM:

 Well, the number is dependent on the strategy we are trying to
 achieve: 
 
 a) using '4' would indicate that every major version will
 have a new package name, but then you can't use a major
 version to just remove deprections (a compatible major version change)
 
 b) using '5' would indicate the technology reason for the
 version. The package would be commons-collections5-1.0.
 
 c) using '5' as the commons name - commons5-collections-1.0
 
 d) using '2' would just indicate a major major next generation
 release. The package would be commons-collections2-1.0.
 
 I'd prefer (d) as then we can have a commons-collections3 in
 the future
 if needed without having it to couple to a JDK version, in
 case the fork
 is not coupled to a new technology brought by the JVM.

(d) +1

IMHO the best solution for the complete unsatisfying topic.

- Jörg

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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Colebourne
From: Mario Ivankovits [EMAIL PROTECTED]
  Well, the number is dependent on the strategy we are trying to achieve:
 
  a) using '4' would indicate that every major version will have a new 
  package name, but then you can't use a major version to just remove 
  deprections (a compatible major version change)
 
  b) using '5' would indicate the technology reason for the version. The 
  package would be commons-collections5-1.0.
 
  c) using '5' as the commons name - commons5-collections-1.0

 d) using '2' would just indicate a major major next generation
 release. The package would be commons-collections2-1.0.

 I'd prefer (d) as then we can have a commons-collections3 in the future
 if needed without having it to couple to a JDK version, in case the fork
 is not coupled to a new technology brought by the JVM.

I believe that our users will find 5 == JDK5 to be an easier concept to grasp.


Stephen





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



Re: [collections] Generifying Collections

2006-10-25 Thread Kris Nuttycombe

Stephen Colebourne wrote:

From: Mario Ivankovits [EMAIL PROTECTED]
  

Well, the number is dependent on the strategy we are trying to achieve:

a) using '4' would indicate that every major version will have a new package 
name, but then you can't use a major version to just remove deprections (a 
compatible major version change)

b) using '5' would indicate the technology reason for the version. The package 
would be commons-collections5-1.0.

c) using '5' as the commons name - commons5-collections-1.0
  
d) using '2' would just indicate a major major next generation release. The package would be commons-collections2-1.0.
  


I believe that our users will find 5 == JDK5 to be an easier concept to grasp
One reason that I proposed (c) is simply that when you say 
collections5 or collections2 aloud it sounds like you're talking 
about a version of Collections, whereas if you say 
commons5-collections it's more suggestive of a fork, which is what 
we're really trying to get at. Again, I think that this convention would 
be useful for other commons projects trying to make the same switch.


(a) -0
(b) +0
(c) +1
(d) -0



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



Re: [collections] Generifying Collections

2006-10-25 Thread Niall Pemberton

On 10/21/06, Stephen Colebourne [EMAIL PROTECTED] wrote:

Henri Yandell wrote:
 Why not just start a branch within Collections?

 I don't see why this is a new component, are we going to be advising
 people to use Collections 3.x on JDK 1.5+ for any reasons other than
 legacy or instability of our generified version?

 My view is to make a collections-generics branch in collections with a
 view to it being Collections 4.0.

Because commons isn't like other OSS projects. We can't go around
changing our APIs freely, even between major versions. Its a simple case
of us being at the bottom of the stack of jars. If we do change an API,
any API then jar hell ensues because higher OSS projects will clash on
their required versions of [collections].

Thus, it has to be a new package, and this is best thought of as a new
component.

(Compare this with the JDK where they had to jump through ridiculous
hoops to make generics fully backwards-compatible, and created a
half-arsed mess in the process...)



From a simplistic user perspective seems to me that the compatibility

achieved by the JDK is successful. I don't understand the intricacies
required to generify a library, but if we could do the same wouldn't
this be the best solution from a user perspective?

Perhaps you could expand on what the issues are with the JDK approach
and why they're not desirable in Commons Collections - when I look at
the differences for example between the generified and non-generified
versions of java.util.List, I don't see the mess you describe.

Also I don't understand the compatibilty issue - does the following,
for example, constitute a break in compatibility?

Going from:
   boolean add(object o)
to:
  boolean add(E e)

Apologies if these are stupid questions, but seems to me that if we
could retain backwards compatibility it would be the optimum solution
from a user perspective.

Niall


Stephen


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



Re: [collections] Generifying Collections

2006-10-25 Thread James Carman

I don't like forking all of commons together.  To say
commons5-collections-1.0 doesn't work for me.  Then, we have to get all of
the commons projects to decide on fork points.  Am I understanding (c)
correctly?


On 10/25/06, Kris Nuttycombe [EMAIL PROTECTED] wrote:


Stephen Colebourne wrote:
 From: Mario Ivankovits [EMAIL PROTECTED]

 Well, the number is dependent on the strategy we are trying to
achieve:

 a) using '4' would indicate that every major version will have a new
package name, but then you can't use a major version to just remove
deprections (a compatible major version change)

 b) using '5' would indicate the technology reason for the version. The
package would be commons-collections5-1.0.

 c) using '5' as the commons name - commons5-collections-1.0

 d) using '2' would just indicate a major major next generation
release. The package would be commons-collections2-1.0.


 I believe that our users will find 5 == JDK5 to be an easier concept
to grasp
One reason that I proposed (c) is simply that when you say
collections5 or collections2 aloud it sounds like you're talking
about a version of Collections, whereas if you say
commons5-collections it's more suggestive of a fork, which is what
we're really trying to get at. Again, I think that this convention would
be useful for other commons projects trying to make the same switch.

(a) -0
(b) +0
(c) +1
(d) -0



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




Re: [collections] Generifying Collections

2006-10-25 Thread Henri Yandell

On 10/25/06, Stephen Colebourne [EMAIL PROTECTED] wrote:


Well, the number is dependent on the strategy we are trying to achieve:

a) using '4' would indicate that every major version will have a new package 
name, but then you can't use a major version to just remove deprections (a 
compatible major version change)

b) using '5' would indicate the technology reason for the version. The package 
would be commons-collections5-1.0.

c) using '5' as the commons name - commons5-collections-1.0

I favour (b) as I view this as a fork of [collections] for a new technology. I 
believe the language changes in JDK5 are significant enough to warrant a fork.


The reason I don't think it's a fork is that I don't think we'll be
saying Use Old Collections in JDK 5.0 for any reason beyond
backwards compat. This is the new version of Collections and the
current one would be supported in the same way that the 2.x tree has
been. Basically for something to be a fork we have to have a
indefinite long term goal to keep both going - one does not replace
the other. In this case it seems odd for us to maintain a
non-generified version for reasons other than legacy.

I can see it being intangible for a while and being a research branch
rather than the mainline.

The later d) of having collections2 is a bad idea - just look at the
weirdness of Axis2 1.0.

With a), you suggested that we wouldn't have to change package names
when a new major version only removed deprecations. Even in this case
it seems that users are going to have pain; apart from a compiler
warning a deprecation removal is the same as any other removal.

So I think it's either a) or we let the user's deal with the pain as
they have been up to now (said pain does create impetus for re-users
to upgrade - though possibly they'll just inline the bits they use as
with Spring).

c) is going to be more painful to search and replace, and implies a
common commons jar that we've never been in favour of before.

b) implies a fork - though we did do net5 for net's new version didn't we?

---

As a separate idea that someone suggested to me at work; how about a
facade on top of collections that provides generified inputs/outputs.
Could we extend the classes and wrap the static methods to get such a
thing?

Long term I'd prefer for the core collections to be generified with an
old-style wrapper, but then we get into class compatibility issues (49
vs 48) and missing APIs when trying to target older jvms.

Hen

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



Re: [collections] Generifying Collections

2006-10-25 Thread Kris Nuttycombe

James Carman wrote:

I don't like forking all of commons together.  To say
commons5-collections-1.0 doesn't work for me.  Then, we have to get 
all of

the commons projects to decide on fork points.  Am I understanding (c)
correctly?
I don't think there has to be commons-wide fork at all. I just see the 
name change at the commons level rather than the package level being an 
approach that can be useful to other packages, so that the other 
projects that will inevitably make the switch can do so in a uniform 
manner.


In the end, I'm most interested that whatever method is adopted be a 
solution that can work for all of the commons projects that may want to 
generify. BeanUtils could certainly be improved with generics, as could 
Lang and others. In my shop, at least, we've been using JDK5 for over a 
year now and the lack of progress towards creating generic versions of 
the Commons components bespeaks a bit of stagnation.  I've got the itch 
for generics across the board; I'd like to be able to scratch it.


Kris

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



Re: [collections] Generifying Collections

2006-10-25 Thread Mario Ivankovits

 Perhaps you could expand on what the issues are with the JDK approach
 and why they're not desirable in Commons Collections - when I look at
 the differences for example between the generified and non-generified
 versions of java.util.List, I don't see the mess you describe.
Yes, this is something I had in mind too, just didn't bring it up as I
thought the team has good reasons to fork (or whatever), but maybe
there is no need at all to fork or package rename as long as we do not
use a new jdk5 api.

---
Mario


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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Colebourne
From: Niall Pemberton [EMAIL PROTECTED]
 From a simplistic user perspective seems to me that the compatibility
 achieved by the JDK is successful. I don't understand the intricacies
 required to generify a library, but if we could do the same wouldn't
 this be the best solution from a user perspective?
 
 Perhaps you could expand on what the issues are with the JDK approach
 and why they're not desirable in Commons Collections - when I look at
 the differences for example between the generified and non-generified
 versions of java.util.List, I don't see the mess you describe.

The problem is erasure. The JDK wipes all knowledge of the type that you 
connect to the collection. Thus

ListString list = new ArrayList();
if (list instanceof ListInteger) {
}

fails to compile as the String type is erased.

In order to preserve backwards compatability, Sun had to go to extreme lengths 
to ensure that the erased type of each generics element corresponds to the 
previous type of the method. Consider the max method on Collections:

public static T extends Object  Comparable? super T T max(Collection? 
extends T coll)

Where because Object comes before Comparable in the list of bound types, its 
Object that the method signature gets erased to. Now thats pretty nasty.


For [collections], there are cases worse than this, such as MultiMap, where the 
sf projects have demonstrated that it is not possible to generify the class 
without breaking backwards compatability, typically because our interface isn't 
a true implementation of the original interface.


Beyond this, there are some classes (like TypedList that we don't even want to 
port as they'd be pointless), plus my desire to create a smaller jar file (time 
depending), there is ample reason to not worry excessively about backwards 
compatability. We shoud target about 90% backwards compatible, with the rest 
being fixing API flaws and issues we have now.

A simple port may appeal conceptually, but its not really viable at all.

Stephen





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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Colebourne
From: Kris Nuttycombe [EMAIL PROTECTED]
James Carman wrote:
  I don't like forking all of commons together.  To say
  commons5-collections-1.0 doesn't work for me.  Then, we have to get 
  all of
  the commons projects to decide on fork points.  Am I understanding (c)
  correctly?
 I don't think there has to be commons-wide fork at all. I just see the 
 name change at the commons level rather than the package level being an 
 approach that can be useful to other packages, so that the other 
 projects that will inevitably make the switch can do so in a uniform 
 manner.
 
 In the end, I'm most interested that whatever method is adopted be a 
 solution that can work for all of the commons projects that may want to 
 generify. BeanUtils could certainly be improved with generics, as could 
 Lang and others. In my shop, at least, we've been using JDK5 for over a 
 year now and the lack of progress towards creating generic versions of 
 the Commons components bespeaks a bit of stagnation.  I've got the itch 
 for generics across the board; I'd like to be able to scratch it.

Yes. I regret using the word 'fork' now, as it has negative connotations. And I 
agree that quite a few projects need generifications (or rather 
Java5-ification). Now I'm on JDK5 at work (and its been a massive pain 
upgrading) I'd like commons to support JDK5.

Consider [lang] - a good proportion of [lang] is providing ways to support JDK5 
features on earlier JDKs. We might not choose to support them once we have a 
JDK5 version. The same applies to [collections].

The commons5 name is quite a nice way to express all this. Is it really much 
different to how Tomcat manages J2EE versions? And I definitely do not think it 
involves forking the whole of commons!!! Not sure where that idea comes from, 
but 'commons5' is just a naming conventinon (and package name) for those 
projects which want a JDK5+ specific version.


We need to remember why JDK5 is so important - its because its almost a whole 
new language. Its not a small incremental step like prior upgrades. We should 
treat it as such. (Especially as lots of big enterprises are perfectly happy on 
JDK1.4 and aren't planning to upgrade)


Stephen





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



Re: [collections] Generifying Collections

2006-10-25 Thread Will Pugh
I'm not sure we're optimizing for the right thing by changing the 
package names and creating parralel forks for Generic Collections.  
Generics have done a pretty good job of dealing with backwards 
compatibility.  It feels like we will make the upgrade path for the vast 
majority of people more difficult for the advantage of a pretty small 
few.  What specific BackCompat issues are you expecting?  When I hear 
Generifying Collections, I keep thinking you will keep the APIs the 
same, but you will simply add generic support to them.  Am I off?


Example:
If you generi-size


public class TestClass {
   public Object Get(Object t) {
   return t;
   }
}

to be

public class TestClassT {
  
   public T Get(T t) {

   return t;
   }

}


It is still valid to either use the generics or not, e.g.  both of these 
still work.



TestClassTester   test1 = new TestClassTester();
TestClass   test2 = new TestClass();

tester = test1.Get(tester);
tester = (Tester) test2.Get(tester);


Therefore, simply upgrading the library should not cause you backwards 
compat problems, unless there is something I'm missing.  However, you 
will make it much harder for people to simply upgrade to the new release.


   Thanks,
   --Will


Stephen Colebourne wrote:

Stephen Colebourne wrote:
  

Because commons isn't like other OSS projects. We can't go around
changing our APIs freely, even between major versions. Its a simple case
of us being at the bottom of the stack of jars. If we do change an API,
any API then jar hell ensues because higher OSS projects will clash on
their required versions of [collections].
  

Henri wrote:
  

I'm not convinced by that. What you're saying is that if we want to
have a major API change in a component, that we need to change the
package name so two pieces of code can sit side by side. If that's
true, then we should do it for all major versions (as major API change
is the defining factor of major version changing) and stay within the
same component.
Having a bit of deja vu - think we had this discussion 6 months ago



Actually it was over [net], and recently. And yes, its not nice, but a 
different package name is all that we get given by Java at present. However, 
there are cases where a major version change can be done without breaking 
backwards compatability - typically, where the only change is to remove 
deprecations ([lang] 3?).

We could just say that its the responsibility of everyone using commons to 
repackage our code into their package structure, but IMHO thats just not 
practical, and quite wasteful.

  

Basically - we need to start putting the major version in our package
names. I hate that, but I can see the need.


Yep, it sucks. Yep, its essential.

  

So this would be a branch of collections, with a package name
change to org.apache.commons.collections4.*.


Well, the number is dependent on the strategy we are trying to achieve:

a) using '4' would indicate that every major version will have a new package 
name, but then you can't use a major version to just remove deprections (a 
compatible major version change)

b) using '5' would indicate the technology reason for the version. The package 
would be commons-collections5-1.0.

c) using '5' as the commons name - commons5-collections-1.0

I favour (b) as I view this as a fork of [collections] for a new technology. I 
believe the language changes in JDK5 are significant enough to warrant a fork.

  

Would be sweet to have a build system that could deal with moving
source from org/apache/commons/collections/ to the correct directory
and package name prior to compiing/source-packaging. Might be worth
playing with some Ant scripts for that.


Not sure how that helps. The new JDK5 code will probably be a proper fork, with 
some significant method name/class changes.

Stephen





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

  


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



Re: [collections] Generifying Collections

2006-10-25 Thread Will Pugh

Stephen Colebourne wrote:

The problem is erasure. The JDK wipes all knowledge of the type that you 
connect to the collection. Thus

ListString list = new ArrayList();
if (list instanceof ListInteger) {
}

fails to compile as the String type is erased.
In order to preserve backwards compatability, Sun had to go to extreme lengths 
to ensure that the erased type of each generics element corresponds to the 
previous type of the method. Consider the max method on Collections:

public static T extends Object  Comparable? super T T max(Collection? 
extends T coll)

Where because Object comes before Comparable in the list of bound types, its 
Object that the method signature gets erased to. Now thats pretty nasty.
  
Are fixes like this really grosser than a full package rename?  Seems 
like the amount of code changed by fixing this in collections is much 
less than the amount of code changed if all the new users of collections 
need to change package names.  Thus, the average upgrade experience 
would be better.

For [collections], there are cases worse than this, such as MultiMap, where the 
sf projects have demonstrated that it is not possible to generify the class 
without breaking backwards compatability, typically because our interface isn't 
a true implementation of the original interface.

  
If there are specific classes where you cannot fix them, it might make 
more sense to make parrallel classes rather than a whole package 
change.  It seems like there will be more collections where creating 
generics is straightforward, than ones where it is impossible.

Beyond this, there are some classes (like TypedList that we don't even want to 
port as they'd be pointless), plus my desire to create a smaller jar file (time 
depending), there is ample reason to not worry excessively about backwards 
compatability. We shoud target about 90% backwards compatible, with the rest 
being fixing API flaws and issues we have now.

A simple port may appeal conceptually, but its not really viable at all.

Stephen





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

  


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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Smith
I agree on the latter point - that JSE5 is in some ways a complete shift 
in Java paradigm. Whatever solution is chosen going forward, +1 for a 
cross-Commons approach... otherwise figuring out compatibility between 
Commons JARs will become even tougher.


I dislike the idea of putting version numbers into package names, but I 
don't see a realistic alternative giving the fact that Java's handling 
of JAR manifest versioning isn't as rigorous as we might like for this 
sort of problem.


org.apache.commons.collection5.CollectionUtils is all well and good, but 
what happens when we migrate to Mustang? Do we go with 
org.apache.commons.lang6?

--
Stephen Smith, MEng (Wales).
http://www.stephen-smith.co.uk/

Stephen Colebourne wrote:

From: Kris Nuttycombe [EMAIL PROTECTED]
James Carman wrote:

I don't like forking all of commons together.  To say
commons5-collections-1.0 doesn't work for me.  Then, we have to get 
all of

the commons projects to decide on fork points.  Am I understanding (c)
correctly?
I don't think there has to be commons-wide fork at all. I just see the 
name change at the commons level rather than the package level being an 
approach that can be useful to other packages, so that the other 
projects that will inevitably make the switch can do so in a uniform 
manner.


In the end, I'm most interested that whatever method is adopted be a 
solution that can work for all of the commons projects that may want to 
generify. BeanUtils could certainly be improved with generics, as could 
Lang and others. In my shop, at least, we've been using JDK5 for over a 
year now and the lack of progress towards creating generic versions of 
the Commons components bespeaks a bit of stagnation.  I've got the itch 
for generics across the board; I'd like to be able to scratch it.


Yes. I regret using the word 'fork' now, as it has negative connotations. And I 
agree that quite a few projects need generifications (or rather 
Java5-ification). Now I'm on JDK5 at work (and its been a massive pain 
upgrading) I'd like commons to support JDK5.

Consider [lang] - a good proportion of [lang] is providing ways to support JDK5 
features on earlier JDKs. We might not choose to support them once we have a 
JDK5 version. The same applies to [collections].

The commons5 name is quite a nice way to express all this. Is it really much 
different to how Tomcat manages J2EE versions? And I definitely do not think it 
involves forking the whole of commons!!! Not sure where that idea comes from, 
but 'commons5' is just a naming conventinon (and package name) for those 
projects which want a JDK5+ specific version.


We need to remember why JDK5 is so important - its because its almost a whole 
new language. Its not a small incremental step like prior upgrades. We should 
treat it as such. (Especially as lots of big enterprises are perfectly happy on 
JDK1.4 and aren't planning to upgrade)


Stephen





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






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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Kestle
(Ok - how bizarre - I sent this mail yesterday (2 days?), but it went 
nowhere...)


Definitely.  It's built to be as api compatible as possible with
collections, while upgrading to generics.  It's also going through the
process of making it easier to use from a generics side of things
(doesn't give as many compiler warnings).

There are a few things that I have noticed that have been deprecated
prematurely, but it's way ahead of just converting the code to generics.

Let's get going on this... I have a whole heap of architecture tickets I
want to open (can't against the sourceforge project, as it's api
compatible :)

AND they've been wanting to get into the sandbox for a while, but there
hasn't been the community to support it (from what I can see)...

Cheers

Stephen

Niall Pemberton wrote:

What about the guys that have already done this in sourceforge?

http://sourceforge.net/projects/collections

If what they've done is any good, it would make sense to start with
that they have and get them invloved here.

Niall
  
  




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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Colebourne

Will Pugh wrote:
I'm not sure we're optimizing for the right thing by changing the 
package names and creating parralel forks for Generic Collections.  
Generics have done a pretty good job of dealing with backwards 
compatibility.  It feels like we will make the upgrade path for the vast 
majority of people more difficult for the advantage of a pretty small 
few.  What specific BackCompat issues are you expecting?  When I hear 
Generifying Collections, I keep thinking you will keep the APIs the 
same, but you will simply add generic support to them.  Am I off?


I've obviously not been clear enough.

It is, in *theory*, possible for us to covert the existing [collections] 
component to generics without changing any APIs or breaking backwards 
compatability. Call this option 'porting' the API to JDK5.


However, I already know of at least one case (MultiMap) where this isn't 
possible due to generics clashes in the implentation. Thus producing a 
binary compatible JDK5 port will simply not be possible in some cases. 
And doing so in other cases will compromise the quality of the generic 
API. Plus, there are other cases, such as the Typed* classes or the 
Fast* classes where porting them to JDK5 seems pretty pointless.


What I am proposing is that we use this opportunity to not just do a 
straight 'port' to JDK5, but to re-evaluate the library. To go through 
each collection and consider if it should be ported and how best that 
should occur. Call this option 'refactoring' the API to JDK5 and all the 
new idioms. The aim would be to keep the general shape of the library 
and be about 90% compatible, but to agree that breaking some API methods 
without deprecation is acceptable.


This is a less simple task for us, and a less simple task for upgraders 
(its not just a package rename), but the end result is an heck of a lot 
better quality component.



Your opinion of 'port' vs 'refactor' will depend in some measure on how 
important you view JDK5. Having just got into using it, I view it as a 
really serious change in the language, and one that IMHO should cause 
all API writers to refactor their code and not just port.


And, because the JDK was forced to port and not refactor, that is IMHO 
one reason why generics can prove to be a horrible mess in places in the 
JDK.


(Note that the whole package name/number business is really a 
manifestation of this underlying decision)


Stephen

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



Re: [collections] Generifying Collections

2006-10-25 Thread Niall Pemberton

On 10/25/06, Stephen Colebourne [EMAIL PROTECTED] wrote:

From: Niall Pemberton [EMAIL PROTECTED]
 From a simplistic user perspective seems to me that the compatibility
 achieved by the JDK is successful. I don't understand the intricacies
 required to generify a library, but if we could do the same wouldn't
 this be the best solution from a user perspective?

 Perhaps you could expand on what the issues are with the JDK approach
 and why they're not desirable in Commons Collections - when I look at
 the differences for example between the generified and non-generified
 versions of java.util.List, I don't see the mess you describe.

The problem is erasure. The JDK wipes all knowledge of the type that you 
connect to the collection. Thus

ListString list = new ArrayList();
if (list instanceof ListInteger) {
}

fails to compile as the String type is erased.

In order to preserve backwards compatability, Sun had to go to extreme lengths 
to ensure that the erased type of each generics element corresponds to the 
previous type of the method. Consider the max method on Collections:

public static T extends Object  Comparable? super T T max(Collection? 
extends T coll)


I agree that this is a mess from a library Developer POV - but from a
user perspective isn't it pretty neat that it works for both old
ungenerified code and new generified code?


Where because Object comes before Comparable in the list of bound types, its 
Object that the method signature gets erased to. Now thats pretty nasty.


Just to clarify are you calling the method declaration nasty or the
fact that it gets erased to an Object nasty? To be honest I still
don't fully get why Sun did it that way even after reading the
tutorial [1] which has it as a specific example. I guess I'm probably
showing my generic naivety, but the following would seem simpler with
a check/cast to Comparable within the method:

   public static T T max(CollectionT coll)

Anyway, apologies for digressing - I realize this isn't generics 101.


For [collections], there are cases worse than this, such as MultiMap, where the 
sf projects have demonstrated that it is not possible to generify the class 
without breaking backwards compatability, typically because our interface isn't 
a true implementation of the original interface.


So perhaps MultiMap should remain unchanged (deprecated?) and a new
MultiMap2 provide a proper generified implementation. Surely this is
much less painful for the few cases than changing the name of
everything.


Beyond this, there are some classes (like TypedList that we don't even want to 
port as they'd be pointless), plus my desire to create a smaller jar file (time 
depending), there is ample reason to not worry excessively about backwards 
compatability. We shoud target about 90% backwards compatible, with the rest 
being fixing API flaws and issues we have now.


Don't you mean 0% backwards compatability - which is what changing the
package name results in?


A simple port may appeal conceptually, but its not really viable at all.


I would disagree - if it really is the case that 90% could be ported
with backwards compatibility, then it would seem viable IMO.

Having said that, its not me thats going to be doing the work, but it
does seem valuable to discuss port vs. refactor rather than refactor
being a defacto decission and just having an argument on package
names.

Niall


Stephen


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



Re: [collections] Generifying Collections

2006-10-25 Thread Stephen Kestle
I for one would like to see the getInstance() methods renamed to 
getClassName().  With java 5 static importing, it enables concise 
construction/getting without specifying the class name.  It's short, 
highly readable, and most of the time the generic types can be inferred.


It's things like this that require a rewrite/break with previous 
compatibility.  Let alone the methods that can't have sensible returns 
because they're void at the moment.


Cheers

Stephen

Stephen Smith wrote:
I agree on the latter point - that JSE5 is in some ways a complete 
shift in Java paradigm. Whatever solution is chosen going forward, +1 
for a cross-Commons approach... otherwise figuring out compatibility 
between Commons JARs will become even tougher.


Stephen Colebourne wrote:
We need to remember why JDK5 is so important - its because its almost 
a whole new language. Its not a small incremental step like prior 
upgrades. We should treat it as such. (Especially as lots of big 
enterprises are perfectly happy on JDK1.4 and aren't planning to 
upgrade)







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



Re: [collections] Generifying Collections

2006-10-25 Thread Rahul Akolkar

On 10/25/06, Niall Pemberton [EMAIL PROTECTED] wrote:
snip/


Having said that, its not me thats going to be doing the work, but it
does seem valuable to discuss port vs. refactor rather than refactor
being a defacto decission and just having an argument on package
names.


snap/

:-)

Its not going to be me either, which is why I have (more or less)
retired from the conversation. You're right that this isn't about
package names, but really whether the intent is to produce a backwards
compatible generified collections:

* If so, be encumbered with whatever that entails
* If not, acknowledge with new collections package

It appears to me that the latter might bring more joy to the
development of the new collections and result in elegance and entirety
of the transformation, but for the reason I mentioned a couple of
paragraphs ago, my opinion is not as important as some others.

-Rahul

P.S.- Regarding your Collections#max question, using casts like you
suggest compromises the upper bound of T in the signature, and doesn't
convey the correct information to the reader (and arguably more
importantly, to the compiler, which consequently cannot guarantee the
author-intended type safety, at which point the value proposition of
using generics diminishes greatly)



Niall



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



Re: [collections] Generifying Collections

2006-10-24 Thread Kris Nuttycombe



(Compare this with the JDK where they had to jump through ridiculous
hoops to make generics fully backwards-compatible, and created a
half-arsed mess in the process...)



This is the real problem. We must use a different namespace for the Java 
package itself. A lot of stuff depends on c-c 
(http://www.mavenregistry.com/search/artifact/19973 + 
http://www.mavenregistry.com/search/depended_upon_artifacts, quite impressive) 
and even in 3 years there will be stuff available that still depends on those 
old versions.

A new package name solves the problem of coexistence as long as the jar name 
contains the version (e.g. commons-collection-3.1  commons-collection-4.2) but 
it creates new problems for e.g. Maven, that cannot handle two (binary distinct) 
versions at the same time.

So there are three points to decide:
- does a new package name imply a different Jakarta Commons project?
- shall we give up existing brands (it means in the end the establishment of a 
new brand for all commons projects)?
- if we keep the project name, do we have to accept the inevitable limits of 
popular tools such as Maven?

- Jörg


One possibility that occurs to me is that we could take the problem to a 
higher level. Since a number of projects are going to be facing this 
problem, what about a package rename at the commons level - say, 
org.apache.commons2 or org.apache.commons5? This way, the Maven problem 
and the package rename problems can be solved, and yet we can still keep 
the individual brand names untainted. This can also scale with new JDK 
releases - you would end up with a commons for each release where you 
have a binary incompatible break, but this seems less obnoxious to me 
than having each project have to keep up with a component-level naming 
scheme.


Kris

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



Re: [collections] Generifying Collections

2006-10-24 Thread Henri Yandell

On 10/23/06, Tyler Ward [EMAIL PROTECTED] wrote:


I think a very significant part of this problem is just the profusion
of jars anyway. The real incompatibility you're worried about is when
two projects are using different versions of subcomponents, or at
least the multitude of subcomponents makes it that much more likely.
Commons isn't that large, it doesn't have lots of outside
dependencies, why not just pare it down to one (1) jar, and then the
vast majority of this version trouble goes away. Mix and match is a
recipe for instability anyway.


Our worry is over the projects using us, rather than the stuff we use.

So if a company has a project A, that uses Commons X and
OpenSourceProject O, and O also uses X, then project A is going to be
stuck on upgrading to X.2 until O also upgrade to X.2.

If we rename packages then A can run X.2 and O, with X.1 sitting there
for O to use behind the scenes. The package contains the specification
version. It's a lame solution though - but smarter stuff would involve
much more JVM involvement (OSGi does some of this though I think, but
as far as I understand it means users have to have embraced OSGi).


Something like this. Any project can do whatever it wants.
Periodically, all projects are collected together, and a single
commons jar is produced. When this found to be stable, it becomes the
current version. Rinse, repeat. Programs would then be strongly
advised to depend on exactly 1 version of commons, etc Maybe
break into 2 or 3 jars, but this whole 30 jars idea is really where
the problem lies, it seems to me. Anything running in the same JVM
should use the same version anyway.


I think users would balk at depending on a huge Commons jar - tempting
as it would be to merge a few of the central non-dependency ones into
Commons JDK. I think it'd also slow down development.

Hen

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



Re: [collections] Generifying Collections

2006-10-24 Thread Rahul Akolkar

On 10/24/06, Henri Yandell [EMAIL PROTECTED] wrote:

On 10/23/06, Tyler Ward [EMAIL PROTECTED] wrote:

 I think a very significant part of this problem is just the profusion
 of jars anyway. The real incompatibility you're worried about is when
 two projects are using different versions of subcomponents, or at
 least the multitude of subcomponents makes it that much more likely.
 Commons isn't that large, it doesn't have lots of outside
 dependencies, why not just pare it down to one (1) jar, and then the
 vast majority of this version trouble goes away. Mix and match is a
 recipe for instability anyway.

Our worry is over the projects using us, rather than the stuff we use.

So if a company has a project A, that uses Commons X and
OpenSourceProject O, and O also uses X, then project A is going to be
stuck on upgrading to X.2 until O also upgrade to X.2.

If we rename packages then A can run X.2 and O, with X.1 sitting there
for O to use behind the scenes. The package contains the specification
version. It's a lame solution though - but smarter stuff would involve
much more JVM involvement (OSGi does some of this though I think, but
as far as I understand it means users have to have embraced OSGi).


snip/

OSGi does more in that you can specify import and export package
version ranges for your bundles (rather than fixating on one version),
which at times lessens the headache. But when push comes to shove, the
resolver which forms the basis of the class loading architecture has a
constraint solving algorithm designed to pick the higher version
(all else being equal). Its possible for a bundle to fail loading if
fragments require mutually exclusive version ranges of the same
dependency.

Generifying [collections] is a pervasive change for the component,
lets not be shy about package renaming in such cases, especially the
broad shallow heavily depended on category.

-Rahul

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



RE: [collections] Generifying Collections

2006-10-23 Thread Jörg Schaible
Hi Stephen and Henri,

Stephen Colebourne wrote on Saturday, October 21, 2006 5:20 PM:

 Henri Yandell wrote:
 Why not just start a branch within Collections?
 
 I don't see why this is a new component, are we going to be advising
 people to use Collections 3.x on JDK 1.5+ for any reasons other than
 legacy or instability of our generified version?
 
 My view is to make a collections-generics branch in collections with
 a view to it being Collections 4.0.
 
 Because commons isn't like other OSS projects. We can't go around
 changing our APIs freely, even between major versions. Its a
 simple case
 of us being at the bottom of the stack of jars. If we do
 change an API,
 any API then jar hell ensues because higher OSS projects will
 clash on
 their required versions of [collections].
 
 Thus, it has to be a new package, and this is best thought of
 as a new
 component.

It is also about branding. Collections is a well-known name in the community. 
Think of three years from now. If we declare collections 4.x needs JDK 1.5+ 
now, in 3 years nobody will rermember, that the older versions did support JDK 
1.3. But the name for collections still persist. That's the political reason, 
not to change the name.

 (Compare this with the JDK where they had to jump through ridiculous
 hoops to make generics fully backwards-compatible, and created a
 half-arsed mess in the process...)

This is the real problem. We must use a different namespace for the Java 
package itself. A lot of stuff depends on c-c 
(http://www.mavenregistry.com/search/artifact/19973 + 
http://www.mavenregistry.com/search/depended_upon_artifacts, quite impressive) 
and even in 3 years there will be stuff available that still depends on those 
old versions.

A new package name solves the problem of coexistence as long as the jar name 
contains the version (e.g. commons-collection-3.1  commons-collection-4.2) but 
it creates new problems for e.g. Maven, that cannot handle two (binary 
distinct) versions at the same time.

So there are three points to decide:
- does a new package name imply a different Jakarta Commons project?
- shall we give up existing brands (it means in the end the establishment of a 
new brand for all commons projects)?
- if we keep the project name, do we have to accept the inevitable limits of 
popular tools such as Maven?

- Jörg

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



Re: [collections] Generifying Collections

2006-10-23 Thread Henri Yandell

On 10/21/06, Stephen Colebourne [EMAIL PROTECTED] wrote:

Henri Yandell wrote:
 Why not just start a branch within Collections?

 I don't see why this is a new component, are we going to be advising
 people to use Collections 3.x on JDK 1.5+ for any reasons other than
 legacy or instability of our generified version?

 My view is to make a collections-generics branch in collections with a
 view to it being Collections 4.0.

Because commons isn't like other OSS projects. We can't go around
changing our APIs freely, even between major versions. Its a simple case
of us being at the bottom of the stack of jars. If we do change an API,
any API then jar hell ensues because higher OSS projects will clash on
their required versions of [collections].

Thus, it has to be a new package, and this is best thought of as a new
component.


I'm not convinced by that. What you're saying is that if we want to
have a major API change in a component, that we need to change the
package name so two pieces of code can sit side by side. If that's
true, then we should do it for all major versions (as major API change
is the defining factor of major version changing) and stay within the
same component.

Having a bit of deja vu - think we had this discussion 6 months ago :)

Basically - we need to start putting the major version in our package
names. I hate that, but I can see the need.

So this would be a branch of collections, with a package name change
to org.apache.commons.collections4.*.

Would be sweet to have a build system that could deal with moving
source from org/apache/commons/collections/ to the correct directory
and package name prior to compiing/source-packaging. Might be worth
playing with some Ant scripts for that.

Hen

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



Re: [collections] Generifying Collections

2006-10-23 Thread James Carman

Tomcat has been able to do this without any real problems.  Why can't we
just keep the Commons Collections name (and packages, etc.), but just use
the version numbers to keep it straight?  Tomcat 5.5.x requires JDK5.
Couldn't we just say that Commons Collections 4.x (and beyond) requires
JDK5?  That way, for those folks who want to upgrade, it's not very tough.
For the most part, the classes/methods will have the same names.

On 10/23/06, Jörg Schaible [EMAIL PROTECTED] wrote:


Hi Stephen and Henri,

Stephen Colebourne wrote on Saturday, October 21, 2006 5:20 PM:

 Henri Yandell wrote:
 Why not just start a branch within Collections?

 I don't see why this is a new component, are we going to be advising
 people to use Collections 3.x on JDK 1.5+ for any reasons other than
 legacy or instability of our generified version?

 My view is to make a collections-generics branch in collections with
 a view to it being Collections 4.0.

 Because commons isn't like other OSS projects. We can't go around
 changing our APIs freely, even between major versions. Its a
 simple case
 of us being at the bottom of the stack of jars. If we do
 change an API,
 any API then jar hell ensues because higher OSS projects will
 clash on
 their required versions of [collections].

 Thus, it has to be a new package, and this is best thought of
 as a new
 component.

It is also about branding. Collections is a well-known name in the
community. Think of three years from now. If we declare collections 4.xneeds JDK
1.5+ now, in 3 years nobody will rermember, that the older versions did
support JDK 1.3. But the name for collections still persist. That's the
political reason, not to change the name.

 (Compare this with the JDK where they had to jump through ridiculous
 hoops to make generics fully backwards-compatible, and created a
 half-arsed mess in the process...)

This is the real problem. We must use a different namespace for the Java
package itself. A lot of stuff depends on c-c (
http://www.mavenregistry.com/search/artifact/19973 +
http://www.mavenregistry.com/search/depended_upon_artifacts, quite
impressive) and even in 3 years there will be stuff available that still
depends on those old versions.

A new package name solves the problem of coexistence as long as the jar
name contains the version (e.g. commons-collection-3.1 
commons-collection-4.2) but it creates new problems for e.g. Maven, that
cannot handle two (binary distinct) versions at the same time.

So there are three points to decide:
- does a new package name imply a different Jakarta Commons project?
- shall we give up existing brands (it means in the end the establishment
of a new brand for all commons projects)?
- if we keep the project name, do we have to accept the inevitable limits
of popular tools such as Maven?

- Jörg

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




Re: [collections] Generifying Collections

2006-10-23 Thread Rahul Akolkar

On 10/23/06, James Carman [EMAIL PROTECTED] wrote:

Tomcat has been able to do this without any real problems.

snip/

Because now (TC6, some in 5.5, maybe other branches too) they've
package renamed dependency artifacts (digester, logging, dbcp -- and
even hinted at JDT ;-).

-Rahul



 Why can't we
just keep the Commons Collections name (and packages, etc.), but just use
the version numbers to keep it straight?  Tomcat 5.5.x requires JDK5.
Couldn't we just say that Commons Collections 4.x (and beyond) requires
JDK5?  That way, for those folks who want to upgrade, it's not very tough.
For the most part, the classes/methods will have the same names.

On 10/23/06, Jörg Schaible [EMAIL PROTECTED] wrote:

 Hi Stephen and Henri,

 Stephen Colebourne wrote on Saturday, October 21, 2006 5:20 PM:

  Henri Yandell wrote:
  Why not just start a branch within Collections?
 
  I don't see why this is a new component, are we going to be advising
  people to use Collections 3.x on JDK 1.5+ for any reasons other than
  legacy or instability of our generified version?
 
  My view is to make a collections-generics branch in collections with
  a view to it being Collections 4.0.
 
  Because commons isn't like other OSS projects. We can't go around
  changing our APIs freely, even between major versions. Its a
  simple case
  of us being at the bottom of the stack of jars. If we do
  change an API,
  any API then jar hell ensues because higher OSS projects will
  clash on
  their required versions of [collections].
 
  Thus, it has to be a new package, and this is best thought of
  as a new
  component.

 It is also about branding. Collections is a well-known name in the
 community. Think of three years from now. If we declare collections 4.xneeds 
JDK
 1.5+ now, in 3 years nobody will rermember, that the older versions did
 support JDK 1.3. But the name for collections still persist. That's the
 political reason, not to change the name.

  (Compare this with the JDK where they had to jump through ridiculous
  hoops to make generics fully backwards-compatible, and created a
  half-arsed mess in the process...)

 This is the real problem. We must use a different namespace for the Java
 package itself. A lot of stuff depends on c-c (
 http://www.mavenregistry.com/search/artifact/19973 +
 http://www.mavenregistry.com/search/depended_upon_artifacts, quite
 impressive) and even in 3 years there will be stuff available that still
 depends on those old versions.

 A new package name solves the problem of coexistence as long as the jar
 name contains the version (e.g. commons-collection-3.1 
 commons-collection-4.2) but it creates new problems for e.g. Maven, that
 cannot handle two (binary distinct) versions at the same time.

 So there are three points to decide:
 - does a new package name imply a different Jakarta Commons project?
 - shall we give up existing brands (it means in the end the establishment
 of a new brand for all commons projects)?
 - if we keep the project name, do we have to accept the inevitable limits
 of popular tools such as Maven?

 - Jörg



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



Re: [collections] Generifying Collections

2006-10-23 Thread Tyler Ward


I think a very significant part of this problem is just the profusion  
of jars anyway. The real incompatibility you're worried about is when  
two projects are using different versions of subcomponents, or at  
least the multitude of subcomponents makes it that much more likely.  
Commons isn't that large, it doesn't have lots of outside  
dependencies, why not just pare it down to one (1) jar, and then the  
vast majority of this version trouble goes away. Mix and match is a  
recipe for instability anyway.


Something like this. Any project can do whatever it wants.  
Periodically, all projects are collected together, and a single  
commons jar is produced. When this found to be stable, it becomes the  
current version. Rinse, repeat. Programs would then be strongly  
advised to depend on exactly 1 version of commons, etc Maybe  
break into 2 or 3 jars, but this whole 30 jars idea is really where  
the problem lies, it seems to me. Anything running in the same JVM  
should use the same version anyway.


My $0.02.











On Oct 23, 2006, at 8:06 PM, Rahul Akolkar wrote:


On 10/23/06, James Carman [EMAIL PROTECTED] wrote:

Tomcat has been able to do this without any real problems.

snip/

Because now (TC6, some in 5.5, maybe other branches too) they've
package renamed dependency artifacts (digester, logging, dbcp -- and
even hinted at JDT ;-).

-Rahul



 Why can't we
just keep the Commons Collections name (and packages, etc.), but  
just use

the version numbers to keep it straight?  Tomcat 5.5.x requires JDK5.
Couldn't we just say that Commons Collections 4.x (and beyond)  
requires
JDK5?  That way, for those folks who want to upgrade, it's not  
very tough.

For the most part, the classes/methods will have the same names.

On 10/23/06, Jörg Schaible [EMAIL PROTECTED]  
wrote:


 Hi Stephen and Henri,

 Stephen Colebourne wrote on Saturday, October 21, 2006 5:20 PM:

  Henri Yandell wrote:
  Why not just start a branch within Collections?
 
  I don't see why this is a new component, are we going to be  
advising
  people to use Collections 3.x on JDK 1.5+ for any reasons  
other than

  legacy or instability of our generified version?
 
  My view is to make a collections-generics branch in  
collections with

  a view to it being Collections 4.0.
 
  Because commons isn't like other OSS projects. We can't go around
  changing our APIs freely, even between major versions. Its a
  simple case
  of us being at the bottom of the stack of jars. If we do
  change an API,
  any API then jar hell ensues because higher OSS projects will
  clash on
  their required versions of [collections].
 
  Thus, it has to be a new package, and this is best thought of
  as a new
  component.

 It is also about branding. Collections is a well-known name in the
 community. Think of three years from now. If we declare  
collections 4.xneeds JDK
 1.5+ now, in 3 years nobody will rermember, that the older  
versions did
 support JDK 1.3. But the name for collections still persist.  
That's the

 political reason, not to change the name.

  (Compare this with the JDK where they had to jump through  
ridiculous

  hoops to make generics fully backwards-compatible, and created a
  half-arsed mess in the process...)

 This is the real problem. We must use a different namespace for  
the Java

 package itself. A lot of stuff depends on c-c (
 http://www.mavenregistry.com/search/artifact/19973 +
 http://www.mavenregistry.com/search/depended_upon_artifacts, quite
 impressive) and even in 3 years there will be stuff available  
that still

 depends on those old versions.

 A new package name solves the problem of coexistence as long as  
the jar

 name contains the version (e.g. commons-collection-3.1 
 commons-collection-4.2) but it creates new problems for e.g.  
Maven, that

 cannot handle two (binary distinct) versions at the same time.

 So there are three points to decide:
 - does a new package name imply a different Jakarta Commons  
project?
 - shall we give up existing brands (it means in the end the  
establishment

 of a new brand for all commons projects)?
 - if we keep the project name, do we have to accept the  
inevitable limits

 of popular tools such as Maven?

 - Jörg



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




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



Re: [collections] Generifying Collections

2006-10-21 Thread Niall Pemberton

What about the guys that have already done this in sourceforge?

http://sourceforge.net/projects/collections

If what they've done is any good, it would make sense to start with
that they have and get them invloved here.

Niall

On 10/20/06, Stephen Colebourne [EMAIL PROTECTED] wrote:

We are just moving to JDK1.5 at work, and I too judge that the time is
about right for this. I don't know how much time I'll be able to spend
on it though. We'll have to see.

There is a clear difference of approach, however, with some factors being:
a) keep everything as close as possible to the current source (not
always achievable)
b) split into 3-5 smaller components
c) same package name or different package name
d) same project [collections] or new project

Thus, I propose that this task is:
- started in the commons-sandbox
- uses a different package name [collgenerics]
- follows the current single jar/package structure
- no deprecated classes are ported

This allows coding to start quickly, but out of everyones way. It also
then allows those of us (like me) who want to re-group the code to do so
in a sandbox environment rather than commons-proper. Getting the
promotion vote later should be no problem.

Kris, are you a committer @ apache?

Stephen


Kris Nuttycombe wrote:
 Speaking of porting to collections to generics, I have a bit of time
 available to contribute to this effort. Could we at least create a
 generics branch in SVN to get the ball rolling? This topic has been
 bounced around for a long time, but the process needs to start at some
 point. I realize that collections needs to be refactored into some
 smaller projects, but I'm not convinced that the two tasks need to
 necessarily be undertaken simultaneously. It may in fact be simpler to
 generify the code in its current architecture since this will involve
 less disruption to the unit tests.

 Kris

 Stephen Colebourne wrote:

 Hi,
 It would be useful to attach anything to a JIRA call, as that is an
 easier worklog than email.

 The biggest issue that I can see with this is that [collections] as a
 project is currently at the 'full' point, and needs refactoring into
 smaller units. This should probably be done as part of moving
 collections to JDK1.5.

 Unfortunately, [collections] has little development time available, so
 just porting to generics is a big enough concept, even before
 considering a new collection like Trie.

 There may be another committer willing to volunteer time to this of
 course...

 Stephen


 - Original Message 
 From: Sam Berlin [EMAIL PROTECTED]
 To: Jakarta Commons Developers List commons-dev@jakarta.apache.org
 Cc: Roger Kapsi [EMAIL PROTECTED]
 Sent: Wednesday, 20 September, 2006 12:42:12 AM
 Subject: Contributing to Collections

 Hi Folks,

 I sent an email last week about contributing a Patricia tree to the
 Commons
 Collections project, but haven't heard back.  The project is fully
 voluntary, so I understand that responses may take a long time.  I'd
 like to
 make sure that I sent the offer to the correct place, though.  Is
 there some
 other venue I should be looking at for contributing code?  Should I be
 doing
 this through JIRA?

 To recap last week's email, Roger Kapsi  I have developed a Patricia
 tree
 that fits the Map  SortedMap interfaces (and can easily fit the upcoming
 Java 1.6 NavigableMap), and we'd like to offer it for inclusion in
 commons-collection.  It's currently written for Java 1.5's generics and
 licensed under the GPL, but we can easily remove the generics if required
 and should likely be able to change the license if necessary.

 Thanks very much,
  Sam




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





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



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




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



Re: [collections] Generifying Collections

2006-10-21 Thread Henri Yandell

On 10/20/06, Stephen Colebourne [EMAIL PROTECTED] wrote:

We are just moving to JDK1.5 at work, and I too judge that the time is
about right for this. I don't know how much time I'll be able to spend
on it though. We'll have to see.

There is a clear difference of approach, however, with some factors being:
a) keep everything as close as possible to the current source (not
always achievable)
b) split into 3-5 smaller components
c) same package name or different package name
d) same project [collections] or new project

Thus, I propose that this task is:
- started in the commons-sandbox
- uses a different package name [collgenerics]
- follows the current single jar/package structure
- no deprecated classes are ported


Why not just start a branch within Collections?

I don't see why this is a new component, are we going to be advising
people to use Collections 3.x on JDK 1.5+ for any reasons other than
legacy or instability of our generified version?

My view is to make a collections-generics branch in collections with a
view to it being Collections 4.0.

Hen

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



Re: [collections] Generifying Collections

2006-10-21 Thread Stephen Colebourne

Henri Yandell wrote:

Why not just start a branch within Collections?

I don't see why this is a new component, are we going to be advising
people to use Collections 3.x on JDK 1.5+ for any reasons other than
legacy or instability of our generified version?

My view is to make a collections-generics branch in collections with a
view to it being Collections 4.0.


Because commons isn't like other OSS projects. We can't go around 
changing our APIs freely, even between major versions. Its a simple case 
of us being at the bottom of the stack of jars. If we do change an API, 
any API then jar hell ensues because higher OSS projects will clash on 
their required versions of [collections].


Thus, it has to be a new package, and this is best thought of as a new 
component.


(Compare this with the JDK where they had to jump through ridiculous 
hoops to make generics fully backwards-compatible, and created a 
half-arsed mess in the process...)


Stephen

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



Re: [collections] Generifying Collections

2006-10-20 Thread Henri Yandell

Whatever you want to do is good, but I'd like to see the first bit be
an analysis of the various forks that have happened in terms of 1.5
versions of collections. There's stuff out there that wanted to get
involved, now that we're thinking of moving they might be interested
and have valuable code and/or ideas.

I'm not convinced on splitting up collections yet; simply having a big
jar isn't enough of a reason for me.

Hen

On 10/20/06, Kris Nuttycombe [EMAIL PROTECTED] wrote:

Speaking of porting to collections to generics, I have a bit of time
available to contribute to this effort. Could we at least create a
generics branch in SVN to get the ball rolling? This topic has been
bounced around for a long time, but the process needs to start at some
point. I realize that collections needs to be refactored into some
smaller projects, but I'm not convinced that the two tasks need to
necessarily be undertaken simultaneously. It may in fact be simpler to
generify the code in its current architecture since this will involve
less disruption to the unit tests.

Kris

Stephen Colebourne wrote:
 Hi,
 It would be useful to attach anything to a JIRA call, as that is an easier 
worklog than email.

 The biggest issue that I can see with this is that [collections] as a project 
is currently at the 'full' point, and needs refactoring into smaller units. This 
should probably be done as part of moving collections to JDK1.5.

 Unfortunately, [collections] has little development time available, so just 
porting to generics is a big enough concept, even before considering a new 
collection like Trie.

 There may be another committer willing to volunteer time to this of course...

 Stephen


 - Original Message 
 From: Sam Berlin [EMAIL PROTECTED]
 To: Jakarta Commons Developers List commons-dev@jakarta.apache.org
 Cc: Roger Kapsi [EMAIL PROTECTED]
 Sent: Wednesday, 20 September, 2006 12:42:12 AM
 Subject: Contributing to Collections

 Hi Folks,

 I sent an email last week about contributing a Patricia tree to the Commons
 Collections project, but haven't heard back.  The project is fully
 voluntary, so I understand that responses may take a long time.  I'd like to
 make sure that I sent the offer to the correct place, though.  Is there some
 other venue I should be looking at for contributing code?  Should I be doing
 this through JIRA?

 To recap last week's email, Roger Kapsi  I have developed a Patricia tree
 that fits the Map  SortedMap interfaces (and can easily fit the upcoming
 Java 1.6 NavigableMap), and we'd like to offer it for inclusion in
 commons-collection.  It's currently written for Java 1.5's generics and
 licensed under the GPL, but we can easily remove the generics if required
 and should likely be able to change the license if necessary.

 Thanks very much,
  Sam




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




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




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



Re: [collections] Generifying Collections

2006-10-20 Thread Stephen Colebourne
We are just moving to JDK1.5 at work, and I too judge that the time is 
about right for this. I don't know how much time I'll be able to spend 
on it though. We'll have to see.


There is a clear difference of approach, however, with some factors being:
a) keep everything as close as possible to the current source (not 
always achievable)

b) split into 3-5 smaller components
c) same package name or different package name
d) same project [collections] or new project

Thus, I propose that this task is:
- started in the commons-sandbox
- uses a different package name [collgenerics]
- follows the current single jar/package structure
- no deprecated classes are ported

This allows coding to start quickly, but out of everyones way. It also 
then allows those of us (like me) who want to re-group the code to do so 
in a sandbox environment rather than commons-proper. Getting the 
promotion vote later should be no problem.


Kris, are you a committer @ apache?

Stephen


Kris Nuttycombe wrote:
Speaking of porting to collections to generics, I have a bit of time 
available to contribute to this effort. Could we at least create a 
generics branch in SVN to get the ball rolling? This topic has been 
bounced around for a long time, but the process needs to start at some 
point. I realize that collections needs to be refactored into some 
smaller projects, but I'm not convinced that the two tasks need to 
necessarily be undertaken simultaneously. It may in fact be simpler to 
generify the code in its current architecture since this will involve 
less disruption to the unit tests.


Kris

Stephen Colebourne wrote:


Hi,
It would be useful to attach anything to a JIRA call, as that is an 
easier worklog than email.


The biggest issue that I can see with this is that [collections] as a 
project is currently at the 'full' point, and needs refactoring into 
smaller units. This should probably be done as part of moving 
collections to JDK1.5.


Unfortunately, [collections] has little development time available, so 
just porting to generics is a big enough concept, even before 
considering a new collection like Trie.


There may be another committer willing to volunteer time to this of 
course...


Stephen


- Original Message 
From: Sam Berlin [EMAIL PROTECTED]
To: Jakarta Commons Developers List commons-dev@jakarta.apache.org
Cc: Roger Kapsi [EMAIL PROTECTED]
Sent: Wednesday, 20 September, 2006 12:42:12 AM
Subject: Contributing to Collections

Hi Folks,

I sent an email last week about contributing a Patricia tree to the 
Commons

Collections project, but haven't heard back.  The project is fully
voluntary, so I understand that responses may take a long time.  I'd 
like to
make sure that I sent the offer to the correct place, though.  Is 
there some
other venue I should be looking at for contributing code?  Should I be 
doing

this through JIRA?

To recap last week's email, Roger Kapsi  I have developed a Patricia 
tree

that fits the Map  SortedMap interfaces (and can easily fit the upcoming
Java 1.6 NavigableMap), and we'd like to offer it for inclusion in
commons-collection.  It's currently written for Java 1.5's generics and
licensed under the GPL, but we can easily remove the generics if required
and should likely be able to change the license if necessary.

Thanks very much,
 Sam




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


  



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




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



Re: [collections] Generifying Collections

2006-10-20 Thread Rahul Akolkar

On 10/20/06, Stephen Colebourne [EMAIL PROTECTED] wrote:

We are just moving to JDK1.5 at work, and I too judge that the time is
about right for this. I don't know how much time I'll be able to spend
on it though. We'll have to see.

There is a clear difference of approach, however, with some factors being:
a) keep everything as close as possible to the current source (not
always achievable)
b) split into 3-5 smaller components
c) same package name or different package name
d) same project [collections] or new project

Thus, I propose that this task is:
- started in the commons-sandbox
- uses a different package name [collgenerics]
- follows the current single jar/package structure
- no deprecated classes are ported


snip/

This sounds like a decent approach to me.

collections5 ? (don't like collgenerics)



This allows coding to start quickly, but out of everyones way. It also
then allows those of us (like me) who want to re-group the code to do so
in a sandbox environment rather than commons-proper. Getting the
promotion vote later should be no problem.

Kris, are you a committer @ apache?


snap/

Better ;-) Jakarta.

http://marc.theaimsgroup.com/?l=jakarta-commons-devm=115515520306438w=2

-Rahul



Stephen


Kris Nuttycombe wrote:
 Speaking of porting to collections to generics, I have a bit of time
 available to contribute to this effort. Could we at least create a
 generics branch in SVN to get the ball rolling? This topic has been
 bounced around for a long time, but the process needs to start at some
 point. I realize that collections needs to be refactored into some
 smaller projects, but I'm not convinced that the two tasks need to
 necessarily be undertaken simultaneously. It may in fact be simpler to
 generify the code in its current architecture since this will involve
 less disruption to the unit tests.

 Kris

 Stephen Colebourne wrote:

 Hi,
 It would be useful to attach anything to a JIRA call, as that is an
 easier worklog than email.

 The biggest issue that I can see with this is that [collections] as a
 project is currently at the 'full' point, and needs refactoring into
 smaller units. This should probably be done as part of moving
 collections to JDK1.5.

 Unfortunately, [collections] has little development time available, so
 just porting to generics is a big enough concept, even before
 considering a new collection like Trie.

 There may be another committer willing to volunteer time to this of
 course...

 Stephen


 - Original Message 
 From: Sam Berlin [EMAIL PROTECTED]
 To: Jakarta Commons Developers List commons-dev@jakarta.apache.org
 Cc: Roger Kapsi [EMAIL PROTECTED]
 Sent: Wednesday, 20 September, 2006 12:42:12 AM
 Subject: Contributing to Collections

 Hi Folks,

 I sent an email last week about contributing a Patricia tree to the
 Commons
 Collections project, but haven't heard back.  The project is fully
 voluntary, so I understand that responses may take a long time.  I'd
 like to
 make sure that I sent the offer to the correct place, though.  Is
 there some
 other venue I should be looking at for contributing code?  Should I be
 doing
 this through JIRA?

 To recap last week's email, Roger Kapsi  I have developed a Patricia
 tree
 that fits the Map  SortedMap interfaces (and can easily fit the upcoming
 Java 1.6 NavigableMap), and we'd like to offer it for inclusion in
 commons-collection.  It's currently written for Java 1.5's generics and
 licensed under the GPL, but we can easily remove the generics if required
 and should likely be able to change the license if necessary.

 Thanks very much,
  Sam



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



Re: [collections] Generifying Collections

2006-10-20 Thread Mario Ivankovits
Hi!
 collections5 ? (don't like collgenerics)
I think we should try not to put the technology into the name, nor the
target jvm version number.
Think about something like collections5 4.0  somehow strange, no?
- like java2 1.3.0 ;-)

Personally I'd simply create a new branch, maybe call it 5.0 and
continue developing there, but I know that this is not possible due to
the version conflicts where one library requires the non generified and
and another the new one. Hopefully java will solve this some day.

What if we simply take the singluar of collections: collection ?

Ciao,
Mario


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



Re: [collections] Generifying Collections

2006-10-20 Thread Kris Nuttycombe

Stephen Colebourne wrote:

snip/
Thus, I propose that this task is:
- started in the commons-sandbox
- uses a different package name [collgenerics]
- follows the current single jar/package structure
- no deprecated classes are ported
This sounds like the best approach to me, for the same reasons as you 
outline.


Kris, are you a committer @ apache?
Yes. If others like, I can (I think) create the sandbox project once a 
name is agreed upon. Should we make 3.2 the start of the branch, or is 
there a reason to branch from the current state of the trunk?


Kris



Kris Nuttycombe wrote:
Speaking of porting to collections to generics, I have a bit of time 
available to contribute to this effort. Could we at least create a 
generics branch in SVN to get the ball rolling? This topic has been 
bounced around for a long time, but the process needs to start at 
some point. I realize that collections needs to be refactored into 
some smaller projects, but I'm not convinced that the two tasks need 
to necessarily be undertaken simultaneously. It may in fact be 
simpler to generify the code in its current architecture since this 
will involve less disruption to the unit tests.


Kris

Stephen Colebourne wrote:


Hi,
It would be useful to attach anything to a JIRA call, as that is an 
easier worklog than email.


The biggest issue that I can see with this is that [collections] as 
a project is currently at the 'full' point, and needs refactoring 
into smaller units. This should probably be done as part of moving 
collections to JDK1.5.


Unfortunately, [collections] has little development time available, 
so just porting to generics is a big enough concept, even before 
considering a new collection like Trie.


There may be another committer willing to volunteer time to this of 
course...


Stephen


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



Re: [collections] Generifying Collections

2006-10-20 Thread Rahul Akolkar

On 10/20/06, Mario Ivankovits [EMAIL PROTECTED] wrote:

Hi!
 collections5 ? (don't like collgenerics)
I think we should try not to put the technology into the name, nor the
target jvm version number.

Think about something like collections5 4.0  somehow strange, no?
- like java2 1.3.0 ;-)


snip/

I'm sure there can be a better package name. I just didn't like the
first name proposed, and I'd rather see the name issue resolved now
(before there is anything in SVN), rather than later.

-Rahul



Personally I'd simply create a new branch, maybe call it 5.0 and
continue developing there, but I know that this is not possible due to
the version conflicts where one library requires the non generified and
and another the new one. Hopefully java will solve this some day.

What if we simply take the singluar of collections: collection ?

Ciao,
Mario



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



Re: [collections] Generifying Collections

2006-10-20 Thread Stephen Colebourne

Kris Nuttycombe wrote:
Should we make 3.2 the start of the branch, or is 
there a reason to branch from the current state of the trunk?


I think that we should tag HEAD of [collections], and then copy from there.

Rahul Akolkar wrote:
 collections5 ? (don't like collgenerics)

I would have suggested collections5 or collections15, but as has already 
been pointed out, this is a little strange when JDK6 is about to come 
out. Naming after the feature seems to make more sense.


That said, the advantage with using the name collections5 is that we 
could use the same naming style for other projects - lang5, io5 etc.


By the way, I hope to split the jar before release, so the name may not 
be *that* important right this second.


Stephen

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



Re: [collections] Generifying Collections

2006-10-20 Thread Mario Ivankovits
Hi!
 That said, the advantage with using the name collections5 is that we
 could use the same naming style for other projects - lang5, io5 etc.
Yea, thats true. Hmmm ... But then we can do it like java does in the
past - we go the collections2 way, though, wouldn't be against
collections5 any longer ;-)

Do you plan to start over with release 1.0 or can we move on with the
next major version number? In this case it would be 4.0.

Ciao,
Mario


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



Re: [collections] Generifying Collections

2006-10-20 Thread Kris Nuttycombe
What we call it sort of depends upon what we expect the future of the 
project to be, doesn't it? Splitting the jar will just move some stuff 
out; there'll likely still be a central collections component, and 
*eventually* it'd be nice to still be able call this 
commons-collections. Name recognition and all.


So, perhaps create the sandbox project as collections5 but use the 
org.apache.commons.collections package name, and when it's time to 
promote, do it as a major version release (maybe 5.0) of collections?


Kris

Stephen Colebourne wrote:

Kris Nuttycombe wrote:
Should we make 3.2 the start of the branch, or is there a reason to 
branch from the current state of the trunk?


I think that we should tag HEAD of [collections], and then copy from 
there.


Rahul Akolkar wrote:
 collections5 ? (don't like collgenerics)

I would have suggested collections5 or collections15, but as has 
already been pointed out, this is a little strange when JDK6 is about 
to come out. Naming after the feature seems to make more sense.


That said, the advantage with using the name collections5 is that we 
could use the same naming style for other projects - lang5, io5 etc.


By the way, I hope to split the jar before release, so the name may 
not be *that* important right this second.


Stephen

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




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



Re: [collections] Generifying Collections

2006-10-20 Thread Rahul Akolkar

On 10/20/06, Stephen Colebourne [EMAIL PROTECTED] wrote:
snip/

Rahul Akolkar wrote:
  collections5 ? (don't like collgenerics)

I would have suggested collections5 or collections15, but as has already
been pointed out, this is a little strange when JDK6 is about to come
out. Naming after the feature seems to make more sense.


snap/

There is a similar play with naming after a feature, clearly on due
(long term) evolution, the benefits of the new [collections] have
potential to exceed beyond just generics.

The 5 suffix in my mind has little to do with tiger, its just an
excuse that makes sense (and still has semblance of having the new
having come from the old). Though I'm hardly going to insist on any
name here.

-Rahul



That said, the advantage with using the name collections5 is that we
could use the same naming style for other projects - lang5, io5 etc.

By the way, I hope to split the jar before release, so the name may not
be *that* important right this second.

Stephen



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



Re: [collections] Generifying Collections

2006-10-20 Thread Rahul Akolkar

On 10/20/06, Kris Nuttycombe [EMAIL PROTECTED] wrote:

What we call it sort of depends upon what we expect the future of the
project to be, doesn't it? Splitting the jar will just move some stuff
out; there'll likely still be a central collections component, and
*eventually* it'd be nice to still be able call this
commons-collections. Name recognition and all.

So, perhaps create the sandbox project as collections5 but use the
org.apache.commons.collections package name, and when it's time to
promote, do it as a major version release (maybe 5.0) of collections?


snip/

IMO, its better to package rename [collections] at this point (lesser
jar hell to deal with).

-Rahul



Kris

Stephen Colebourne wrote:
 Kris Nuttycombe wrote:
 Should we make 3.2 the start of the branch, or is there a reason to
 branch from the current state of the trunk?

 I think that we should tag HEAD of [collections], and then copy from
 there.

 Rahul Akolkar wrote:
  collections5 ? (don't like collgenerics)

 I would have suggested collections5 or collections15, but as has
 already been pointed out, this is a little strange when JDK6 is about
 to come out. Naming after the feature seems to make more sense.

 That said, the advantage with using the name collections5 is that we
 could use the same naming style for other projects - lang5, io5 etc.

 By the way, I hope to split the jar before release, so the name may
 not be *that* important right this second.

 Stephen



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



Re: [collections] Generifying Collections

2006-10-20 Thread Will Pugh
We could also mash together collections and generics to get 
commons-collagen


I'm sure there are some great puns we could pull out of that. . .

   --Will

Mario Ivankovits wrote:

Hi!
  

collections5 ? (don't like collgenerics)


I think we should try not to put the technology into the name, nor the
target jvm version number.
Think about something like collections5 4.0  somehow strange, no?
- like java2 1.3.0 ;-)

Personally I'd simply create a new branch, maybe call it 5.0 and
continue developing there, but I know that this is not possible due to
the version conflicts where one library requires the non generified and
and another the new one. Hopefully java will solve this some day.

What if we simply take the singluar of collections: collection ?

Ciao,
Mario


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

  


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