Older blog entries for robilad (starting at number 92)

19 May 2006 (updated 20 May 2006 at 00:44 UTC) »
We've Come A Long Way, Baby

One of the benefits of Kaffe is that it is wildly portable. Almost any combination of cpu and os has got a port somewhere, and new ports keep coming in at a steady rate. In particular, you can now shortcut Sun's complicated build process for their proprietary 1.5 release using Kaffe, at least on x86_64-openbsd.

Fun, in a twisted way.

17 May 2006 (updated 17 May 2006 at 16:32 UTC) »

So, according to the last big news, the big question is no longer if, but how. This is how:

The closest collaboration point between free software Java developers outside Sun and the engineers on the other side would be the test suites. Since the free software projects like GNU Classpath and Apache Harmony, just like Sun's developers consider compatibility to be one of their prime goals, a merge of the respective test suite code to a common, free software, compatibility & regression test suite for the core Java specifications would be pretty useful for all implementors, as well as distributions using the DLJ.

Meanwhile, the simplest thing Sun could do to make open source Java reality a little sooner, and create a collaboration effort, would be to modify the current "Read Only" JCK license to allow compilation and execution of Sun's official test suite by independent implementations.

17 May 2006 (updated 17 May 2006 at 13:15 UTC) »

It's JavaOne time again, and Sun's collection of Java technology licenses includes a new addition, the Distro License for Java, aka DLJ.

On a cursory glance, I'd agree with what David Walluck said on debian-legal, it's a rather odd license choice, which seems to in part address some of the problems from the BCL, but in exchange seems to add a bunch of new ones.

I hope the forthcoming discussion on debian-legal will clear it up.


Some time after introducing Glasnost, there is a small substitution at Sun's leadership.

In the best Sun PR tradition of not letting facts get too much in the way of a PR message, the press release credits Sun for "the open sourcing of Java[tm]", something Sun never did.

Au contraire, mes amis: Here is a characteristic quote from McNealy on 'open sourcing Java': "I don't know what problem that would solve apart from IBM's childhood envy". Schwartz has been more diplomatic in explaining Sun's reasoning in the past, with quotes like "Our refusal has nothing to do with Sun being proprietary and everything to do with wanting to keep Java from forking", but has still sayed true to the party line.

Looking at Sun's handling of J2SE and the JCP, and Sun's lack of good fortune, last April's "Schwartz also predicted that companies that pledge support for open-source software but that keep their own products proprietary will eventually be exposed as hypocrites and fall by the wayside" sounds a bit ominous for Sun's future. As much as I hope that Sun does not fall by wayside, I doubt that Schwartz sees the need for a full-fledged open source Perestroika.

Who needs specifications, anyway?

Wontfixing standards

7 Apr 2006 (updated 7 Apr 2006 at 11:23 UTC) »
Hey, dude, where's my JSR??

Dear me, there was a real flurry of totally futuristic Java Specification Requests recently!

Watching Sun Microsystems turn into the mother of JSR invention recently was quite exciting. So far, it seems that Sun has said goodbye to earlier conservativism on all things regarding Java or the JVM, so apparently nothing is too outlandish to get into J2SE any more.

Embedding XML into the language? Sure, go help yourself. Adding new bytecodes to the JVM that are pretty pointless for running actual Java applications? Null problemo. Doing OSGi only sorta different with a twist? The JCP will let you have several JSRs for that. Loudly thinking that applying the idea of inner classes onto packages would be kinda cool on your blog? Woppiedoo, there is a JSR for you, too.

Last time someone tried to get people excited around one of those ueber-exciting JSRs that will totally reshape the future of Java (deployment), was JSR 277. That's the one where OSGi meets Maven, and they have a love child that is like a CPAN for Java, only with small JARs. Sorta. Kinda. It's hard to tell since the JSR 277 has not produced anything since its inception last summer, besides enthusiastic exclamations of support when it was announced. No drafts, no mails, no announcements, no calls for contributions, no nothing at all. Not even a java.net project, afaict. I guess it's one of those situations where JCP's approach to transparency via spec-leads really shines. So, yeah, if someone knows if JSR 277 is officially dead, or just looks like it, please do post a blog entry, or, preferrably, the JSR 277 mailing list archives. I am seriously morbidly curious if it was eaten by a grue, or something else happened to it.

What else does the future hold? Ah, "invokedynamic". A whole whopping new bytecode. The first one in approximately 10 years, afair.

So, it turns out that the whole "there is no Java in Ruby (on Rails) or PHP or Python" thing actually irks someone at Sun enough to do something about it, to give all those potential deflectors from the JVM something to hold on to, while the JVM gets rebranded as the language independant platform of the future. Since those programming languages are characterized as "dynamic" languages, someone at Sun thought really hard how to associate that cool, new buzzword with the not-really-well-known-for-its-dynamism JVM, and came up with a new bytecode, invoke ... tada ... dynamic!

