Stefano Mazzocchi wrote:

<snip/>
If you ask me, the current infatuation with Ruby on Rails and friends, while understanding and to the point (the need to avoid XML pushups, so true), will fail dramatically short in scale to complex systems. Just like M$ Word is great to write one/two pages and it fails miserably to help you with your thesis, something like rails is awesome for your blog or single-handed ecommerce web site, it would kill you no less than PHP with a massively complex web site.

<snip/>
How do you feel about this?
I have a couple thoughts on this.  Actually it's more of a brain dump. ;)

1. (Like Berin) I am admittedly infatuated with Rails. This may be the infatuation speaking, but the "Rails doesn't scale" smells like FUD to me. I'm still infatuated with Cocoon, too, BTW. I've been building Struts apps for the past 6 months and I am constantly cursing JSP. JSTL, taglibs, etc. (see #2B, below). I can't wait to /stop/ building Struts apps, but my dislike for Struts may pollute my opinion of JSF when the company I work for eventually decides to move in that direction.

1A. Stuff I've done in Rails I have liked, but was always sort of wishing for more "Cocoonish" -- Flowscript, Sitemaps, etc. Ruby has native continuations, so there might still be hope. One thing I was trying to do that's very simple in Cocoon (or HTTPD for that matter) is something like this:

<map:match pattern="docs/**/*">
 <map:generate src="xml/{1}/{2}.xml"/>
 <!-- whatever else -->
 <map:serialize />
</map:match>

In Rails, you have to setup some sort of "TemplateController", manually inspect the request path, parse it out, and then send the file on the local disk as text/html. I think part of this stems from the fact that Rails is more of a webapp framework than a publishing framework (where obviously the opposite was true for Cocoon for quite a while). In this sense, Rails still has some maturing to do. Likewise, Rails' ActiveRecord covers probably 80% of the use cases for building webapps.

2. In the 4-or-so years I've been involved with the community, I've *never* built a production website with Cocoon, and I highly doubt I ever will. It hasn't caught on here in the states as much as Struts has, or JSF could. I was holding out hope for a Cocoon type job, but as soon as I graduated University and needed a job, all of the J2EE jobs were Struts-based, and Spring is *just* starting emerge as something companies are investing in. See #4, below for more thoughts.

2B) I've seen some stuff at work where I have said, "Cocoon does this," but Struts didn't, so it was implemented (poorly) in Struts, causing all sorts of headaches.

2C) The only reason I have a job however, is because of all the exposure to *other* J2EE stuff that Cocoon got me into. Maybe I should have moved to Belgium ;)

3. More functionality is moving to the browser, but the apps will still reside on servers. I can't see that moving away. I always knew server-side XSLT was sort of a stopgap until browsers could do it reliably.

4. I have to agree with Berin's point about convention and simplification over configuration. With things like Spring, and books like _Better, Faster, Lighter Java_ (and XP themes in general), there's a move to make things easier to understand, maintain, and be concise at the same time. IMO Rails hits these points pretty nicely, not only because Ruby is a concise, elegant language, but you also get a lot of "Good practices" for free. You get the separation between development, test, and production environments/databases. You get a lot of unit and functional testing for free when you generate your code. You can even get webapp controller tests for free, which is more than I can say about Cocoon. And the free stuff goes a long way.

In conclusion, I don't think Cocoon "The Idea" is obsolete, but perhaps Cocoon "The Implementation" is. Here's where I put on my "I have a bunch of good ideas but none of the skill to implement them" hat:

- Simplify Cocoon. What's the bare minimum we can get away with? Not only functionality, but also actual amount of code? Ugo's work with Spring and Butterfly probably is a good starting point.

- Borrowing another buzzword, how can we move Cocoon "The Idea" into the Web 2.0 era? I really hated to invoke it, but I think it's important. I'm not necessarily talking about how we can make Cocoon serve "Web 2.0" apps, but more along the ideas of Better, Faster, Lighter. Maybe I'm mixing my ideas of Web 2.0 and "better Java development practices" here.

----
Tony, who feels like he dumped a lot of stuff from his brain because of Stefano's RT.

Reply via email to