Commons Collections 3.0 ha ha ha!

It’s hard to describe the glee I feel at the release of commons-collections 3.0. The sheer suffering and pain that this release will hopefully cause a lot of people is making me giggle like a little girl. It’s hard finding words to fully capture my gratitude to the commons monkeys for thoroughly screwing their users and showing themselves to be the evil bunch of spastics I’ve always insisted they are.

So, what’s so bad about it? Well, the fine Jakarta folks decided with one mighty menu click in IDEA to refactor. Classes have moved packages with impunity! API methods have been changed! Someone went wild with the deprecated tag!

As if that wasn’t hilarious enough, they decided to split it even further into more jars! It’s like a bad comedy sketch at this point. I mean, previously I suppose one could have argued up to a point, then conceded that what they’ve done so far is not explicitly harmful, and merely violates all that is beautiful, clean, and wholesome about Java. No longer! Now it should be plain to see to even the medically braindead amongst you that depending on such shite is a very, very foolish idea.

The real fun starts of course when the more enlightened OSS users amongst you decide you’d like to upgrade. Like a good little OSS monkey, you use a whole bunch of other OSS crap. Most of which, needless to say, casually uses commons-collections like a cheap whore in a time of need. Sorry kids, you can’t upgrade. You have to upgrade every single thing to use this shiny new API, or upgrade none. Woe unto you as some of the libs move on to collections-3.0 and refuse to support your current version, with that standard OSS battle cry of ‘just upgrade, it’s fixed in the current version!’. You could always of course go for deploying both versions, although I don’t know how you’d be able to sleep at night knowing you had done such an evil thing.

Astoundingly enough, there doesn’t even seem to be a guide anywhere as to what classes moved or why, or a clear description of the API changes on the pile of crap that maven shat out onto jakarta.apache.org. I’m sure one exists, but is buried somewhere deep in that rotting pile (or go through the shame of actually downloading the release). After all, it’s not nearly as important as being able to see TODO list for the project and all the shiny project metrics.

The saddest part about this is all the people who will still advocate this idiocy, and dig deep to try and find some justification for the madness. For these people, enough is never enough, they will cling to their false prophets in the face of all adversity, resolutely refusing to ever learn or evolve beyond the drooling simpletons they are.

Aren’t you glad now that there’s no spec mandating future behaviour or contracts?