Personally, I'd have gone with simply reserving bytecodes for "invokeweb", "invokeweb_2" etc. without specifying their behaviour, which would let future JVM designers easily choose which hype they want to invoke an association with. Less of a hassle with reworking the verifier.

And you know what? I'll let you submit that JSR. Consider this blog a draft spec, and go claim your five minutes of JSR fame.

Speculating About Sun

Every now and then, people like to speculate over Sun Microsystems releasing their implementation of J2SE under a sane, open source license. Sun's executives used to say "No" to such speculation each time that sort of issue was brought up over the past 10 years.

That tune has changed to a more undetermined "You Never Know" recently. That has, in turn, led some people to assume that the funniest things will happen for Java One. To those of us writing free software in Java, that's a familar ritual: each year, a few months before Java One, someone will start drumming up the Java developers with "they'll totally open source Java for real this year! You just have to totally believe in it!", usually based on someone at Sun getting tired of saying "No", and chosing the easier answer, that leaves no room for counter arguments: "You Never Know".

So, here is a my take, why Sun will not, any time soon, relase their Java implementation under an open source license, and how you'd notice if they were planning something like it:

a) Marketing. In 2006, Sun Microsystems will be interested in migrating their customers to the next release of their implementation, i.e. Java 6. Opening up an older version would take away momentum from that. Opening Java 6 would only lead to higher support costs on Sun's side, without getting more migration to Java 6 done. I.e. less money for Sun.

b) Support. Sun could not just open up their former crown jewels and let them bitrot in public without earning some bad press. I've watched people struggle majorly on Mustang forums to build Sun's 1.6 betas at all, and I doubt Sun could just push out the source they have for 1.6 with anyone outside Sun being able to build it without massively cleaning it up. But otoh, supporting people building and hacking on an old release would take away momentum from the new release, and simply costs good money for the support engineers that Sun would probably rather invest into supporting their 1.6 release or into 1.7. Again, less money for Sun.

c) Nowhere to go with patches. It's unlikely that Sun would want or be able to accept community patches for an old release, while they work on Java 7, due to the way the Java trademark is tied with compatibility requirements. Making any release based on community patches would either require extensive compatibility testing, or, if Sun deliberately released untested, possibly incompatible implementations, dillute the Java brand's positive connotations. The real, licensing-cash-worthy value for Sun is in the brand, not in a particular implementation they give away gratis.

d) Legal. Sun's implementation contains several million lines of source code. Just like with Open Solaris, Sun would have to undergo a lengthy, costly process of securing relicensing rights/copyrights to each line of code it does not hold copyrights or relicensing rights to. That takes time, as one can see with OpenSolaris: work on opening all of Solaris up started a few years ago, and is not finished yet, afaik. It would be pointless for Sun to say they'd open up anything but their Java implementation, and then spend their resources doing it the other way round, wasting the positive PR effect.

e) Community. Sun would first try to build up a community around the code base, before they push it out in the open. Since there is no pilot program for Sun's implementation, there is nothing in the works of that sort. Note that the Mustang 'JRL community' is explicitely designed to not be an 'open source' community, but to encourage collaboration with VM researchers and small bug fixes on Sun's proprietary code base. There is nothing on the Mustang forums from Sun's employees that indicates that Sun Microsystems would have an interest in transforming the Mustang code base into an open source offering in the near future, and there have been no such remarks from anyone who'd know in public, for all I know. They would contradict the official statements from Schwartz, McNealy, Gosling, Hamilton and others, anyway, and last time someone said something like that in public, his superiors were quick to rectify the mistake.

On the other hand, I know that a lot of great people inside Sun would welcome being able to work with an open source community on J2SE as well, just like developers outside Sun, but I assume that Sun's management would prefer to proceed gradually and see how the JINI, OpenSolaris, GlassFish and JES transitions work out before they tackle the big one. If ever.

f) No real need for Sun. Sun's implementation gets 20 million downloads per month, according to a statement from Schwartz at the Sun/Google press conference last October. It's hard to see for Sun how relicensing their implementation would buy them more 'volume', as the maker of the dominant desktop software platform, Microsoft, is not going to ship Sun's implementation, no matter what the license is. They've got their own offering in the managed runtime space to promote with their upcoming operating system release, Vista.

For other popular software platforms, Sun either provide a compatible implementation themselves, or have a contract with someone with a financial interest in a seing compatible Java implementation on their platform, like Apple or IBM. If Sun opened up their implementation, and started to include ports to platforms where their licensees have financial interests of their own, they could cut into that licensing income. Not a good thing.

