Fog Creek Software
Discussion Board




CFMX flouts Joel's "single worst strat. mistake"?

Per his earlier article:
http://www.joelonsoftware.com/articles/fog0000000069.html

Joel says, "the single worst strategic mistake that any software company can make: ... rewrite the code from scratch."

However, Macromedia rewrote ColdFusion Server (from C++ to Java) between version 5 and MX (the current one). It doesn't seem to have sunk the company, nor the product.

Thoughts?

(And let's please avoid the "ColdFusion does/doesn't suck" debate; that's off-topic.)

Joe Grossberg
Thursday, July 17, 2003

Um... This doesn't seem as much of a re-write as a strategic decision to move to a more widely accepted platform. Joel talked about the same thing when he wanted to move CityDesk from VB or whatever to .Net.

And it's not like they're flouting joel's axiom, who says they even know it exists?

www.marktaw.com
Thursday, July 17, 2003

And Cold Fusion isn't Macromedia's flagship product. They had other things to sell while CFMX was being built.

Chris Tavares
Thursday, July 17, 2003

Cold Fusion has a long history of rewriting from scratch. Early versions were written in MFC. Later versions were rewritten in generic C++ for Unix support. Most recently, CFMX (version 6) was entirely rewritten in Java. They had to retain a compatibility mode because many Cold Fusion web sites relied on specific details of the HTML output (such as whitespace side effects). Few of these rewrites seemed to add much value for users.

runtime
Thursday, July 17, 2003

Let me clarify some things:

marktaw - In hindsight, "flouts" was probably the wrong word. How about "contradicts"? In any case, the time lag between CF 5 and CFMX wasn't big, they were able to add features instead of falling behind the competition, etc. In other words, the result was the opposite of what Joel's rule would predict.

Chris - That is true, but I didn't get the impression that it was the crux of Joel's argument. I'm putting words in his mouth, but to me it sounded more like "Rewriting your entire codebase causes more problems than it solves" than the specific gripe that "Rewriting your entire codebase means that you lose revenue" (which Netscape got from where, exactly?).

runtime - I can't speak for the first rewrite, but from what I hear, the Java/MX one is faster (wow, that must have been some awful C++) and it allows you to "plug in" a huge array of open-source Java tools.

Joe Grossberg
Thursday, July 17, 2003

I'd be interested to learn the internals of what went on. FWIW, my impression of Cold Fusion has always been that it is a highly structured, well-documented language. Perhaps their internal processes were disciplined enough that they had a strong set of requirements to work from?

Also, perhaps instead of a "rewrite" they did a thorough refactoring in Java? Went through module by module porting functionality?

Next thought - is C++ -> Java such a huge jump? Wouldn't it be fair to say that to some degree Java is like C++ without the sharp edges?

These may or may not be true, and would only serve to assuage the idea that yes, this appears to be an exception to the rule.

Philo
Thursday, July 17, 2003

my impression of CF is... "people use it?" I've never heard of someone using it. I'm not even sure of what it does... it's some sort of app server? or scripting language?

A lot of the guts may still be c++, with some of the more high level stuff in java... but i really have no clue.

www.marktaw.com
Thursday, July 17, 2003

Maybe I'm not entirely correct, but from what I've read I understood that the latest ColdFusion is more or less just a set of JSP tag libraries which can run on any J2EE compliant (or at least supporting JSP) server. If so, then the amount of code necessary must have been significantly reduced. Here is an example of a site using ColdFusion: http://www.economist.com/

Alexander Chalucov (www.alexlechuck.com)
Thursday, July 17, 2003

Cold Fusion isn't bad, at least on Windows.
It's a pretty capable server-side language specifically designed for web site building and templating.

It enables some nice abstractions for doing queries from a database, for example, so you can populate and manipulate HTML tables very easily. Much tidier than equivalent ASP or PHP code, but I suppose it's a matter of taste.

Edoc
Thursday, July 17, 2003

"my impression of CF is... 'people use it?'"
Yes, lots of people use it. What a ridiculous troll that was. Do you think the official CF forums ( http://webforums.macromedia.com/coldfusion/ ) have 100,000 posts because people are lonely?

"I'm not even sure of what it does... it's some sort of app server? or scripting language?"
It's both (and used to be an IDE too). Is it that hard to STFW? :)

I mean go to http://www.coldfusion.com or http://www.macromedia.com and click on "ColdFusion".

Joe Grossberg
Thursday, July 17, 2003

I've worked with CF for some time. Back in 1999/2000. Hated it so much that everytime I see and ad for CFMX on the web I almost hide under the table

RP
Thursday, July 17, 2003

"I've worked with CF for some time. Back in 1999/2000. Hated it so much that everytime I see and ad for CFMX on the web I almost hide under the table"

Yeah, I used a Mac back in 1999/2000. That OS 9 sucked. They didn't even have a command line! Now everytime I see an ad for OS X/Jaguar on the web, I almost hide under the table!

Do you realize how stupid that sounds?

Seriously, I said "Let's please avoid the "ColdFusion does/doesn't suck" debate" for a reason. It just makes you sound like an uninformed Slashdotter.

Joe Grossberg
Thursday, July 17, 2003

"Cold Fusion" -- what a dumb name.

"Active Server Pages" -- Just what it says it is.

Active = Dynamic Content
Server = Web Server
Pages = Web Pages

BTW, Cold Fusion sucks...

FredSavage
Thursday, July 17, 2003

Or wait, In "Cold Fusion" that is:

<CFSucks suckFactor="high">Cold Fusion</CFSucks>

FredSavage
Thursday, July 17, 2003

::try #2::

Or wait, In "Cold Fusion" that is:

<CFSucks suckFactor="high">Cold Fusion</CFSucks>

FredSavage
Thursday, July 17, 2003

Fred:

I suppose that "Fog Creek Software" sucks because it doesn't say anything about what kind of software Joel and co. produce?

Joe Grossberg
Thursday, July 17, 2003

As stated before the decision to rewrite in Java was for strategic reasons. In fact I would suspect that they didn't "rewrite" Cold Fusion Server. CFMX Server is basically JRun - i.e. the J2EE server Allaire bought in 1999 when they bought Live Software. Potentially they migrated JRun from C++ to Java which makes a lot of sense because a Java version of JRun can be run on any platform that has a JVM.

CFML, the markup-based scripting language commonly known as "Cold Fusion" is now essentially a set of tag libraries for JSP. CFML runs on top of CFMX server although I know that WebSphere, BEA and possibly some other J2EE vendors were going to support/ship with the CFML tags. Assuming they wrote the tag library in the standard way it could run on any J2EE server/web container although there may be licensing issues that restrict its installable base.

This all ties into Macromedias larger strartegy (although I'm not sure too many people are adopting it) of "Rich Internet Apps". Write the view in Flash and CFML, write the back-end in Java/J2EE. I heard Flash-remoting is quite cool (the are a couple of nice examples on http://www.cactuslab.com/ - play with the stuff chat/game box in the bottom right corner).

Given all those people who clamour for EXACT PIXEL PRECISION in their web apps (side question: can you name any web-based apps that REALLY need exact pixel precision), particularly those in the media industry it would seem a reasonable solution, except (1) many web designers seem to have cooled on Flash, (2) broadband adoption rates are possibly not high enough, (3) there may be a general disconnect between Flash shops and J2EE shops.

Macromedia's strategy seems even more interesting given announcements in the web browser world over the last month - no more Netscape (no talk about this here), no more free standalone IE - but I still think Flash-based content is too expensive/difficult to change relative to html + css.

Walter Rumsby
Thursday, July 17, 2003

I like Cold Fusion. I think it's best when you've already learned another scripting language, so you understand what it's doing for you (and what it's not doing for you).

IIRC, the code to render a table from a stored procedure is three tags.

Actually, ASP.Net reminds me a lot of Cold Fusion - when I started using it I definitely felt like the ASP.Net team took a lot of cues from CF.

Philo

Philo
Thursday, July 17, 2003

"no more free standalone IE"

Eh? Do you mean on the Mac?

Philo

Philo
Thursday, July 17, 2003

Philo:

No, he means this: http://news.com.com/2100-1032_3-1011859.html?tag=fd_top

Joe Grossberg
Thursday, July 17, 2003

It seems as though IE itself may be dead, integrated into some new thing in Longhorn. So Microsoft will have nothing significantly new on the browser front for more than 5 years by the time Longhorn comes out.

Brad Wilson (dotnetguy.techieswithcats.com)
Thursday, July 17, 2003

>Yes, lots of people use it. What a ridiculous troll that was.

Yeah, that's right it was a troll. Nothing serious about my post.

> It's both (and used to be an IDE too). Is it that hard to STFW? :)

And you think that somehow my impression that ColdFusion doesn't do anything and isn't used by anyone isn't valid? My point actually was that Cold Fusion's perception in the marketplace - at least from my point of view - is somewhat muddy. An app server, scripting language, and IDE, and you wonder why I don't know what it is.

But I guess you were too busy looking for trolls to figure that out. =)

(I'm not sure why I put the smiley, but you did, so I figure it must mean no hard feelings.)

www.marktaw.com
Thursday, July 17, 2003

ColdFusion is a nice language.  It makes developement very painless.  I can write something in ColdFusion in considerably less time than it takes to use old ASP.

To be fair, ColdFusion isn't the holy grail.  It isn't very easy to do code reuse.  Because of this, I wouldn't use it for a massive enterprise web application, but I prefer it for small to medium sized stuff.

I agree with Philo's comments about ASP.Net.  I haven't used ASP.Net much, but from what I've seen of the language, it seems to have gotten a few hints from CF.

With regard to ColdFusion being "rewritten", I don't think that was the case.  It seems to me that ColdFusion was in fact "ported" from C++ to Java.  Since CF server has to run on multiple platforms (and doesn't have to worry about GUI widgets looking ugly), this was a good strategic move for the company.

Myron Semack
Thursday, July 17, 2003

marktaw:

Yes, you got me to bite. I thought it was "out of character" given your other posts on this forum.

Joe Grossberg
Thursday, July 17, 2003

Actually it is easy to re-use code in Cold Fusion.  You can write your own tags or use cfc's in cfmx (cfc's are like java classes, but with limitations since cold fusion isn't a typed language). My company has written an enterprise wide application using cold fusion. We wrote a pseudo-api using custom tags and that works wonderfully.

As for re-writing cfmx. As someone has said, it seems to work like it's a custom jsp tag library sitting on top of JRun (existing code). So it's probably a lot less code than the c++ version.

anon
Thursday, July 17, 2003

Custom tags, JSPs, ASPs.... they're all evil!

Velocity (Jakarta subproject) is winning me over more and more - fast, simple, difficult to make messy.

Walter Rumsby
Friday, July 18, 2003

I dunno about CF sucking but the guy who maintains our client's site, which is in CF, hates it.

In particular, he claims that there is no way to nest a CFLOOP inside another, disallowing things like displaying a report of orders grouped by client and then by location. Is this right?

busan
Friday, July 18, 2003

You know, you're absolutely right.  Rewriting code seems like a really good business strategy, and Joel must be full of it.  I mean, seriously, the company he was talking about is probably thriving.

What?  That company died a painful death and finally had its lifelines cut this week?

Oh.

Whapow!
Friday, July 18, 2003

Does anyone actually *use* ColdFusion?

pb
Friday, July 18, 2003

Whapow: of course, you are talking about Netscape rewriting their browser. This discussion is about Macromedia (and Allaire) rewriting Cold Fusion. Macromedia is profitable and doing pretty well financially.

runtime
Friday, July 18, 2003

Even if Cold Fusion did rewrite their app from scratch (there appears to be some debate over this), that doesn't necessarily dispute Joel's claim.  He said that a rewrite is a bad business decision.  He never said that it could never work and would always bring ruin upon your company.  Companies make bad business decisions all the time that don't ruin them.  That doesn't mean the decisions aren't bad.

Regardless, Joel has clearly stated that there are valid reasons for rewriting, just that you really do need a good reason to justify the risk.

Mike McNertney
Friday, July 18, 2003

I use CF a fair bit.  It was what they had when I started, and it's fairly nice.  Of course we are on a version prior to MX, but it's fairly stable and runs fast enough for what we do.  The only issues I ever had were mostly alleviated by using the "Fusebox" design methodology.

And busan, you can nest loops (at least in version 4.5 or later, never seen anything earlier), but you don't need to.  If you use the cfoutput tag and set its source as a query you can group the results fairly easily using the group option.

As far as wheter it was a mistake or not, it probably wasn't for market reasons.  CF has always been known as being easy to use and fairly powerful, but it was getting its lunch eaten by j2ee on the high end and php/asp on the lower end.  Basically, they had to do something or die.

Steve Barbour
Friday, July 18, 2003

joe: ok. I think if you read it in the "tone of voice" i wrote it in it's very much in character... but this is the internet and tone of voice doesn't carry.

The lesson here seems to be: Some people will like any product, and some people won't - and their reasoning will be arbitray (q.v. Abraham Lincoln). Some people will re-write an app and be successful at it, and other people won't.

Like I said, with JSP being as popular as it seems to be, changing from C++ to Java was probably a strategic decision, designed to attract a 2nd look from people who are already doing JSP. I doubt it's a complete rebuild, it's probably just a facelift.

Re: Code Reuse... I have a hard time believing a MacroMedia product wouldn't support code reuse... Have you seen Dreamweaver? You can maintain all sorts of code libraries in DW, and DW itself is expandable various plugins from MM's website that are written in JavaScript, and anyone can contribute one. (pun not intended)

Then again, CFML always felt like MacroMedia's failed attempt to enter the server app market. MM is a publicly traded company, so someone motivated enough (certainly not me... I didn't even STFW before) could call them up and ask how good CFMX sales were.

