This work is very good quality, and would be exactly what I would do in a private library. Regrettably commons collections must preserve the integrity of the HashEntry abstract class and cannot change it to an interface. If an AbstractHashedSet ever gets created then an interface design should be used. Thanks for the code, unfortunately closing as wontfix due to backwards compatability.
The event that started this episode was Apple's announcing a second release of a preview version of its java developer package.
Apple releases preview fixes of its developer package, but is very secretive about it. One can download the software from the developer site, but is under the obligation to only discuss the technology on one restricted non archived mailing list. This is completely the opposite of what I have been used to with Sun's Java Virtual Machines that are openly available, where you can download the latest beta with no such draconian speech restrictions, where you can file and browse bugs, and find work arounds to those bugs on an open database for all three of the platforms supported by SUN: Solaris (x86, sparc), Linux and Windows.
On the Apple platform it is recommended that one not install the preview release on one's main machine but only on a second spare partition, as one cannot uninstall the preview: it overwrites the installed j2se1.4. None of the other platforms I have worked on had any such restriction. On those platforms it was dead easy to run all the JVMs simultaneously.
This was the second preview release and I thought a little enthusiastically that I could help Apple out by testing it. I should not have. As it turned out there were still a few bugs in that preview release that slightly but annoyingly break some of the Applications I am using. And of course there is no way to go back to the previous version. I don't have enough hard drive to partition my disk, not enough money just now to buy one. So I am stuck with a broken JVM for the next month or so.
Well I acknowledge my mistake, and am paying for it with a broken Java installation. But it did spur me on to finally speak out at length about the counterproductive, if not ridiculous, secrecy on the Apple platform. Java is open, not quite enough, but very close to fully open. Apple is trying to be secretive about their implementation of Java, which they are contracted by SUN to be 100% compatible with the standard. So we all allready know what is in store for Java - we just need to look at the other platforms. The current Apple policy is as ridiculuous as trying to hide a piece of common knowledge.
So there we are. I have put more than a full days work to help convince Apple, and other people reading Apple's Java developer mailing list that for very little effort they could bring a great deal of improvements to their lives and those of the developers using Java on Apple. I have filed two bug reports concerning policy at Apple. I reported one bug on an upgrade of the current JVM. That is really enough work from me for Apple.
Hopefully this contribution will be visible and help make a difference at Apple. Then my effort will have been worth it.
The first thing I did when I got this laptop is to digitise my entire music collection in AAC format at 160kbs. I then digitised my parents and all my sisters music too. For the first time in our family's history my parents are really able to listen to all the music they have had. CDs used to be just too much trouble. Remember the day when you had to search for the CDs, that you knew someone was bound to have mislaid? The discipline required to keep track of one's music collection went counter to the spirit of the music itself. I now have 500 hours of music on my laptop. And it is not enough! I can see very well that in the future people will be appalled by the idea that we used to listen 100s of times to the same interpretation of a piece of music, when there is not time in life to listen to even a fraction of the best interpretations. There is so much music out there.
So now I can work while listening to music, on a computer designed with a musician's attention to detail. All the pieces are in accord. The solid unix OS allows me to do my work easily and fluidly. The fonts and graphics allow me to read the text without getting distracted. The Java integration gives me all the tools I need to build projects that work as well on the other machines as they do on my own.
And I know that if I want to move - perhaps because of Project Looking Glass - I can. And I know Apple knows that. And I know that helps them focus on improving their technology in such a way as to make it less likely for me to move. Open Standards are a bit like a democracy: their lock in is freedom.
I have used both nearly exclusively since then. I thank Java for getting me a job at AltaVista, which then led me onto the fun BabelFish project. But since then I never really found the time to contribute back to the community other than as an ardent advocate.
Having in the last few years worked on a few dead end jobs, I decided I would be better off contributing to the community instead. That way at least I could choose a project that would be of interest to me, be judged only on the result of what I did, and learn by doing.
In Febuary I contributed unsuccessfully a patch to the Apache commons collections project. My patch was a good improvement, but broke slightly the binary compatibility of the library - something I had not considered before. This experience made me understand better than anything before the power of the private, public, default and protected keywords in the java language, and the importance in a public library to limit the publically visible methods and classes. The experience was good, so I decided to look for something a little bigger.
In early March I found a todo item on the BlogEd site that related to the semantic web, one of those fields where - as with the BabelFish - philosophy and computing meet. I asked if there were any projects I could help on. The utility of an xml-rpc link to servers such as SnipSnap was mentioned by James Gosling, among other things. This looked like a nice small term project I could get finished in a reasonable amount of time. So I started working on it. It introduced me to the internals of BlogEd itself, and to the blogging world in general. I was able to get a link to Movable Type and SnipSnap working, and checked the code in, along with a bunch of other fixes in mid April.
The work on the xml-rpc link revealed one of the acknowledged limitations of the bloged data file format, which led me back to the initial hunch left by James Gosling that something RDFish could be the way to go. This is a very interesting topic which I am currently working on. It has given me the opportunity to investigate the development of the Semantic Web over the past 5 years, which was quite a lot of stuff to catch up with. It has for the first time in a long time led me to a conversation where a philosophical subject has been of direct relevance to the computing issue at hand. I really look forward to more such discoveries. And I certainly would never have found this area so clearly had I not just taken the time to follow my own interests in an open way, by helping along in the community.
The benefits from working in the open has therefore not just been the technological skills I have aquired, or the knowledge gained, or the help it has given me in discovering a fertile field of research, but also the numerous people I have met along the way, such as James Todd, a Sun engineer who has been really helpful and an enthusiastic supporter, Danny Ayers for his Atom in Owl, various people at the W3C involved in the Semantic Web for helpful comments on irc, James Gosling of course, and many others.