g) Licensing revenue. Sun monetizes their investment in Java technology just like any other proprietary software company: by selling restricted usage, modification and redistribution licenses. Sun sells licenses for their Java-based products, the RIs, the test suites, and sells support services. That very lucrative revenue stream would most likely stop, if Sun released their implementation under an open source license.

In particular, in the mobile market, there are many devices, many carriers, and many manfacturers, so there is a lot of (potential) licensing revenue to be made. Since J2SE is a superset of J2ME, where the licensing revenue is, if Sun opened up their J2SE implementation, they'd be inviting competitors for that license revenue. That's the last thing Sun needs.

So, there you have it, a handy reference for why Sun's implementation won't be open source any time soon, i.e. for as long as Java really matters: It would make Sun no money to open it up. The only way for Sun to keep extracting the licensing revenues for their J2SE implementation is to keep it proprietary and keep control over what Java is.

It's that simple.

27 Mar 2006 (updated 28 Mar 2006 at 10:29 UTC) »
Kaffe 1.1.7 out of the door

Phew. That was one fun weekend. But finally, Kaffe 1.1.7 is out.

While waiting for the bugs reports for the release candidate to come in rolling, I've ported Kaffe to the two remaining platforms (save from OpenVMS, which is way too alien for me) it was not running on HP's testdrive site: FreeBSD 6.0 on Alpha and IA64. Porting Kaffe turned out to be as easygoing as I remembered it: a bit of copying of files from FreeBSD's amd64 port, a bit of tweaking of sigcontext entries, and the ports were up and running.

Kurt Miller added the 60th in-tree port of Kaffe, to OpenBSD running on powerpc CPUs. There is a post-relase patch pending to actually make that work with all regression tests passing, as the default stack size was too low.

Spring is in the air, it's time for a RC

After a few weeks of cleaning up, fixing bugs, polishing, resyncing around, Kaffe's 1.1.7 rc2 is up, with all the goodies from GNU Classpath 0.90, and some more niceties, like the beginning of a port to blackfin CPU architecture, various fixes for Cygwin, OpenBSD, etc. The majority of build issues we had during the transition to use fastjar, embedded zip and merged in GNU Classpath are fixed now.

The tarball is up for download at http://www.kaffe.org/~robilad/kaffe-1.1.7-rc2.tar.gz

Walk like a Belgian

Sunday at FOSDEM started with me sleeping in, and Wolfgang Bär politely banging on the door to make sure I don't miss the five slices of bread and a slice of cheese at CHAB. More accurately, since Roman Kennke, who was staying there as well, was scheduled to talk at 9 AM, we scrambled to have breakfast, check out, ride with Michael Koch to ULB and pop in just in time for Roman to start his presentation. It worked.

Roman showed how far GNU Classpath's SWING implementation has gone from early last year, when we had demos somewhat running, to today, when BeanShell, JUnit and other applications work fine. A lot of people have hacked on Swing in GNU Classpath, and put in hours of work to fill in the stubs with working implementations, and it shows. I am looking forward to running at least the NetBeans RCP on Kaffe OpenVM this year, given the amazing amount of progress by Roman, Lillian, Anthony, and many others.

Another area of huge activity in the past year was CORBA support. Dr. Audrius Meskauskas picked up the ball when it became clear that we can't use OMG's org.omg code due to their non-free license, which prohibts modification. As it turned out that all the other free software CORBA implementations written in the Java programming language had the issue that they depended on or included the non-free code from OMG, GNU Classpath had to write its own implementation, written from scratch, and free from non-free dependencies. Audrius created a largely complete, compatible CORBA implementation in GNU Classpath in a couple of months almost single-handedly, and has plans to add better tool support and some interesting ideas to improve the performance using dynamically generated proxies.

Then it was time for the battle of GNU Classpath interpreters for the 'state-of-the-art' crown: Robert Laugher's JamVM vs. Christian Thallinger's Cacao. First Robert explained some of the tricks used to make JamVM really fast, and then Christian showed the results of using vmgen to generate an interpreter that's about as fast as JamVM automatically. I'd be very interested in seing the vmgen-generated interpreter merged into Kaffe, as an additional interpreter, in particular for the platforms where we don't have a working jit yet. The code looks nicely mergeable, we'd just have to figure out how to best deal with the different internal representation used in Cacao.

Finally, the day was wrapped up with a discussion to see what everyone is working on. During the dicussion, a fim crew dropped in to film it, and asked the participants where they were from, etc. They seemed a bit surprised that a free software developer meeting in Belgium would draw participants from all over Europe, and the US. It must feel weird to see that free software development is a social activity, if one does not expect it.

I had to leave a little early, to catch the last trains back to Saarbrücken, so I missed out on the last pub stop and related discussions. All in all, FOSDEM was great, like every year. Thanks to Pascal and the rest of the FOSDEM team for having us.

83 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!