* A friend of mine told me that Abraham Lincoln once said "A quarter of the people will like you for the right reasons, a quarter will like you for the wrong reasons. A quarter will dislike you for the wrong reasons, and a quarter will dislike you for the right reasons."

www.marktaw.com
Friday, July 18, 2003

busan:

I think you're friend is mistaken.  You can nest CFLOOPs.  Now, maybe he's using a really old version of CF...

http://www.cffaq.com/faq.cfm?f=3

Read item #3.

I use nested loops all the time.  If a language didn't support nested loops, it would be rather worthless.

Myron Semack
Friday, July 18, 2003

marktaw, Macromedia aquired Cold Fusion from Allaire fairly recently, so it can't have felt like their failed attempt for too long.

Really, Cold Fusion is not bad, and until recently was probably one of the better tools for putting up a database driven web site.

Steve Barbour
Friday, July 18, 2003

I don't think rewriting it or not has much effect on the real business problems of CF.  At the low end, they lose on price (competing with the ASP grab bag, i.e. IIS and similar products that may in theory cost money but in actuality are given away free with every box of breakfast cereal).  At the high end, they lose on vendor lock-in (against the JSP option, at least).

Then again, if they ditch the occasional quirky-and-bad cruft, and focus more on the interests of the high end than they have in the past, it could work for them.  Whether in the "despite its being a wrong decision" sense or not.  Can't say too much about this, being in the midst of a rewrite project myself. ;)

Mikayla
Friday, July 18, 2003

busan

confirming you can nest loops as much as you want.  It aint fast but it works at least since v3.

tekumse
Saturday, July 19, 2003

busan:

If the guy hates the language he uses, and still doesn't know basic features (like nesting loops), maybe it's time you speak to him about his attitude and start looking for someone else.

There are enthusiastic, smart, hard-working, knowledgeable people looking for web development work.

Joe Grossberg
Tuesday, July 22, 2003

*  Recent Topics

*  Fog Creek Home