Tuesday, December 07, 2010

Resigned from EC

Today I resigned from the SE/EE Executive Committee of the Java Community Process. I lasted about a year before giving up hope that the ECs would ever do anything meaningful.

The last straw for me was Oracle's failure to address the ambiguous licensing terms in JSRs 336 and 337 (the Java SE7/8 umbrella JSRs) before the EC had to vote on them. At first I abstained, but I was so dismayed by Oracle's silence that I changed my vote to No, joining the Apache Software Foundation and Google.

Several of the other EC members expressed their own disappointment while voting Yes. I'm reasonably certain that the bulk of the Yes votes were due to contractual obligations rather than strongly-held principles. It's not that I'm shocked, shocked that votes can be bought, but it finally made it clear to me that my vote was worthless.

Add to that Oracle's expressed intent to proceed with the SE7/8 JSRs whatever the outcome of the vote, and one can only conclude that the SE/EE EC is never going to be more than a rubber stamp for Oracle. (The belligerent tone with which this message was delivered does not come across in the public minutes, but it was loud and clear over my phone connection.)

That's not to say that I'm against the technical aspects of the JSRs. In fact, I'm a member of the Expert Group for JSR 334 ("Project Coin") and I'm participating in discussions about some of the library-related work on JSR 335 ("Project Lambda"). I think these are both good projects that will ultimately be beneficial to the Java language and libraries.

But here's a funny thing: To my own surprise, I'm coming to believe something heretical, that it actually is not all that crucial for Java to move forward, at least not to the constituency I felt that I represented on the EC, the tens of thousands of Java developers who don't work for a big company with an Oracle contract.

The big boys want big apparent forward motion because it means more stuff to sell, more contracts and control. As a result, we are whipped to a frenzy with messages (both subliminal and explicit) that Java is falling behind, losing mind-share, being lapped by C#, anything to sell the idea that more is desperately needed, when in fact most folks could make do with a lot less.

So while I think things like Project Coin and Project Lambda are worth working on, the Java ecosystem is already so amazingly rich that the absence of these features (and of all the other good things planned for SE7 and SE8) in practice doesn't get in the way of real progress for developers like me, who just want to put together maintainable, type-safe programs, taking advantage of field-tested readily-available libraries and frameworks.

It's nice to be back in the real world, writing Java code. Here's a partial list of what I'm using, besides Java:

Joda Time
YUI Compressor


Rob Heittman said...

Applause. I won't ask for an encore :-)

Thibaut said...

Well said, totally agree.

Lars Vogel said...

Congratulations to your decision. Sounds like you life by principles which is admirable.

Sam said...

I think we did a big mistake by adopting a language owned/controlled by a commercial company. I don't have faith in JCP anymore as it is a puppet under the hands of Oracle.

A computer language should be governed by an independent body(ANSI/ISO) and implemented by a community or a software company.

Tembrel said...

@Sam - Please don't confuse JCP/Oracle with the greater Java ecosystem. I don't regret my use of Java; you shouldn't either. There will always be those whose only response is "Just use Python/Scala/Erlang/whatever", but such folks are either unaware of the richness of the Java ecosystem or too invested in their own navels to understand what it offers. FOSS purists can scoff, but I'm getting work done.

Barry Kaplan said...

@Tim - Except with Scala we don't give up any of the Java ecosystem.

Tembrel said...

@Barry - Yeah, wish I liked Scala more, but ... I don't. Java hits the sweet spot for me. You like Scala, that's cool, just don't make me program in it.

steve said...

Just interested: What's wrong with it?

Tembrel said...

@steve - Nothing at all. Just a personal preference on my part, not a judgment of its worth. Or were you asking why it doesn't hit my sweet spot the way Java does?

Mohamed Sanaulla said...

So what are the future prospects of Java? With all these oppositions , we can't expect the language to grow and improve.

Arcko Duan said...

Support you!

steve said...

Yes, that would be interesting!

Tembrel said...

@Mohamed - I've stopped believing in the idea that languages have to constantly grow and "improve" to be worth using, at least in the sense that big software companies promote. In fact, I think most of the time language growth is a bad thing -- like cancer, not gardening.

That said, I have no major issues with the content of the JSRs I voted against, and I expect to use these new language features and library additions when they become available.

Unknown said...

