I've been using ColdFusion since 2001, back when I worked at Macromedia and my team of Java and C++ developers first encountered CFML in the form of very early builds of what went on to become CFMX (6.0). We were pretty skeptical at first.
(via Vince Bonfanti's blog)
Vince Bonfanti just announced New Atlanta's "new ColdFusion-to-.NET and ColdFusion-to-Java migration services." and goes on to say "As experts in ColdFusion, ASP.NET, and Java technologies, New Atlanta is uniquely positioned to assist organizations that want to migrate their ColdFusion applications to either the ASP.NET or Java EE web application platforms."
Vince has said in the past that he sees BlueDragon.NET as a migration path from CFML to .NET so this isn't entirely surprising. His blog now has a sidebar that consolidates links to posts he's made in the past three years on this topic (the posts span July 2005 to January 2008 so they're not exactly "news").
It's clear that Vince and New Atlanta are going in a very different direction to Open BlueDragon. Vince is not involved with OpenBD and it is TagServlet, not New Atlanta, who are behind the open source project.
ColdFusion continues to thrive under Adobe's leadership - the hints around Centaur suggest that it will be a mind-blowing release. Open BlueDragon is available now for download - in several ready-2-run formats, as a simple WAR or even in source code form for you to use for free in pretty much any way you want. And at Scotch on the Rocks, Railo announced their partnership with Red Hat to move the Railo CFML engine to jboss.org as an open source project which should extend the reach of CFML into the Java community.
It's never been a better time to be a CF developer - more choices, more advances.
Don't forget that cf.Objective() 2008 is the first place to get your hands on Open BlueDragon where Vince will launch the project to the public and a number of the OpenBD Steering Committee members will be present to answer your questions.
We've worked hard to make cf.Objective() 2008 a "must see" event. We have a number of firsts this year that we're very proud of:
- The public release of Open BlueDragon on May 3rd!
- The public unveiling - and Alpha - of Model-Glue 3: Gesture!
- The public unveiling of Mate, the new Flex framework from AsFusion!
- The first conference to feature the latest rising star in the frameworks world: ColdBox - with an introductory session and a two hour, hands-on advanced workshop!
- The first public information about Swiz, the new Flex framework from Chris Scott of ColdSpring fame!
- Speaking of Chris Scott, we're the first conference to feature a two-hour, hands-on workshop for ColdSpring!
- We're also the first conference to feature a two-hour, hands-on workshop on agile development for ColdFusion developers by the leading light in automated process & testing, John Paul Ashenfelter!
If you're a Mach-II user - or thinking of using Mach-II - you might also be interested in the pre-conference classes.
The release date for BlueDragon Open Source is May 3rd at cf.Objective(). Register for cf.Objective() and be one of the first to see the project "in the flesh"! Come along to the BOF and ask Vince all about the whys and wherefores of the project and New Atlanta's decision to go open source (assuming Dan's interview doesn't answer your questions).
Alan Williamson has also posted about the steering committee and the process for getting involved.
New Atlanta are working hard to make an initial source code drop available, especially for cf.Objective(), so that Vince can show how to download, install, build and configure the project - and field questions about New Atlanta's thinking behind open sourcing the J2EE edition of BlueDragon, as well as discussing with the community how the project can move forward, how the license works, how the steering committee operates and so on.
If you're excited about New Atlanta's recent announcement - or even just curious about how such a large open source project might work for the CF community - be sure to attend this Birds of a Feather session on Saturday evening at 7:30pm. The schedule shows it running an hour but I expect this will need more than an hour so I currently plan to keep the 8:30pm slot open immediately afterward to allow for an extended Q&A session.
Vince points folks to the new Open Source forum on the New Atlanta website which has a lot of good information about the details of dual licensing, the expected process for contributions and so on.
I strongly encourage folks to read Vince's post and then read all the threads in the forum.
What I like about Vista:
Having beaten SQL Server Express into submission after much pain, I figured I'd talk about my experiences getting BlueDragon 7 .NET installed and running.
First off, I knew that IIS was not enabled by default but poking around in what I thought were the obvious places didn't give me any clues about how to enable it. Google quickly directed me to a tech note (on MSDN or Microsoft's support site) that showed me the way. The more I work with Vista, the less I like the new Control Panel layout compared to XP. Anyway, I enabled IIS per the instructions and verified that I could access it locally. A quick tweak to the firewall allowed me to access it from OS X as well. All good so far and not too painful.
Now that IIS 7 was running, I figured BD7.NET would be a simple install. The install went fairly smoothly but IIS7 refused to serve any pages up afterward. The friendly error message pointed at a problem with applicationHost.config so I tracked that file down (another Google search) but couldn't figure out how to open it (because of security restrictions). Another Google search revealed that I needed to locate Notepad in the Start Menu and right-click Run As Administrator and then Open... and navigate back to the configuration file. By pure guesswork, I changed:
Google turned up one reference to this, on New Atlanta's self-help mailing list. Someone called Brian had hit the exact same error back in July but no one had replied. Darn!
So I emailed New Atlanta's support and today I got a response from Lori who confirmed that the applicationHost.config settings were correct (with path="") but asked me to check a couple of things... Number one was whether I had installed ASP.NET. Hmm, I thought that was built into IIS7 so it hadn't occurred to me I'd need to set that up independently. It also hadn't occurred to me that BD7.NET would require ASP.NET but that's another story.
Lori had attached a screen shot of the same Windows program features dialog that I'd used to enable IIS7 but she showed the options I needed to check to enable ASP.NET.
Things still didn't work right but now I could figure out the solution on my own: since I'd installed BD7.NET before ASP.NET, applicationHost.config wasn't what BD expected so all I had to do was merge the BlueDragon handlers into the ASP.NET handlers. Yes, that worked as expected!
IIS7 works. BlueDragon works. I can access both from Vista and from OS X. I configured a MS SQL Server data source (to connect to the SQL Server Express instance) and that worked too! Yay!
Then I tried to configure a MySQL data source and got "Could not load file or assembly 'MySql.Data' or one of its dependencies." *sigh*
So I downloaded the Connect/NET 5.0 ADO-based driver and installed that and rebooted. Still the same error message.
Back to Google I guess...
The next talk I attended was also about testing: Thomas Burleson of Universal Mind, talking about continuous testing with Flex and ColdFusion. He was plagued with technical problems (the A/V system failed in Ballroom GH for several speakers) and didn't get through all of his presentation, unfortunately. The big takeaway for me was that Universal Mind have developed a Java application that keeps your source code (CFCs and I think AS3 classes too) in sync with your unit tests (assuming you use FlexUnit and cfcUnit). The Java app automatically generates new stub tests (that fail) for any new methods you create in your source code. Unfortunately, I didn't see a URL for this "Synchronizer" tool.
Next was Vince Bonfanti's keynote talk about BlueDragon. He surveyed the audience and found nearly half of those present were at their very first CFUNITED and a few people in the audience had never heard of BlueDragon. After a brief overview of New Atlanta, who are now ten years old, he talked about the three main innovations coming down the pike from New Atlanta over the next few years:
- IIS 7 integrated administration and request pipeline (Application.cfc) (2007)
- AJAX & Silverlight support (2007-2008)
- DLR integration (2008 onwards)
Vince also showed an early build of the integrated administration, which exposes BlueDragon admin functions directly into the IIS 7 control panel. That means that all of the IIS 7 administrative concepts (cascading settings, remote delegation, deployable application configuration through web.config files) will now be applicable to BlueDragon.
Bugs aside in these early builds, this level of integration is pretty impressive and I can see it being very appealing to people who are heavily invested in the Windows platform and IIS 7.
Vince went on to show a new tag - <cfupdatepanel> - which allows a portion of a CFML page to be executed remotely as part of an AJAX region. It's a different approach to the AJAX widgets in ColdFusion 8 and my initial impression was that ColdFusion 8's approach is more powerful and more flexible. Vince has since assured me that this is just the first step in AJAX support for BlueDragon so comparisons should wait for now.
The final demo in the keynote was a console application that compiled and executed CFML code by using the BlueDragon engine running on the DLR - Dynamic Language Runtime - that Microsoft recently announced. This is codenamed IronDragon (in the spirit of Microsoft's version of Python that runs on the DLR: IronPython). Since Silverlight implements the DLR, this opens up the possibility of using CFML on both the server (as today) and the client (in Silverlight). Given the appearance of Monolight - an implementation of Silverlight on top of Mono (the open source .NET runtime implementation) - this could be a very interesting development.
Some of their proprietary extensions are definitely interesting and useful (onMissingTemplate() for Application.cfc is probably what appeals most to me). However, they also seem to be driving their implementation of the language very much into "Java-Lite" territory with the addition of interfaces and abstract CFCs (and null support). A lot of Java and C++ developers don't seem to be able to figure out abstract classes properly so I really don't think that adding that sort of thing to ColdFusion is a step forward. I really think that the folks clamoring for "more OO" in ColdFusion are a very small minority (albeit very vocal!) and that such things don't address what the vast majority of ColdFusion developers really want from the product.
All that said, choices are good and the more ColdFusion engines out there, the more it validates the use of ColdFusion as a rapid application development system.
The first stumbling block is that BlueDragon does not support WEB-INF.cftags.component as the universal base class for all components. It's mentioned several times in the CFMX documentation so this is at best a compatibility issue that New Atlanta should document and at worst a bug they should fix. Workaround: change WEB-INF.cftags.component to any.
The second stumbling block I hit was that the pseudo-constructor of a derived CFC could not access variables set in the pseudo-constructor of the base CFC. New Atlanta just released a Hot Fix that fixes this bug. You'll need it to get Tartan running.
Then I tripped over <cfbreak/>. BlueDragon thinks that's an illegal tag. Add a space and it's happy: <cfbreak />.
I found the same problem with <cfrethrow/>. Changing it to <cfrethrow /> made BlueDragon happy.
Finally, BlueDragon does not allow derived CFCs to call private methods in the base CFC via super. Since private methods are accessible to derived CFCs (because CFML's private really means protected), this should definitely be valid. Workaround: change ServiceFactory.getServiceArgs() to be access="public".
At this point my sample application (for my frameworks talk) runs on BlueDragon in all seven variants.
Oh, and this exercise did highlight a bug in my code! My Tartan configuration file did not have a <parameters> tag around my DAO factory parameters which caused them to be ignored. This meant that my queries were being run with username="" password="". On CFMX, blank credentials are ignored and the values in the data source (in the CF Admin) are used. On BlueDragon, the blank credentials are used (so the queries failed).
Online support can be purchased for $995, premium support (which adds telephone support, a faster response time and an additional named support contact) can be purchased for $4,995 per year with an option for 24/7 pager support at an extra $2,495 per year.
Now he's moved on to a more CFC-intensive application and he's having problems with BlueDragon. I'm on the BlueDragon mailing list and there are definitely a lot of small inconsistencies between ColdFusion MX and BlueDragon. New Atlanta are very responsive, as you'd expect from a small company, and they issue fixes and patches swiftly to try to make their product compatible with ColdFusion MX. I have to admit that I'm very impressed with their commitment to compatibility - I think that should be a number one goal for any third-party implementor. New Atlanta have worked incredibly hard in this area and they should be applauded for that.
Clearly they have some way to go for CFMX 6.1 compatibility, even beyond their extremely detailed compatibility guide. Soon Blackstone will be available will a whole new host of features to make ColdFusion developers even more productive and even more successful - and New Atlanta will be playing catch up again.
When CFMX came out, New Atlanta's CF5-compatible (almost) version of BlueDragon came under the microscope - when asked if they would support CFCs, they initially said no... and then they said that it would depend on what their customers wanted. Given the amount of customer research that goes into each release of ColdFusion, it shouldn't be a surprise that customers demanded BlueDragon should be compatible with CFMX - New Atlanta worked very hard to achieve a level of compatibility with CFMX.
Blackstone will start that process all over again, putting BlueDragon a couple of years behind the curve again.
Don't get me wrong: competition is a very good thing but I have a background in international standards where compatibility is king. An alternative isn't 'free' if it isn't compatible...
New Atlanta are keen to emphasize unique features in their product, such as source-less deployment and J2EE WAR file deployment (both of which have been discussed publicly by Ben Forta as part of the forthcoming "Blackstone" ColdFusion MX release) - and unique tags such as
You can also learn more about "Blackstone" at CFUN because Ben Forta is giving the keynote on Sunday and will be previewing more cool stuff planned for the next release of ColdFusion MX.
Technically speaking, BlueDragon for .NET will be a ".NET Framework assembly" (much like BlueDragon/J2EE is available as a J2EE WAR/EAR) and will therefore have full native access to everything .NET provides.
This will give New Atlanta four different editions of BlueDragon:
- Server - standalone, free, for Windows, Mac OS X, Linux.
- Server JX - standalone, $999, for Windows, Mac OS X, Solaris, Linux.
- J2EE - from $2499 (1-CPU) for any J2EE application server.
- .NET - from $2499 (1-CPU) for any .NET Framework server.
Vince says "With the beta3 release, BlueDragon 6.1 is now-feature complete. We'll concentrate on bug fixes and tidying-up over the next month, with a final release planned for March 31."
Two of the big new "features" with this beta are: precompiled, encrypted templates and the revamping of the free server edition. I have no more information about the former at the moment but the free server edition news is very interesting... Vince Bonfanti, New Atlanta CEO, says "We've decided to significantly enhance the features provided in the BlueDragon Server 6.1 FREE edition. The free edition now has almost all of the features of the premium edition BlueDragon Server JX." The advanced features the free edition will not support are: JSP / J2EE support (such as page context, J2EE sessions,
This is a very bold move by New Atlanta - they'd previously said that the free edition would remain only CF5-compatible and that to get access to the new 6.1 features, users would need to buy the JX edition (currently $549 but will rise to $999 when 6.1 ships) or the J2EE edition ($4,998 for 2 CPUs). For comparison, Macromedia offers a Developer Edition (free, full-featured but single IP), Standard Edition ($1,299) and Enterprise Edition ($5,999 for 2 CPUs).
As soon as the Mac OS X version of Beta 3 is available (next week, according to Vince), I'll take it for a test drive, try my various Mach II applications on it and give a report (so far, Beta 1 and Beta 2 have been unable to run Mach II applications).
The third (and final) beta will be available on Friday February 27th.
- As I mentioned earlier, you can't cfinvokea component method directly at the moment, but you can usecreateObject()orcfobjectto create a CFC instance and then call methods on that (e.g.,obj.foo()).
- You can't createObject()a webservice, but you cancfinvokeit directly or usecfobjectto create a webservice instance (and then call methods on that).
- cfset var x = 1is treated the same ascfset variables.x = 1orcfset x = 1, i.e., as instance data rather than a local variable, but you can saycfset arguments.x = 1(and then refer to justx) and you effectively get a local variable. Of course, that assumes you don't have an argument calledx! Interestingly enough, in CFMX6.1, the unadornedxdoes not resolve toargumentsscope (it resolves to the unnamed /variablesscope) so that's a bit of a subtle difference!
Oh, one other issue to be aware of: if you use Safari 1.1 and try to download the beta from New Atlanta's site, you'll be repeatedly challenged to login. Apparently, this is due to a bug in Safari that doesn't respect cookie path hierarchies (when multiple cookies with the same name but different path lengths should be ordered by path) - the New Atlanta site uses cookies for login but relies on the path hierarchy to control access across multiple applications. You can workaround this by using Firebird (or some other browser) to download the bits.
I tried out some CFCs and mostly things worked pretty well although the beta does not support calling components directly via
Overall, it looks pretty good for an early beta. It isn't yet sufficiently compatible with CFMX 6.1 to be able to run Mach II applications so I can't really give it a full workout. One key point from the compatibility guide is that CFCs are not going to be supported in the free Server edition which makes a lot of sense - New Atlanta are in business to make money, after all, so you can't expect them to give everything away!
As the beta proceeds and greater compatibility with CFMX 6.1 is achieved, I'll be writing more about BlueDragon.
The beta is only available for Windows and Linux so I can't try it out to provide more details.
Correction: it seems I visited the site before the beta bits were up - there was an early customer preview for Windows and Linux only but now there is a full range of beta bits for all platforms.
After dinner, Michael Smith ran an interactive workshop on FLiP - the Fusebox Lifecycle Process. It was interesting to hear people talking about what didn't work for them in the real world and hearing suggestions for how to overcome these problems. That's always more productive than simply hearing why something is so great! I sat at the back and watched, mostly because I'm not very familiar with FLiP beyond what I've read in Nat & Jeff's book (about Fusebox 3, which includes a chapter on FLiP).
After that, it was the Fusepanel, which I was honored to be asked to join. The audience asked a lot of questions ranging from very Fusebox-related issues (which I deferred to Sandy Clark, Michael Smith and Steve Nelson) to more general design-related issues (where I found myself more in agreement with Steve than I would have expected!). There were also some specific Macromedia-related questions for me... I talked a little about how the product team had made a specific effort to optimize CFMX 6.1 for Fusebox applications (both existing Fusebox 3 applications and the then-nascent Fusebox 4 and Fusebox MX sample applications). I also encouraged the audience to submit articles about Fusebox to the Developer Center since Fusebox was currently unrepresented on macromedia.com.
I also acknowledged that we're using Mach II on some projects at Macromedia but couldn't say much about those yet... watch this space!


