Yesterday evening was the launch event of the ColdFusion User Group Belgium, a community initiative led by Steven Peeters and Cyril Hanquez, at the Adobe offices in Brussels. I did not know what to expect since ColdFusion users in Belgium were never very outspoken about their favorite technology and it almost seemed like interest was dying out. Nonetheless there was a really good turnout and lots of ideas shared for topics to cover in upcoming meetings.
Last Wednesday we had the Flex 4, Flash Builder 4, ColdFusion 9 and Flash Catalyst pre-release event at the Adobe User Group Belgium in Ghent. Speakers were Serge Jespers, Cyril Hanquez and Maarten Cox. I managed to record most of Cyril's talk on ColdFusion 9 and Bolt, which was targeted mainly to non-ColdFusion developers.
Think he did a really nice introduction for those not familiar with the language to get a glimpse of what is currently possible and what the upcoming ColdFusion 9 "Centaur" will deliver.
Ryan Stewart has an interesting video up on Adobe TV showing the ColdFusion proxy tags for use in Flex based apps. Shows the ability to call ColdFusion functionality directly from Flex without having to write the server side code yourself.
This feature will likely be available with the release of ColdFusion 9 aka Centaur.
I promised to blog about my adventures exploring what ColdFusion has to offer, and ColdFusion Components (CFC's) was one of the first things I tried.
I've got to admit its still a little uncomfortable writing non-interface related markup in tags, though of course you can do the same with Flex, and technically this can also be done using CFScript over CFML.
This particular HelloWorld component has just one function "sayHello" and you can probably figure out what it does. It requires one argument "name" of type string and returns a string using the given name.
To integrate this in a Flex application, things are very straightforward. The easiest option you have is using the Flash Remoting gateway that comes with ColdFusion.
In the example above the only thing we actually need to connect to the HelloWorld CFC is the RemoteObject tag. We first set the destination property to "ColdFusion" and point the endpoint to the ColdFusion remoting gateway location. The source property is the name of our CFC (HelloWorld.cfc) without the .cfc extension.
Now that is set up we can call methods in the CFC by referencing the id of the RemoteObject instance, e.g. cfc_service.sayHello() as you see happens when the button component gets clicked. The RemoteObject tag is also set up to listen to the result event and then populates the result in the result textinput component we set up.
In a more real world example, I'd recommend creating an actual ActionScript 3.0 result handler function rather than writing that as inline code.
You can see this is pretty trivial to set up. In an upcoming blog post I'll show you how to access this same CFC as a SOAP webservice from PHP or other scripting languages.
While at Scotch on the Road in London earlier this week I recorded a couple of videos and quickly edited those together for those interested to get a glimpse of what the event was like. Includes some clips of the pre event drinks at O'Neills, Adobe's opening keynote sneaks, Terry Ryan's "Extending Bolt" session and Kev McCabe and Andy Allan wrapping up the day. Enjoy!
Scotch on the Rocks went on the road this year, and I was happy to do a presentation yesterday at their London event. In many ways this was a new type of session for me -- not in the least because most of my audience will no doubt have had more hands on experience with the technology than me. It seemed to go down pretty well and think it was worth the ColdFusion community getting a glimpse at how their technology gets perceived by those outside. I did a couple of basic examples to show what I thought were the strong points of CFML and how I see things evolving.
I think the discussion afterwards was particularly interesting and most of us were in agreement that ColdFusion is in need of a renaissance and together with Adobe, the open source CFML vendors and the developer base we can make that happen.
I tried to get a narrated version up of my slides but had some audio sync problems, I'll see if I can get that fixed later.
In the next few days and weeks I'll be blogging a couple of basic CFML experiments I've been doing while preparing for this session. They should show how simple it is to get things up and running and connecting to Flash/Flex applications or even get some ColdFusion services integrated with other languages such as PHP, Python etc.
Last night I went to a ColdFusion sneak peek event with Ben Forta in Brussels. The first part of the presentation went mostly into BlazeDS versus LiveCycle Data Services. Data push with built-in conflict management always makes for a nice demo but its pretty much the same demo material I saw Christophe Coenraets present for the first time at an Adobe Connect event in 2006.
Ben then moved on to discuss some features that are likely to make it into ColdFusion "Centaur" and "Bolt" -- a new Eclipse based IDE for ColdFusion.
Focus points for ColdFusion 9 are to:
- Deliver enterprise class tools
- Break boundaries of Rich Internet Application development
- Raise productivity and quality of your application development process
Exposed Services Layer Probably the most promising feature for me was what they call the Exposed Services Layer (ESL). This provides access to ColdFusion functionality (like for example mail, document generation, PDF manipulation etc.) from any language through SOAP or AMF. Obviously that functionality is turned off by default and you have fine-grained control over the security of those services you expose and who you expose them to.
MXML/AS3 Service Libraries leverage that ESL feature as well and as such will allow you to call ColdFusion features directly from your Flex and ActionScript 3.0 projects.
Local/remote database synchronization Another interesting development is the built-in local/remote database sync between ColdFusion datasources and local SQLite databases through Adobe AIR.
CFSCRIPT support Then there's full support of CFSCRIPT, as I'm primarily an ActionScript developer I feel more comfortable with using script over tags for things like writing CFC's. One strange thing to note is that CFSCRIPT looks remarkably similar to ActionScript 3.0 but its not -- as Cyril Hanquez rightly asked, why would they not go with ActionScript 3.0 syntax?
In his answer Ben referred to server-side ActionScript as a proof of concept as was shown during the sneak peeks at Adobe MAX this year. I think its safe to say they would like to see ActionScript supported as a scripting language inside of CFML but its not quite there yet.
Bolt features Bolt is an Eclipse-based plugin, which is designed to run well alongside Flex Builder, or can be installed as a standalone application. Besides the obvious things like color coding, code hints etc. they seem to be providing a whole range of useful panels including: service browser, servers panel (start/stop, see logs, launch server monitor, snippets etc.)
One interesting note was that you can use CFML templates to build extensions, there is already a built-in ORM code generator, support for ModelGlue and even generating ActionScript classes from a database table.
Taking into consideration this will be a 1.0 product it looked quite polished already and will no doubt be a fantastic time saver for CFML developers everywhere.
One of the key points made in regards to ColdFusion over other technologies is the sheer number of functionality you get out of the box -- which is absolutely a valid remark to make.
I have to say I'm quite impressed about what I've seen so far of the plans for Centaur and Bolt.
In my opinion ColdFusion's struggle for the hearts and minds of some developers has little to do with its feature set or how well it integrates with Flash Platform and other technologies but rather its licensing and relatively unclear positioning in the market. I am now confident Adobe is in fact investing money and resources in ColdFusion's future and it will be an interesting year to see if and/or how open source CFML engines will drive adoption.
Scotch on the Rocks is going on the road this year doing one day events in London, Manchester and Edinburgh -- I'm happy to be speaking at the London edition on June 1st. This years talk might get a little controversial with a title like "ColdFusion is Dead, or is It?". Those of you that know me well will no doubt be aware that my hands on experience with ColdFusion is quite limited. In fact other than playing with the prerelease and some occasional experiments I rarely use it. I still like to think that I've got a firm grasp on most Adobe technologies and how those integrate with the Flash Platform.
The idea for this session came about after a 'twitter incident' where my good friend Aral Balkan declared ColdFusion a dead technology. I wasn't quite ready to give up on ColdFusion yet and certainly its community of passionate developers wasn't.
I consider this talk an experiment to help me make up my mind --
Over the next two months I'll be looking at anything ColdFusion related that gets thrown at me. I'll talk to anyone who has something to say about the state of ColdFusion, I would love to hear from you what is good and what needs to change (and if so how you would like to see it changed). Leave a comment or email me: coldfusion at peterelst dot com.
In my session I'll talk about some of the reasons I haven't been using ColdFusion in my projects up until now, some challenges I've faced with the technology as well as a synopsis of the feedback I got from the community. All this should lead me to a conclusion as to the future of ColdFusion.
June 1st I'll have the definitive answer for you (and yes, I do accept bribes! ;)).
ColdFusion is dead, long live ColdFusion! Before I knew it a simple twitter post about free ColdFusion workshops in Brussels turned into a heated debate on whether or not ColdFusion is a dead technology. Thought it was worth doing a blog post with my perspective on the discussion.
I'm not what you would call a typical ColdFusion developer, in fact other than installing the beta releases and experimenting with the most interesting features I have very little hands on experience with the product. Things changed about a year or so ago for me, I did some sessions at conferences like "Scotch on the Rocks" in Edinburgh where they primarily target ColdFusion developers and got to know several people in the community.
To say that ColdFusion has a passionate community is an understatement to say the least. It's kind of like Apple fan boys. Its amazing how passionate they are. They love the latest I phone 4, MacBook and other iProducts no matter what, exactly what ColdFusion fans are like. To the untrained eye they come across as guardians of the holy grail ready to smite anyone who dares criticize their beloved technology and to an extent that is even the case. If you look at the history of the product coming from Allaire through Macromedia to Adobe it is understandable that there is a certain level of anxiety about the survival of the product and what direction it is going to take.
I for one have not given up on ColdFusion, while there are obstacles along the way with the right approach it is here to stay and can see a grow in marketshare.
For the last few releases ColdFusion seems to be focusing more and more on enterprise level features. That's great and Adobe needs to build on its enterprise offerings along with the LiveCycle product range but it seems to be a somewhat artificial push in that direction and in the process neglecting a huge user base outside of the enterprise.
Arguably ColdFusion is the easiest way to hook up your Flash, Flex and AIR applications to backend services -- what about making it easier for your run of the mill Flash/Flex developer to get started with ColdFusion?
Pricing and open source
From what I've seen over the years, succesful developer technologies at Macromedia and Adobe have always relied on three pillars:
- free SDK - commercial developer tools - enterprise offerings
I think the same needs to happen for ColdFusion, there needs to be a free of charge and preferably open source CFML engine. That does not exclude any further commercial and even proprietary offerings on top of that but the barrier to entry must be way lower than it is right now.
I have to admit that, eventhough I like to think I'm well versed in all things Adobe, ColdFusion does have some gems I am yet to discover. Talking to my friend Cyril Hanquez, who incidentally works in government and enterprise and has been doing ColdFusion for almost a decade I've found out about some amazing features that I can't wait to try out as soon as I have the time.
Likewise, I regret to say that at least some portion of the ColdFusion community seems to be quite conservative and closeminded to what is happening around them. Technologies evolve and perspectives change, I would strongly advise any ColdFusion developers to look at what is happening with the Flash Platform as well as the AJAX world with jQuery and the likes.
Thirdly what I would call the "web 2.0 extremists" ready to dismiss anything that doesn't fit the general style guide of the latest iteration of the web (copyrighted by O'Reilly Media, Inc.). This honestly might be the most difficult group to evangelize to since its judgement is usually not based on any objective criteria but rather a general trend and developer interest. The only thing I can suggest there is to rename the product to coldfus.io and stick a "beta" label on it.
There are encouraging signs that many of these points are being addressed, but there's still a long way to go -- more so with marketing the product and winning developer mind share than growing the technology.
In the current economical crisis I have a feeling Adobe is going to be weary of any further open source initiatives but I would urge them to continue on that path. ColdFusion needs to get more closely aligned to the Flash Platform products and the enterprise will follow.
Think about what happened with Flex when it was originally launched as a serverside MXML compiler with pricing clearly aimed at the enterprise. I think it is fair to say that wasn't a huge success. Then in April 2007, the big turnaround with Flex going open source and becoming an almost instant hit with a lot of Java developers and increasingly large corporations which leads on to LiveCycle Data Service ES sales etc. We need a similar revolutionary approach for ColdFusion.
Open Source CFML engines are on the horizon, Adobe is working on a dedicated IDE for ColdFusion and serverside ActionScript support is to be added in the next release of the product codenamed "Centaur". These are not signs that Adobe is throwing in the towel, on the contrary -- if anything this is the time to start looking at ColdFusion and help shape its direction.
Just consider this as an "outsiders perspective" on the current state of ColdFusion, I'd love to hear your thoughts on this.