33 Responses to “Commons Collections 3.0 ha ha ha!”

  1. Anonymous Says:

    FIRST POST

  2. Anonymous Says:

    SECOND POST

  3. Anonymous Says:

    THIRD POST

  4. Spiffster Says:

    FOURTH POST

  5. Guest Says:

    When you are right you are right.

  6. Spiffster Says:

    I am an asshat, short and stout,
    this is my jimmy and this is my spout,
    when I get all steamed up I just shout,
    “bend me over and pine-apple me out!”

  7. Spiffster Says:

    This is #java Haiku.
    I am a flaming homo.
    Please pineapple me.

  8. Carlos Villela Says:

    Best. Bile. Ever.

    Hats off, Hani!

  9. Julien Dubois Says:

    Okay Hani, so now you must have a big smile on your face.
    I’m using commons-collections. I mean, I use half a dozen of third-party jars that use commons-collections, and I use it also directly myself.
    And I’m using JBoss, with its wonderful Universal Class Loader (one classloader to rule them all…).
    This really sucks. You were right.

  10. Anonymous Says:

    I see your “self contained” blog is spamming javablogs again, Hani. Liar.

  11. Rocker Says:

    your “irrelevant arguments list against Maven” starts always with the site that it generates, which is: optional and customizable…is that all what you’ve got?…next!

  12. Anonymous Says:

    What you morons are all missing is that this is th precursor to commons-collections-4, the missing link, which has a set of delegates with the old packaging structure that, you know, delegate to the NEW packaging structure.

  13. Anonymous Says:

    I have never used commons-collection.jar, but I remeber it contained (and perhaps still does) collection classes for primitives. Someone expained to Hani, that the Axion database neeeded this collections to conserve memory (and I am sure other projects need optimized collections too). Now ,if you just look at the interview: “Generics in C#, Java, and C++ - A Conversation with Anders Hejlsberg” you will noticed the extra efforts Anders put in the C# generics design to address exactly the same issue…

  14. Footrot Flats Says:

    ]
    ]which has a set of delegates with the old
    ]packaging structure that, you know, delegate to
    ]the NEW packaging structure.
    ]

    Ahh, you mean like a compatibility.jar?

  15. Johnno Says:

    Fuck, I mean how many times can you release a set of collections. Do these people suffer from OCD? are they compelled to spend the rest of their lives writing more and more collection API’s????

  16. Henri Yandell Says:

    About time a rearrangement was done. Collections has lots of useful classes in and the lack of a clear structure made it hard to see things.

    Someday I am going to find myself with ‘3rd-party-lib A’ and ‘3rd-party-lib B’, one of which needs Collections 2.1, and one of which uses Collections 4.0, neither of which will work with each other.

    Of course, I also have a PDA which is stuck on JDK 1.1.8, so I’m not too impressed at all this Java-2 nonsense, and I’m a bit pissed that JBoss 3.x does not use the same configuration as my JBoss 2.x system, and all my code that uses the special bits in JBoss no longer compiles under JBoss 3.x.

    The sad thing is the number of people who think Hani believes his words for more than the 5 seconds it takes to write them :)

    There is one good point in there [and thus why I bother to read the blog]. A JavaDiff needs generating to show the difference between 2.1 and 3.0.

    http://www.apache.org/~bayard/commons-collections/Commons-Collections-2.1-to-3.0/changes.html is one, but it’s a week or so before release and might have some very tiny differences.

  17. Aivars Says:

    Ash jar durbatulûk, ash jar gimbatul,
    ash jar thrakatulûk agh burzum-ishi krimpatul.

  18. Commons 4Ever! Says:

    We’ve already started implementeding Commons-4 which will address most if not all of the issues Hani complains about here. It will be much better API and we will do many performance improvements. Plus we will add some coool new features. This will require some small API changes but we believe the end result is worth it.

  19. Sam Newman Says:

    But I’m assuming a new version will introduce even more API incompatibilities? Why not do it all at once and at least document the changes…

  20. Commons 4Ever! Says:

    Docs are for losers. Real programmers can read the source and figure out the changes.

  21. Ray Henry Says:

    Well surely, the new packages have been renamed, so that 2.1 and 3.0 can co-exist?

    Why not org.apache.commons.collections
    and
    org.apache.commons.collections3 ?

    We don’t want collisions in our namepsace do we?

  22. Anonymous Says:

    hehe.. you wish

  23. Anonymous Bastard Says:

    I particularly like this:

    “Note that this interface violates the Collection contract. The behavior specified in many of these methods is not the same as the behavior specified by Collection. The noncompliant methods are clearly marked with “(Violation)”. A future version of this class will specify the same behavior as Collection, which unfortunately will break backwards compatibility with this version.”

    Isn’t that lovely.

  24. Jakarta Developer Says:

    I’m in the process of updating commons-logging to serve not only as a wrapper for logging implementations but also as a wrapper for versions of commons-collections, so different versions can be used transparently. As long as you make sure to put commons-properties.xml in your home directory on the machine, you can use as follows:
    Collection collection = Collections.getCollection(”mypackage.myclass”)
    Sorter sorter = Collections.getSorter(”mypackage.myclass”)
    collection.add(a); collection.add(b); sorter.sort(collection).

  25. Commons 4Ever! Says:

    Hey I like that idea! It would be so cool if we could have common interfaces that everyone can use to call their commons library.

    We should really find all the abstractions in the current jakarta-*.jar packages and turn them into interfaces and package that. Then everyone would use our interfaces for everything.

    We could perhaps name it jakarta-bestsolution.jar … or maybe jakarta-bs.jar would be better, shorter name.

    I think most people would want to have jakarta-bs.jar in their classpath. Maybe we would be able to get even Sun to distribute it as part of lib/ext so it’s always there…

  26. Anonymous Says:

    “Docs are for losers. Real programmers can read the source and figure out the changes.”

    I just love to have my company relying on such intelligent people to provide frameworks.

  27. Stephen Colebourne Says:

    Sorry Hani, you got it wrong. I used Eclipse to refactor collections not IDEA ;-)

  28. Anonymous Says:

    When dialogues change
    Between ice and fire
    And wind comes
    Spilling sperm over your eyelids
    Like mayonnaise

    And sand eviscerates
    Your intestines, you watch
    The skeletons crawl and dance
    And wonder why
    You’re reading this.

  29. Rampant Clown Says:

    I’m back

  30. Rampant Clown Says:

    I’m rampant. Don’t even try to punch ME!

  31. Anonymous Says:

    Is fate upset with web services too? He’s gotta have a bone to pick with that one ;)

  32. Anonymous Says:

    >
    > “Docs are for losers. Real programmers can read > the source and figure out the changes.”
    >
    > I just love to have my company relying on such > intelligent people to provide frameworks.
    >

    Huh? Somebody who’s enough of a fucktard to take that comment seriously runs a company? Has a job? Truly frightening!

  33. bored_coward Says:

    Hani You Fuck Head stop bitching about common-* it’s getting Old you retard !

Leave a Reply