Congratulations Tim, very impressed with your resolve and commitment to your principles. You'll get and give far more being outside the EC than within. Java is an independent language for independent thinkers and the innovation will always come from there.

I also agree with you wrt Scala... i don't see what it offers over Java. The best thing about it is the JVM :)

Good luck with your future endeavors and their success!

Tembrel said...

@steve - It's probably not all that interesting in the end, and not something entirely susceptible to rational analysis. I prefer my Baldwin grand to all the Steinways I've ever played, but explaining why would involve my entire history of piano-playing.

But just to give you a sense of the kind of thing that matters to me: Scala is pretty relaxed about things like providing explicit types for variables when they can be inferred from context, and from my (admittedly limited) reading, Scala programmers tend to omit types whenever they can. Java forces you to supply types everywhere. The practical result is that I find it easier to read Java code, even bad Java code, than I do Scala code. I quite understand that there are others who have exactly the opposite feeling, but it's not something I chose -- it's who I am.

And I've always felt this way about the readability of Java, from the very first time, when I was a hard-core C++ programmer.

Like I said, I wish I could love Scala. It's very cool. Not as cool as Haskell (which is beyond cool), but you can actually write programs in it. And maybe some day I will fall in love with it. But not right now.

Alexander Shopov said...

Sorry to hear that Oracle is that belligerent. I am very sorry to hear that they push the Java platform into the ever bigger corporateville. As a Java developer I constantly feel this entanglement.
The list of tools and frameworks you use seem interesting, kudos for sharing.
And yeah, Java does hit a sweet spot.

Tembrel said...

@googy - Thanks for the good wishes. Scala has a lot to offer over Java. But I'm a Java programmer.

Tembrel said...

@Alexander - The belligerent tone came from one person in an unenviable position, not from the smooth-talking corporate types in upper management, but I think the word accurately reflects the overall corporate stance.

But I have friends at Oracle who are extremely smart and sincerely dedicated to Java. Given the irrelevance of the JCP, I can't imagine a better group of people to be carrying things forward.

Anonymous said...

I spent about a month evaluating Java for a new project a while back, and fortunately I chose a different path.

I like Java. I think it's a great language and I use it for building Android apps, but with Oracle controlling it, I just don't think the future is bright for Java.

And so when you're making a business decision, "which language should I choose?" There's a lot of risk associated with selecting Java now that Oracle is running it. And there's a lot of options available.

I can't imagine being put into a position of having to rewrite an entire application 5 years down the road because of something Oracle decided to change about Java or its license or whatever. That's expensive. That's a risk I'm not willing to take.

Stephen Colebourne said...

I just wanted to say thank you for your time on the EC and your work in Java in general. Its clear how difficult you found this vote and how it was Oracle's actions that ultimately changed your vote from abstain to No. Enjoy life outside the EC!
Stephen Colebourne

Tembrel said...

@keith - That's your call, but unless you're a big enough business to mean anything to Oracle, I think the worst you'd have been facing with Java is the faint possibility of one day being offered a choice between paying for a premium JVM or getting an ordinary JVM (like the ones running on uncountable machines right now) for free.

Don't get me wrong: Oracle's actions have not been good for Java's image, and they do have serious consequences for large companies that have contracts with Oracle.

I'm not happy about any of this. But I'm not running for the hills, either, and I think individual developers who do so have overestimated the risks with staying and underestimated the costs of fleeing.

M0les said...

I like the phrase "Apparent forward motion" - This is why Linux is at v2.6 and as far as anyone who's involved will stay that way for the foreseeable future. There's no need to "one-up" the release number just to tick-over support contracts.

javin paul said...

first post I have read from a person who was part of EC. I hear you though.

By the way in your list I think one thing is missing and that is "Java"

10 tips on java debugging with eclipse

Tembrel said...

@Javin - I said "besides Java" at the top of the list.

jeet said...

I am a student developing in java6 for past one year.
Can your please tell me your views on
why a corporate or any developer should move on to java 7 and if not why he should not move to java7.
apart form license issue.
thanks in advance.
cheezeeeee :)

Tembrel said...

No surprises here: The main reason to move to Java 7 is if you want to take advantage of its new features. The main reason not to is if you depend on a third-party library or tool that for some reason doesn't yet work with Java 7.