Tom's Blog
IBM and the Meaning of The
Published by Tom |
May 16, 2005 10:16 PM EDT |
IBM
says
it is
"making a major commitment to
Apache Geronimo
as the Open Source application server of the future."
Sounds good.
But what is the meaning of the?
If I said The Hitchhiker's Guide to the Galaxy is the movie of 2005, you might assume I'm recommending it, using the movie as a shorthand to mean "the best" movie. Is that what IBM means by "the Open Source application server of the future"? Or does IBM mean Geronimo is the open source application server of the future? That is, IBM will work to ensure Geronimo is never quite finished or stable so as not to eat into sales of WebSphere Application Server Express.
I'm sure IBM realizes its purchase of Gluecode Software last week -- and thus its acquisition of Gluecode's five staffers who have been key architects and contributors to Geronimo -- fomented discomfort in the open source community. IBM is the 500-pound gorilla. Geronimo contributors and potential Geronimo users are wondering just what are IBM's intentions toward Geronimo. Even Gartner said "some users will ... suspect IBM of attempting to control the open-source community" with its Gluecode purchase.
As of today, IBM has been mostly silent on its intentions. Last week, IBM said it will:
- Donate an Eclipse plugin to help developers target Apache Geronimo as their J2EE server
- Devote an unspecified number of IBM employees to work on Geronimo
- Keep the former Gluecode developers working on Geronimo
On the optimistic side, IBM's goals for Geronimo will mesh with the goals of the current team of Geronimo developers and its users -- to create the best available open source J2EE application server. IBM will devote smart developers to working full-time on Geronimo, and Geronimo's features and capabilities will outshine the other two open source J2EE servers, JBoss and JOnAS. Many developers and companies would like an alternative to JBoss Application Server, especially those concerned about JBoss's restrictive license, so IBM's commitment to Geronimo could end up being beneficial to everyone, except perhaps JBoss Inc.'s consulting services.
On the pessimistic side, IBM could use its Gluecode brain trust to swing Geronimo in a direction that benefits IBM and not average users. IBM now controls, through its new Gluecode employees, about half of the active committers to the Geronimo project. The chairman of the Geronimo Project Management Committee, Geir Magnusson Jr., is one of the new IBM employees. The Geronimo PMC controls the direction of the Geronimo project, deciding what features are added and who may contribute to the project.
I think we all want to assume IBM's involvement will benefit all users, not just IBM customers. I think we all want to assume IBM wants Geronimo to be the best open source J2EE server on the market, not the best server for IBM Global Services consulting income. I think we all want to assume IBM will allow the former Gluecode employees to continue their excellent work on Geronimo.
To allay concerns, the solution for IBM is to announce just what it wants to do with Geronimo and what influence it will try to wield over the project. Do they plan to fork the Geronimo project to create a separate version aimed at IBM customers? Will IBM's commitment to Geronimo fade over time, similar to IBM's previously strong commitment to Apache Axis? Do they plan to create add-on tools to make Geronimo easier to use and deploy in the enterprise, and make them available only to IBM customers who purchase 1-year support contracts? Do they plan to restrain its employees from adding powerful features to Geronimo that would make it a WebSphere competitor?
If IBM is truly committed to open source software, it would do the open source community a favor by announcing its Geronimo strategy with a clearer statement. Saying IBM is committed to Geronimo as "the Open Source application server of the future" hasn't done much to quell unease.
Monday May 16, 2005 Permalink
Comments [1]
Maven 2 will hurt Maven's adoption
Published by Tom |
May 08, 2005 09:22 PM EDT |
I think it's fair to say that
Maven
has yet to catch fire among Java developers.
Maven is complicated to learn and its documentation is lacking.
Most Java developers who are using
Ant
probably have heard of Maven
and its promise of easier automated builds.
In fact,
a fair number of Ant users probably have it on their To Do List to check
out Maven to see whether it will save them time.
But the Maven team's technology preview release last month of Maven 2.0 almost certainly will hurt Maven's adoption, at least in the short term. Maven 2 will slow Maven's adoption probably for at least six months, and probably into 2006 as the new Maven stabilizes.
Why my pessimism? Maven developers shot themselves in the foot by scrapping the goal of Maven 2's backwards compatibility with Maven 1, and introducing new technologies just as obscure as Maven 1's technologies. Barriers for Ant users to adopt Maven have always been Maven's steep learning curve, its scripting language (Jelly), and its semi-enforced ways of organizing a project's files. Now, Maven 2 will change Maven in drastic ways. Maven 2 scraps Jelly in favor of (I'm not kidding) Marmalade. And the favored way of writing Maven 2 plugins will be Mojos, which seems to be Java classes that get inserted into a Maven 2 Plexus IoC container. Not only does Maven 2 introduce an IoC container, it uses one that almost no one has heard of.
In short, why would an Ant user today even considering switching to Maven? If you aren't using Maven today, going to the trouble of learning Maven 1, only to be left with a tool that quickly becomes outdated as Maven developers leave it in the dustbin, would be a waste of time. For those who hate Maven to the point of bile or poetry, Maven's slower adoption won't mean anything. But for Ant users interested in learning Maven today, the Maven team seems to be saying "don't bother, wait for Maven 2."
If you think I'm exaggerating, here are quotations about Maven 2 from the Maven web site:
- "Maven 2.0 is a complete rewrite. It will not be backwards compatible with any of the Maven 1.x releases"
- "Maven 2.0 will feel very different to a Maven 1.0 user - and perhaps a little strange"
- "Plugins ... are the only way to script your builds"
- "...significant new features will not be added to the Maven 1.0 core"
- "Will my Maven 1.0 plugins be supported? Not directly"
Sunday May 08, 2005 Permalink
Comments [4]
Thank you, Saul, Monty
Published by Tom |
April 09, 2005 03:43 PM EDT |
When I was a high school senior,
my English teacher assigned
(my translation at the time: forced)
me to read
Henderson the Rain King
by Saul Bellow.
Henderson is a book about an inherited millionaire in his mid-50s (the book was published when millionaire meant "great wealth," not "the guy next door") who is lost in life and takes it out on everyone around him: his wife, his children, a stray cat, his cleaning lady, his neighbors (he starts a pig farm in his front yard to spite them). Uncertain what to do next, he accepts an invitation to visit Africa with a honeymooning couple. He arrives in Africa and welcomely ditches them in search of undiscovered tribes, which he finds -- and he proceeds to make their lives miserable.
In other words, other than being lost in life and wondering who he wants to be when he grows up, this is not the sort of protagonist a high school kid can relate to. Yet read it we did.
Even more, we discussed it. We discussed life, what it means to discover who you are, "becoming" versus "being," "truth comes in blows," tragedy, joy, life, death. This was the first "serious literature" I read in high school that I can recall actually having semi-intelligent discussions about with fellow students and the teacher. Instead of the teacher expecting you to recite what students everywhere have been reciting about literary works for decades, our teacher wanted to hear what the book meant to us.
Our teacher, Mr. Montgomery (like most of my high school teachers, I am embarrassed to admit he exists in memory with only a last name) led us students on discussions of personal identity and the quest for meaning. He was the first teacher I recall who talked to us like we were adults, even when we didn't always deserve it, assuming we had thoughts in our heads that might be worth hearing.
Mr. Montgomery, or "Monty" as we sometimes called in class during light-hearted moments, was a school teacher who was so good at what he did they moved him into "management" writing curricula in the district office. Years later, lucky for me, he took a pay cut to return to the classroom to what he loved -- teaching kids. And his love for teaching showed. Mr. Montgomery exposed me to literature in a way no teacher had, and at a time when I was more able to appreciate it. Honestly, at that stage in life, I wasn't ready to love literature. I still thought our analysis of Henderson was way overblown, and "hero" Eugene Henderson was hard to relate to. But Mr. Montgomery changed my definition of literature; I no longer viewed it as "boring big books sadistic teachers force you to read."

Saul Bellow: from New York Times
When I heard Saul Bellow died Tuesday at the age of 89, fond memories of Henderson and Mr. Montgomery returned. According to Bellow's New York Times obituary by Mel Gussow and Charles McGrath, the author won more literary honors than any other American writer. His awards included the Nobel Prize in Literature in 1976, a Pulitzer Price, three National Book Awards, a Presidential Medal. (If you don't want to register at the NYT web site, you can read an abridged version of the obituary on the International Herald Tribune's web site.)
This blog entry veers from my usual technical focus. It's my way of remembering two people who had an influential impact on my life: a novelist whose words could make me think about life in new ways, and a teacher who shared more of himself than he had to in order to teach me to think and not just parrot the Cliffs Notes.
To Saul and Monty, thank you.
Saturday April 09, 2005 Permalink
JUG Serendipity: Finite State Machines
Published by Tom |
April 06, 2005 09:13 PM EDT |
I checked to see what the next talk was going to be at my local
Java Users Group (the
Denver JUG)
and saw that
Eitan Suez
was going to be presenting on
The State Machine Compiler.
My first reaction was,
"What the heck is that?"
So I spent a few minutes reading about state machines and realized again why going to JUG meetings is great: JUG Serendipity. By attending JUG meetings, I learn about development tools and technologies I normally would never hear about.
Eitan will talk next Wednesday about the State Machine Compiler, a Java open-source (Mozilla Public License) project to automate creating classes that implement the Gang of Four State pattern. SMC allows you to define a "state machine" mapping file that defines the states your object can be in, what transitions trigger movement between states, and actions that should occur upon state transition. Then, in your Java code, you use a generated state Context object to change states when needed. The generated code handles the work of invoking methods to perform the actions and track the state transition.
By keeping the state definitions and transition logic in a separate file, you remove all the ugly switch and if-then-else state transition logic from your Java code. The down side is you have to learn a new notation to represent the state machine. Fortunately, the syntax defined by SMC isn't overly complex. And it's not XML!
SMC apparently was written originally by Robert C. Martin, then picked up and expanded by Charles W. Rapp. (Apparently not the same Charles Rapp agency that manages Nipsey Russell.) Uncle Bob still has a Java version of SMC available, but without source code.
Wednesday April 06, 2005 Permalink
Comments [1]
Rise of the Scripting Language
Published by Tom |
March 19, 2005 07:50 PM EST |
Are the scripting languages threatening Java?
A posting Friday on TheServerSide defending Java against Ruby on Rails made me realize that some Java programmers seem to be feeling threatened by Ruby and its Rails framework. The concern seems to be Ruby, or another scripting languages like PHP, makes developing web applications easier than using Java and one of its many web frameworks. The result being Java will start to die out and really will become the next COBOL.
Granted, there's a lot of hype right now about Ruby and Rails. We all read or heard about the article in January on the O'Reilly ONLamp web site by Curt Hibbs saying Ruby on Rails will let you develop a web application 10 times faster than using Java. That article seemed to strike a chord among Java developers. A lot of blogs have been discussing RoR and why it's the best way to go for developing web applications, or a big step backward for separation of concerns and good design, depending on whom you read.
And there's even been recent hype about PHP as a fast way to develop web applications. IBM last month, announced it will work on products to bring the "do it yourself" simplicity of PHP to products like Zend Core for IBM. The headline on one story proclaimed "IBM Bets PHP Is Open Source's Next Big Thing." IBM accompanied its announcement with a new developerWorks section devoted to all things PHP. This month, IBM developerWorks announced new blogs, by the likes of Sam Ruby, focusing on the benefits of PHP.
Does this mean Java is on the way out for developing web applications? Who knows? But why worry? New languages and new web frameworks will have to prove themselves. They're not going to steamroll over Java without some real projects proving their mettle over Java in the long term.
I do have a concern that some software development managers, in their quest for Cheaper, Faster, Lighter software, might fall for the hype of the scripting language du jour and hire inexperienced developers ("Hey, they're right out of college but they can program in PHP!") to write web applications in PHP or Perl because they've heard these languages will result in faster delivery. The result could indeed be fast delivery -- of horrendously complex, intertwined, unmaintainable code.
But how is that any different than hiring an inexperienced Java developer to do the same thing? I've seen a lot of inexpensively developed Java code that was horrendously complex, tightly coupled and expensive to enhance and maintain. (OK, there is a difference. In the latter case, I can get hired to come in and fix it at a nice rate.)
If the scripting languages and their frameworks like Ruby on Rails really do make developing web applications easier, sign me up. Ruby seems like an elegant, expressive language that allows for good object-oriented design. Exaggerated claims about a language or framework are no reason to dismiss it. If features of Ruby or Rails really make developing software easier, faster and more maintainable, Java and its frameworks eventually will adopt similar features. And if they don't, Java deserves to fade.
I'm not worried about Java fading soon. Java has been evolving since it began, learning from other languages and frameworks (even .NET). The EJB remote-object overkill was solved in EJB 2.0. Web services got easier to develop in J2EE 1.4. Annotations were added in JDK 5 and will be expanded in J2EE 5. Object-relational mapping is supposed to get better with EJB 3.0.
But what makes me believe Ruby, Python and PHP won't kill Java is that they haven't been able to do it in almost a decade. Object-oriented scripting languages, even Ruby, have been around for years. Most predate Java. If they were so uber-language powerful, why does Java (currently, at least) enjoy such a large developer and CTO mind share? What I think we're seeing in the Rise of the Scripting Language is that Java is overkill for a lot of projects. Just like we all accepted a couple of years ago that EJB is overkill for a lot of projects. The interest in scripting languages could be a trend similar to the growing interest in Spring and Hibernate to help us simplify our applications.
The interest in scripting languages among Java developers actually seemed to start a few years ago. I remember hearing Bruce Eckel in 2001, saying how Python, with its OO features and dynamic typing, allow him to write software faster and more elegantly. He said in an interview on Artima developer that:
I feel Python was designed for the person who is actually doing the programming, to maximize their productivity. And that just makes me feel warm and fuzzy all over.Since about 2000, Dave Thomas has been saying how Ruby does the same for him. Here's an excerpt from an article he wrote for Linux Magazine in September, 2002:
Ruby is concise (like Python), fully object-oriented (like SmallTalk), and powerful (like Perl). In addition, Ruby is a remarkably capable language for building Internet applications. Ruby's libraries and built-in networking support make networked applications (such as email clients, SOAP servers, and distributed processing) easy to write and easy to maintain and extend.But the interest in scripting languages among Java developers really seemed to begin in the past few months with all the talk about Ruby on Rails. It seemed to start with Curt Hibbs's O'Reilly ONLamp article, the one in which he said:
What would you think if I told you that you could develop a web application at least ten times faster with Rails than you could with a typical Java framework? You can--without making any sacrifices in the quality of your application!The next month, Bruce Tate said in a February blog that Ruby on Rails "is beautiful, simple, and has a little bit of magic to it." He said he loves Ruby.
The Rails lovefest hasn't gone by without some cricism. JavaServer Faces expert David Geary countered Hibbs's claim that Ruby on Rails beats Java hands down:
...ROR is no match for a Java-based web app six pack of JSF-Shale-Tiles-SiteMesh-Hibernate-Spring .... I'm not going to use the default views generated by ROR (nobody is, except for simple UI mockups) and implementing my own views in ROR looks mighty ugly to me. And am I going to just throw away the incredibly rich collection of open-source Java software, like JSF, Tiles and SiteMesh? No way. ... [Y]ou take this ROR koolaid. I'll stick with the JSF flavor.Still, after getting an email from Bruce Tate, who raved to him about Ruby on Rails, Geary responded last week in his blog that he would take a closer look at Ruby on Rails before criticizing further.
I'm going to bet that the use of scripting languages like Ruby, and scripting-language based frameworks like Ruby on Rails, will increase in the coming years. Still, I don't think Java will fade as a result. I think the increase in scripting languages will help developers refine their decisions on where the power or maturity of Java is needed, and where it's not.
And by the way, where's Groovy (JSR 241)? Last year, I heard from a developer that he's several times more productive writing in Groovy than Java, and had several thousand lines of Groovy code under his belt to bolster his comparison. Yet I don't hear developers talking about Groovy to the same level as other scripting languages. Maybe once Groovy reaches its 1.0 milestone, we'll start to hear how Groovy can make us 10 times more productive as developers.
Saturday March 19, 2005 Permalink
Comments [12]


