The ColdFusion product manager, Jason Delmore, dropped by and left a comment on "Adobe Wants You To Buy ColdFusion 8 Enterprise". In it, he points me to the more informative ColdFusion Product Matrix (PDF), and explains that many of the "limited" features are restricted not in terms of functionality, but in the number of simultaneous requests that can be made to them. Namely: one.
Unfortunately, that doesn't help his case. Here's why.
Fundamentally, their logic goes like this: If you've got a site that's busy enough to generate multiple simultaneous requests to some set of restricted features (like, say, PDF generation), then you need to "upgrade" to CF8 Enterprise. Most sites won't be that busy, won't need to upgrade, and will run on CF8 Standard happily ever after.
Sorry, but that doesn't fly.
First, let's point out the fact that if I'm a business BUYING one or more copies of ColdFusion, then I'm expecting SOME significant level of traffic, just like I'm not going to spend money hiring an employee unless I'm pretty sure there's going to be enough work for him or her to do. Otherwise, I'd use PHP for free, or maybe just a CF-hosting service (and hire a temp).
Further, if I'm buying a programming environment that advertises a certain set of features, then there's a good chance that I'm going to want to actually USE them at some point in time.
If both cases were false then I probably wouldn't be making the investment in that software, in the hardware needed to run it, and in the developers needed to effectively use them both.
The third point is that restricting access of many of those services to a single thread limits their functionality and usefulness--greatly. For example, I may want to use PDF generation, but if a single user can block all other similar requests... well, now I have a choice to make, don't I?
It's probably safe to use that nifty new feature... as long as I don't use it too much. Or use it in a popular section of the site, or use it to implement a site feature that will see heavy use.
PDF manipulation sounds cool. Perhaps I can use it to watermark purchased copies of my site's new ebook? But no, what if I get a lot of people ordering it? What if my site gets Slashdotted? Will I want to upgrade my servers? Can I AFFORD to upgrade my servers? No. No, better to just ignore it for now.
So, PDFs. Server-side printing. Presentation generation. FlashPaper. Structured reporting. Microsoft Exchange Server integration. Gateways. IM gateways. SMS gateways.
You can use those features, but just make sure you don't really USE those features. In his comment, Jason added, "There are tons of great new features in 8 and they can all be used from Standard."
Which is true. But keep an eye on the above chart and on the feature set that you and your fellow developers use. You can run a popular, heavily-trafficked site on Standard Edition. Just don't be too popular or too heavily-trafficked, or you may find that there's an Enterprise-level balloon note due in your immediate future.
All too true. I remember just seeing an RSS feed aggregator that was done by Raymond Camden where he spawned a boatload of threads to get and parse each feed. Guess that won't work in Standard Edition.
Posted by: James R. Taylor | August 03, 2007 at 01:00 AM
@James Taylor, CFTHREAD is an exception and is limited by 2, not 1.
Posted by: Todd Rafferty | August 03, 2007 at 05:26 AM
Wow, this blog has seriously degenerated into your endless bitching. I think that is a shame.
You argument is specious anyway. So, you are complaining that you can't use cfthread heavily on a highly trafficked page? Are you implying that you would actually have done this were it not for the limitation? If so, please don't ever program for me.
Much the same goes for the PDF generation. These are features that 1) have very limited niche purposes and 2) should never be overused whether on Standard or Enterprise.
But hey, don't let reason stop you from your apparently insatiable need to complain.
Posted by: Brian Rinaldi | August 03, 2007 at 07:35 AM
Todd: I think James was pointing out that Ray's code created a thread for each blog he was attempting to read. A two-thread limitation kills that method (assuming more than two).
Posted by: Michael Long | August 03, 2007 at 10:21 AM
Brian: First, I focus on the topics I believe need attention. If you're looking for the ten best uses of CFPARAM there are other sites.
Second, James brought up CFTHREAD, not me. But if your site has significant traffic and your system is not CPU bound then yes, you might well spawn multiple threads in order to improve request responsiveness (like issuing keep-alives to a session, page logging, etc.). Am I fired?
Third, they may be "niche" functions, but they're also functions that tend to take up a lot more time that a "normal" page request, which makes the only-one-at-a-time issue even more problematic.
As to "should never be overused"... well, a site does what it needs to do. The watermarking example I just gave was off the top of my head, but I just got a book from a site that did exactly that. Maybe they were using PHP.
Thanks for the comments.
Posted by: Michael Long | August 03, 2007 at 10:38 AM
Personally, I'd rather have them not be present in SE at all as opposed to being there but not being dependable.
Posted by: Duncan McClintock | August 03, 2007 at 11:53 AM
@Michael Response #1 and Probably Duncan's response:
Regardless of what James was pointing out, CFTHREAD won't BOMB... It'll just queue the additional requests. It's not completely crippled and queuing is not completely worthless.
Posted by: Todd Rafferty | August 06, 2007 at 07:56 AM