 |
Popular vs. Great
Posted by batate on December 17, 2005 at 09:56 AM | Comments (23)
Cedric posted a blog about fans of frameworks at The Fan Syndrome. I think the main point was that a framework could be good, without being popular. It's an interesting premise that I explore in detail in Beyond Java.
1) Lots of fans == successful framework == popular framework
Most framework developers want to be successful, so they need lots of fans. Sometimes, that means you've got to aggressively ride a wave that shouldn't be ridden, like XML everywhere, against your better judgement.
There are a whole lot of poor frameworks with lots of fans, like EJB 2.
2) Great framework != successful framework
The best framework developers start with good motivations. They want to improve the lives of their users in some way. But sometimes, that's not enough. There are lots of examples of great frameworks that never accumulated lots of fans. I've often promoted frameworks that did not win, even if I knew they might not win in the end. I love Rife; not sure if it will ever be successful on the order of Spring or EJB 3. A great framework needs to "cross the chasm" (see great marketing book by Moore), moving beyond early adopters to pragmatic everyday developers, to be a successful framework. Java crossed the chasm; Smalltalk didn't.
Some frameworks have great technology, but never experience broad success.
3) Great framework != successful programmer
This is the first tough one. You can pick a good framework, and get burned. Stagnation and momentum are important. The best horse doesn't always win the race. The problem is that the losers may finish second, or collapse so you're trampled by the eventual winner.
Good technologies sometimes fail spectacularly.
4) Popular framework + great framework == successful programmer.
This one is usually true. Rod Johnson and Juergen Hoeller didn't get hit by the same truck, and developers the world over are happy about that because they're much more productive. Spring, log4j, and Hibernate are a few examples, but there are hundreds. But here's the tough part. Great is subjective, greatness often fades, and popular is subjective in the early stages.
When you can choose great and popular, you should.
Breaking it down
So, there are a number of interesting issues for me as an independent consultant here.
- My radar comes on strong when someone aggressively speaks out against an acknowledged great framework, that is also rapidly gaining in popularity. I wonder, what's the motivation of the speaker?
- I often look for popular frameworks that for whatever reasons are not great frameworks in certain contexts. The reason is clear: I can provide a whole lot of value to a whole lot of people that are possibly using something that's just plain wrong or out of context. BFLJ, Beyond Java, Bitter Java, and Bitter EJB were all books on this theme. To a lesser extent, Spring ADN was on that theme too, as an extension of BFLJ.
- If you want to spot the great frameworks that will also someday be great, popular frameworks, you need to be studying both technology and marketing.
- I'll be coming out more aggressively for Ruby on Rails in the next couple of months, because it is clear to me that RoR will be a popular, great framework based on the steepness of the adoption curve. RoR will cross the chasm. The leading edge of a disruptive technology is a good place to be. I can help a few customers secure a competitive advantage, and I can help my customers deliver more value and charge more money for what they do. That's important for both my customers and me in an era of globalization.
- I think Spring is another good place to be. Spring is a popular, great framework. Spring has crossed the chasm.
- I think Java's greatness is fading, as all great programming languages fade. We simply accumulate new understanding. Java has crossed the chasm, but its greatness may be failing.
So the "fan syndrome" is complicated. Are you defending fading greatness, are you blindly supportive of popular but not great, or are you objectively identifying popular greatness? Time will tell.
Bookmark blog post: del.icio.us Digg DZone Furl Reddit
Comments
Comments are listed in date ascending order (oldest first) | Post Comment
-
Your last sentence uses the word "objectively", yet many of your conclusions are subjective, starting with "I think" without any backup. You're talking up ruby on rails a lot and denigrating Java. Is that helping to sell your book?
I would like to think your comments are impartial, but I get the impression that you're just trying to scare developers on a regular basis into thinking that they've been left behind so that they'll look for a solution (wouldn't a book be great...?!).
Your blog entries seem about as impartial as all the Netbeans plug blogs here, which is a shame, as it gives the impression that java.net is a mere propaganda vehicule, despite the numerous interesting and valuable projects hosted there.
Perhaps the perception that Java is complicated is generated by people raving about this or that framework for this or that area (MVC, ORM, and so on). It might not be so complicated if people didn't keep on adding that extra complexity through generic frameworks that don't always fit. All that wonderful simplicity of earlier releases of Java, so much talked about by the wise folks with rose-tinted glasses, is still there. If you don't like the complicated stuff, leave it. A lot of the source-code sugar that gets seen in more "powerful" languages has large runtime overheads too.
Posted by: chris_e_brown on December 17, 2005 at 03:10 PM
-
You are confusing languages and frameworks-- you start out talking about frameworks, and then mix in Java as if it's a framework for you to compare. 20 years ago, people were talking about software specialization and now it's framework specialization. While something like RoR is very specialized and great at what it does-- it's just a framework for MVC on the web. Java will always have specialized frameworks but it's a language that the whole IT industry speaks-- it's not fading, just the frameworks people designed years ago (EJB 2, Struts, etc).
Posted by: jhook on December 17, 2005 at 03:28 PM
-
Hi Bruce,
I state the motivation behind my post at the very beginning of it: I am trying to clarify my position on Ruby on Rails because people have asked me to.
And I'll take this opportunity to also state a non-motivation: I am not trying to sell any book ;-)
--
Cedric
Posted by: cedric on December 17, 2005 at 06:38 PM
-
Lots of good points.
First, re. objective. I don't think I ever claim to be objective. In fact, I think that the premise of the post is that it's not at all black and white, and motivations always come into play. My motivations are clear. I've said that I think Java is great, and beginning to fade. All programming langagues will. I've also said that I believe that Ruby on Rails will be successful in the niche it serves.
Second, re. languages and frameworks, it's the same problem, on a different scale. But the popularity part of the contest often overrides all else. Popularity is paramount when you're talking about any language.
Third, re. motivations, I think we all align behind certain technologies. I've been very clear about what I support and why. My "radar" comment was not intended to bash anyone in particular, least of all Cedric (who is always well-spoken, and also very clear.) I just think it's damaging to promote popular, but not great, technologies. EJB 2x was a prime example. I think XML everywhere and many flavors of annotation use also fall into that camp.
Posted by: batate on December 17, 2005 at 08:07 PM
-
Bruce, can you provide your thoughts on EJB3 and JBoss Seam as it relates to RoR's ActiveRecord and Controller? IMHO, it's a good example of a post-RoR solution for Java--
Posted by: jhook on December 18, 2005 at 11:44 AM
-
Good questions. I'm not a fan of Seam, or of JSF. Too much configuration. As such, I don't think it's a Rails killer.
And while I like annotations for explicit code, I don't always like where EJB is taking them. The Spring team has annotions right, in my opinion.
Posted by: batate on December 18, 2005 at 01:23 PM
-
Bruce,Does Ruby/ROR have something analogous to reusable user interface components (ala JSF)?I know that many don't like GUI builders, but in business settings they have their place.
--JohnR
Posted by: johnreynolds on December 18, 2005 at 06:42 PM
-
I wouldn't say that JSF is a RoR killer or RoR is a JSF killer. Without a heavily configurable and customizeable framework, your web app will never heavily scale or be rock-solid. You'll need to perform heavy code rewrites without major abstractions in place.
Even so, if you're just trying to get an app up to judge user feedback, you don't want to have to go through all the setup necessary to use JSF. Unfortunately for RoR, there are plenty of quick-and-dirty Java-based frameworks out there, but I'm not familiar with too many industrial-strength Ruby frameworks - admittedly, I'm not at all a part of the Ruby community, so you may be able to correct me.
In short, JSF and RoR are for very different purposes, so I don't see one killing the other
Posted by: heaththegreat on December 19, 2005 at 06:35 AM
-
John, good question. I'm by no means a JSF expert, and I'm diving into Rails with persistence first, but I'll share what I know. Ruby on Rails has a few different kinds of packaging for components, but I don't think they follow the JSF model. And I'm pretty sure that no one is really thinking of a builder...the Rails way is to stay as close to HTML as possible, to get more milage out of designers. Rails was developed at a UI design shop, so the design of the view/model separation is very nice.
You can package together view/controller/model logic for business features in a component. I've seen a tree component done in this way.
You can package together a subsection of a view in a construct called a partial. A partial can be rendered and managed like other Rails views.
You can use AJAX to change the contents of a partial on the fly.
You can encapsulate certain style and layout elements with layouts.
You can build helpers that drop in in-line HTML or Ruby code, and you can pass the helpers arbitrary parameters. I've seen many widgets packaged up in this way.
But Rails has nowhere near the depth of Java frameworks like JSF or Tapestry. It's just been my experience that Rails does everything that I need it to do for most projects, and it's easy to extend when it comes up short. In particular on the UI support, the AJAX stuff is incredibly easy to use.
The big limitations I see on the UI side are things like localization (strange for a framework designed in Denmark based on a language designed in Japan...) Also, I'd like to be able to do richer ORM for those insurance applications with a big, fixed domain model where mapping to rails would be more of a pain. I'm experimenting with a Ruby mapper called OG for this space...it should plug into Rails nicely.
I tend to focus on lightweight enterprise development (transforming pretty bloated implementations and architectures). But I do have a class of applications that Rails can't touch, and I usually push Spring/Hibernate, iBATIS or JDO/Tapistry or Spring WebMVC. I'd guess that next year, my business will be at least 2-1 in favor of Ruby on Rails.
Posted by: batate on December 19, 2005 at 06:38 AM
-
Since when Ruby and Ruby on Rails are considered popular ?
Popular according to what ?
> Popular framework + great framework == successful programmer
Now, that's a dumb statement.
So, your books are selling well these days ...
Posted by: bonefry on December 19, 2005 at 06:59 AM
-
You've got a surplus http header on that Fan Syndrome link - I clicked on it in Firefox and it took me to microsoft.com, which was surprising...
Posted by: robertotyley on December 19, 2005 at 07:12 AM
-
Bruce, thanks for being a sport about the comments-- what I was trying to figure out was why Java doesn't have the potential, as a language, to produce RoR-like efficiency from both a hand-coded and IDE standpoint? JBoss has been generating presentation material on Seam and it's very hard to deny the productivity allowed, especially when you attack the domain from the language instead of the db schema. Just as RoR has scripts to enable rapid setup, IDEs/Ant provide the same capabilities-- hibernate has for quite some time with generating models from your schema. Does it really just come down to the fact that Ruby is a dynamic language?
Posted by: jhook on December 19, 2005 at 07:19 AM
-
bonefry, to each his own. I have to laugh when I hear that I'm selling an obscene number of books by courting controversy. Most peope throwing around the "Sold any books lately?" comment don't have a clue about this business. I've said it before, but you'd make more money per hour flipping burgers. And no, that's not a stretch.Writing books has to be more about the love and the passion of the writing. Ten years ago, maybe you could do well selling Java books. Now, there may be 5 or 10 books total in the whole programming space that could reasonably support an author. Most of us write for other reasons. We have to have a passion for it.
Re. the equation, most have been able to read between the lines, but I'll spell it out for you. Popular or great alone are not good enough. It takes popular plus great to maximize your chance for success.
Re. popularity of Rails, there are all kinds of metrics that go to the steepness of the curve. Number of downloads (google gems download statistics, Rails is near 200K), number of books signed (there will be over 7 Rails books by the end of next year), the number of visionaries using the framework, number of customers willing to pay for Rails apps or services, number of customers sending project teams to classes, and many others. It's not pervasive yet, but the curve is steep enough that I can safely deduce that it will be popular. Read Crossing the Chasm.
Posted by: batate on December 19, 2005 at 08:12 AM
-
jhook, no problem. There have been a whole lot of posts about the secret sauce behind Rails. I think most people agree about the following:
- The Ruby language.
- Metaprogramming.
- Approachability.
- Convention over configuration.
- Domain specific language for mapping.
- Integration.
- Extensibility.
I won't rehash all of it here. I do think that you could do something cool in Java that gets closer than the stuff out there right now. Eitan Suez is working on a naked objects-like framework that's very good at building rich clients, with everything (schema, mapping, ui, controllers) inferred from the domain model plus metadata. But in my opinion, Java's just not the right language for solving that kind of problem. Ruby's metaprogramming capabilities is simply much stronger.
I think that other frameworks may challenge Rails, but I'd guess that the challenge will come from a more radical foundation, like a continuation-based appraoch, or a naked-objects based approach. I'm rambling, but thanks again for your thoughts.
I'll probably wind up closing down this blog soon, because these kinds of comments are probably not as interesting to the Java community.
Posted by: batate on December 19, 2005 at 08:21 AM
-
It looks like that the Ruby people really want to get some of the java guys across, I wonder if they preach so strongly to Perl, Php, Pyton, Cobol, 'c', c#, etc... anyway.
I finally had a look at the Ruby site, it seems to be back at the beginning of java, look ! I can create a window with three lines of code ! (just main and a new JFrame)
I can create a pdf with few lines of code, yeah, great, can do that too..
Can redefine standard classes... Now, this is interesting. So, let's say that some nutter had redefined some standard class and I am using it, am I gong to be happy about it ? (But maybe I misunderstood it)
Oh, yes, testing, but we are all testing anyway, so what is the difference ?
Too much hype, really too much, I feel like a customer being yelled by a salesman, and the salesman doesn't even know what is wrong with his product... there must be something wrong with Ruby, or not ?
Posted by: dbolla on December 19, 2005 at 09:46 AM
-
Bruce,
don't get me wrong, I like Ruby, and I am using it alot for scripting jobs.
But again, a popular language (and framework) is what you may call, a mainstream language.
There aren't too many companies using Ruby, and there aren't too many Ruby projects on SourceFourge, etc ...
Surrely it is winning mind-share, but then again, it is not there yet.
So it is kind of a premature statement that Ruby and Rails are popular.
Not according to my understanding of the term.
And I really dislike that in your book you completely ignore other good languages like Python. I am sorry if I offended you, but it sounds to me like you are ridding the hype wave arround Rails. And for what other reason than to sell more books, considering you are a smart individual that couldn't ignore Python in a book that discusses Java alternatives (without good reason, that is).
Posted by: bonefry on December 19, 2005 at 02:35 PM
-
dbolla wrote:
'Can redefine standard classes... Now, this is interesting. So, let's say that some nutter had redefined some standard class and I am using it, am I gong to be happy about it ? (But maybe I misunderstood it)'
And that can happen in dynamic languages. Ive written Python plugins for an app where it redefines some of the core classes methods. Its quick and dirty and in hindsight I don't recommend it. If you need the flexibility of swapping pieces do it in the design not at runtime. Throw a malicious programmer in the mix and your capability to suffer will be greatly expanded. Mutation at will is not virtuous.
leouser
Posted by: leouser on December 19, 2005 at 02:43 PM
-
Bruce,
I like your technical breakdown, but I think you've left out the "marketing" side of the equation. I've posted more at
my blog site. Overall, I think the "wow factor" is what really makes a framework sizzle. The 15 minute rails video showing how 58 lines of code can make a full functional blog application set in motion the adoption of this new framework...
Thanks,
Ryan Ripley
Posted by: ryanripley on December 19, 2005 at 06:17 PM
-
Actually, I like Python, and Lisp, and Smalltalk. And say so in the book. Any would serve well. I think that all are missing a catalyst, and I see a potential catalyst in Rails. And I make the point clearly in my book.
Surely you can see that Ruby is having more success than any of the other dynamic alternatives, and by a significant margin. And you'll make more in a month doing whatever you do than I will make writing for three. I repeat, it's not about selling books.
Re. the marketing angle, I absolutely agree, and this post is entirely about the marketing angle. It's not enough to be OS/2, or Betamax, You need to cary the market too.
Posted by: batate on December 19, 2005 at 07:58 PM
-
> Surely you can see that Ruby is having more success than any of the other dynamic alternatives, and by a significant margin
No. Surely the exact opposite is the case.
Perl, PHP and Python are all bigger than Ruby by an order of magnitude (though not in Japan).
Not only that, but they are getting bigger faster than Ruby is. Perl in particular is interesting, since Ruby is a Perl derivative. Surely the (never ending) impending Perl 6 release (now with OO!) has a 'chilling effect' on the uptake of Ruby? And doesn't that mean that the situation is like unto Microsoft vs anyone else, where Microsoft can kill off competition simply by announcing vapourware? (Hint: Ruby is not MS in this metaphor)
As for Rails, which is for web development, surely you need to compare Rails not to Java, but PHP?
I think it is mean and nasty that people question your integrity... until I think about what you're doing... going onto a Java site and posting about how great some other language is and how Java is doomed. And then surely, what other response should we expect?
Putting this in the context of Cedric's post... it would be like a someone going into the Republican convention, grabbing a megaphone and starting to yell about how great Ralph Nader is.*
The phrase 'incitement to riot' springs to mind. As does Johnny Storm's quote from Fantastic Four - "Flame On" :D
*Except that Nader actually has a small/miniscule chance of succeeding, whereas the scale of Ruby indicates it would get 0% at the polling booth - (except in Japan of course... but after the Hello Kitty craze... well... the less said about that the better)
Posted by: rickcarson on December 20, 2005 at 12:25 AM
-
Ruby just seems freakin' hard. I prefer frameworks that don't require a CS degree for other programmers to start.
Posted by: smartinumcp on December 20, 2005 at 02:29 AM
-
the way RoR is hyped these days reminds me a LOT of the way PHP was hyped a few years ago, as the end all solution to web development.It would instantly KILL Java and everything to do with it, nuke Perl, destroy CGI.Guess what, they're all still there and PHP is still limited large to hobby sites and prototyping where it belongs.
The whole "Java is dead" (or in this case, terminal) is very old, it's been repeated time and again over the last decade.
But we must be careful because if we say it often enough (and especially respected authors like Bruce) we may end up with a self-fullfilling prophesy and indeed see Java fade away because we ourselves will start to believe it and abandon Java in favour of those other tools which were supposed to be dead like Cobol and C.
I do indeed see companies abandoning Java, but they're NOT moving towards new technologies. They're abandoning Java for the old technologies Java was introduced to replace. They're going back to procedural languages in traditional client/server environments with maybe a very thin web layer for some reporting written in Perl or CGI.They're doing it because (in part) of the constant drums of doom looming over the Java platform, drums which meet no counter from inside the community but rather are reinforced by answering drums from people like Bruce.
From next year I'll no longer be using Java myself, at least professionally. The last Java project in the company I work is being abandoned in favour of Progress. Yes, Java is dead, long live the corpses of dead languages.
Posted by: jwenting on December 20, 2005 at 06:42 AM
-
> No. Surely the exact opposite is the case. Perl, PHP and Python are all bigger than Ruby by an order of magnitude (though not in Japan). Not only that, but they are getting bigger faster than Ruby is.
Actually, I think you should recheck your growth curve. This blog actually says that Rails doesn't have critical mass yet. I'm not sure about PHP, though you made a compelling argument that Ruby/Python/Perl don't occupy the same space.
> going onto a Java site and posting about how great some other language is and how Java is doomed.
No language dominates forever. History tells us that about 10 years is right. Beyond Java doesn't bash Java, and I didn't bash it here either.
And your remarks about integrity tell me all I need to know. This is degenerating into a flame war, and I don't have time for it. I'm shutting the thread down.
Posted by: batate on December 20, 2005 at 06:55 AM
|