Adobe's Ben Forta on ColdFusion 9, CF Adoption Trends
DZone recently caught up with Ben Forta, ColdFusion guru and renowned book author to discuss the state of the ColdFusion market, CF adoption trends, and the future of the platform. While ColdFusion plays a pivotal role in many heterogeneous environments as 'middleware glue', it is increasingly becoming the platform of choice for standalone Web application and RIA development. ColdFusion 9 introduces a new Eclipse-based IDE, improvements to the CFScript language, and adds object-relational mapping support via Hibernate. Ben discusses these and other topics.
The complete transcript of the interview has been provided below.
DZone: We are sitting today with Ben Forta, Director of Platform Evangelism at Adobe Systems. Ben, it's a real pleasure to have you with us today.
Ben Forta: Yeah. It's good to be here.
DZone: Can you tell us a little bit about what you're up to at Adobe?
Ben: These are interesting times [at Adobe]. I'm responsible for our evangelism efforts for the Flash Platform and related products and that includes everything from Flex to Flash development and AIR, including ColdFusion and more, as well. It's a slight change in my role. For many years, I was associated with ColdFusion, primarily. I've been the ColdFusion Evangelist since I joined the lab back in the beginning of '98. After we started building integration between these products, it became clear that we needed a more consistent, coherent, integration story.
So we pulled together a team to try and tweak evangelism efforts around the entire platform and I was asked to head that team. So I still do a lot of ColdFusion work. I'm still one of the primary spokespeople for ColdFusion, but I now do have also responsibilities for evangelism and getting the word out around all our products including Flash, AIR, upcoming Flash Catalyst, and more.
DZone: Can you tell us a little bit about the state of the ColdFusion market today and some of the trends you are seeing?
Ben: Absolutely. ColdFusion is an established, known, mature product. We were creating this product back in 1995. It's rapidly approaching its 15th birthday. If you look back at the products that ColdFusion competed with in the early days, they're all gone. They've either evolved or merged with something else or morphed or just went out of business. ColdFusion has really stayed true to what made it very popular, very successful, on day one. In fact, code that you wrote for ColdFusion 1 and 2 will probably still run, as is, in ColdFusion 9.
So ColdFusion has a long history and really set the bar for what application productivity should be. But the market has changed. If you look at the growth potential in the 90's and who was buying these products, back then anybody who had an idea Monday, build Tuesday, go public Wednesday, retire Thursday, probably was powered by ColdFusion. Fortunately, we don't see a lot of that, anymore.
Now, applications tend to be more real, more business-centric, often more mission critical, more enterprise-centric. So there has been quite a shift in who uses ColdFusion over those years. Probably less and less of the small Mom and Pop shops and start-ups, although a lot of those still.
In ColdFusion, there's a lot more interest in enterprises and larger organizations, so there's been a big shift there. What hasn't changed is the core ColdFusion story. Along with that change with who's buying ColdFusion, who's interested in it, has been a change in where the jobs are.
For a long time, you could look online and find lots of little start-ups. Some of them are still out there, but where we're seeing a lot of mass of ColdFusion developers right now are in the bigger organizations and the enterprises and in the integrators and the consulting shops who are finding that, in that shift of who's using ColdFusion and what the focus was late 90's into 2000, there was a period of time where there was a lot of people picking up ColdFusion as a new skill.
Suddenly, ColdFusion interest has really surged. The numbers around ColdFusion 7 and 8 have been very, very impressive.
There is a demand for ColdFusion developers in ways we haven't seen before. I think the biggest request we get from ColdFusion customers is: "Where do I find talented, skilled, developers?" We get recruiters calling up all the time. So there's a significant demand.
While the jobs themselves and the organizations they're in have changed, the demand and need for ColdFusion developers is consistent, particularly for developers who understand that the real value of ColdFusion is less in ColdFusion by itself and more ColdFusion as an integration story with integration to Java on the back end, integration to Flex and AIR.
The developers who have those multiple skills, who can do ColdFusion with Flex and tie them together or ColdFusion with Java and tie them together, there are a lot of good jobs out there and a lot of demand for developers with those skills.
DZone: It sounds like then the resurgence in ColdFusion demand is primarily driven by existing enterprise Java shops looking to enhance developer productivity, to some extent.
Ben: That's probably partially true. I think the most interest we see in ColdFusion shops is that they are broadening their investments into products and building their applications. That's not to say we're not getting totally brand new companies out there, we definitely are. But the market is mature.
You tend to see, in general, not just with ColdFusion, but PHP and Ruby suffer the same problem. You tend to see less wholesale, dramatic shifting of what they're using on the back end and more digging deeper, broadening type of integration.
There definitely are new ColdFusion customers coming along, particularly by Flex or by Dreamweaver or by Java integration. But yes, I think you're right, in general, where you see most of the interest and particularly most of the people looking for employees is in the organizations that used ColdFusion for a long time, the more established organizations. Often enterprises, often more mission-critical applications and a stronger market for employees there.
DZone: As you talk to people from other camps, do you find yourself dispelling common misconceptions around ColdFusion as, I guess, a "legacy platform"?
Ben: There are misconceptions. Fortunately, they're far less of an obstacle than they were years ago. Way back when, we spent half our lives fighting about ColdFusion for being proprietary, we're now fighting about it being too expensive compared to free open source alternatives. Not true. Just look at the range of what's included and what it would cost to replicate that in open source products. The total cost of ownership in ColdFusion actually is a lot cheaper. So, yeah, we've heard all this before. It's not a real language, it's tag-based.
I think in general, a lot of the legacy issues that really were a pain in the neck to deal back in five, six, seven years ago, those are gone. But there are some issues. There are people whose knowledge of ColdFusion is based upon what they experienced back in ColdFusion 5 and earlier.
And that was a very different product. Even though the developers are the same, the guts are different. And so you've got issues you've run into or performance or scalability issues, that has long since been addressed which our competitors are unaware of. Still, we have perception issues.
Honestly, we don't get into those kinds of questions as much as we used to. The days of where our jobs were almost all defensive, really are over. We're not getting into those discussions.
We do run into organizations that have pre-conceived notions and we've got to deal with them, but in general, we've got a very committed, very dedicated, very loyal base who love the product, who really sees the value in it. And they very quickly see that you can't really compare ColdFusion to other products because it does so much and touches so many different things in there. And if it fits your organization it's great, it's a great tool.
I think we spend more time nowadays talking about what the ColdFusion relationship is to everything else, including Flex and AIR, than we do in those very defensive, very fighting preconceived notions, battles we used to have years ago.
DZone: So ColdFusion 9 was a big announcement for Adobe this year, Ben. What are some of the features in CF9 that excite you the most?
Ben: So ColdFusion 9 is a very exciting release for lots of reasons. The interesting thing about it is that we tried to come up with these one-line taglines that summarize what the product is in this release, and there isn't one. It's a collection of lots of really important things that appeal to very, very different people. When we did the tour a year ago to start showing people the features, some, when they saw the ORM, the object-relational mapping function, were just giddy and jumping for joy. Others, when they found out that you can manipulate spreadsheets and low-level spreadsheets, redesign them and manipulate them, were jumping out of their seats.
It does appeal to different users, but real problems, problems that people want to solve and need to solve. And so, both of those are very important.
And I think the key message in ColdFusion 9 is that we've improved a lot of what was there already and also given developers a whole lot of new productivity tools for whatever it is they're doing.
If you need to build business centric applications, a lot of really important stuff there including the spreadsheet integration and other popular office formats and document integration. If you need to work with Flex and AIR, there's a significantly improved integration including the build interface online.
Offline, it's really to integrate with back end systems. You've got everything from integration to portal servers to SharePoint now, to building applications that are very data centric and the ORM stuff. So it's a collection of lots of things that appeal to very different users.
And honestly, I don't think I've seen a single user who jumped up and down for every single thing he saw, but everybody seems to identify some thing in ColdFusion 9 that is going to make their lives easier.
The one ColdFusion 9 feature that has gotten everybody excited and is probably the cause for most interest in ColdFusion, is the IDE. And the fact that after close to 10 years of not having an official IDE, that ColdFusion now does have one with ColdFusion Builder that is in beta now.
DZone: What new features can ColdFusion developers expect to see in the new IDE?
Ben: ColdFusion Builder is a brand new IDE, and the intent was to build an IDE, not just an editor. ColdFusion hasn't had an editor since ColdFusion Studio days back in Allaire, when Studio was kind of HomeSite's big brother with HomeSite with ColdFusion extensions in it. And it was a great product but we've done nothing with it in many years. ColdFusion Builder is brand new. It does the kind of things you'd expect in an editor. It has color coding, and syntax checking, and helping and so on but it does a lot of things that are more IDE-ish.
The awareness of what the server is doing and the ability to get to server settings and administrator easily; all sorts of wizards drilled out which enables introspection; the ability to break different tables and auto-generate abstraction code; simply convert ColdFusion deployments to AS3 and back again. So a lot more than just simple code editing.
And probably one of the most interesting features about it is that we realized from day one that we would not be able to ever give the ColdFusion user everything they needed, so it has a built-in extensibility model. It lets ColdFusion developers write extensions to the builder in CFML, the language that everybody knows.
And so a lot of very ColdFusion centric thinking, but really important was that it was built on Eclipse. That was done deliberately because we wanted to build it on the same underlying platform that drives the other IDE products that are in Adobe. That's the basis of Flex Builder, it's the basis of Flash Catalyst, also the basis of LiveCycle Workbench.
And so it gives you the ability to have one development environment that runs all of these different IDEs within them. And so if you are doing ColdFusion power/development, you can use one tool and they can be tightly integrated and aware of each other.
So it is definitely a 1.0 product. This is new. This is not in any way the next version of HomeSite or ColdFusion Studio; it's a brand new builder. But a lot of very important features in there from day one. We do plan to rev this thing as frequently as we can, possibly even more frequently than the server because you can rev tools more easily and more often than you can servers.
And communities are going to build extensions; they have already. And it really rounds out the ColdFusion story and builds even greater integration with other Adobe products.
DZone: The notion of object-relational mapping has been around for sometime now in the Java universe. Is it still relatively a new concept in the ColdFusion space?
Ben: Absolutely, I mean you are right. object-relational mapping really was born out of Java development and has become popular elsewhere. I think it is worth noting that an ORM does scare a lot of users, particularly those who have used ColdFusion for a long time and like its inherent simplicity. There's something beautiful and simple about a CF tag and a Flex statement to just get the data and work with it. And that is not going away. There will be people who use ORM and they cringe that we're introducing complexity into ColdFusion.
It is entirely optional. If you want to right click it away you do it right now. You can and should and it will be supported and we will continue to improve the core ColdFusion functionality.
Having said that, I mentioned earlier that the kinds of application people are building in ColdFusion are more complex, more enterprise-centric, also more mission critical and so having new ways to think about working with data and being able to abstract your underlying data - you don't have to worry about columns and types and changes to data or RDBMS specific differences is compelling.
It is appealing and so that is where the operational mapping in ColdFusion 9 comes in. Now, we were very careful not to create anything from scratch, this is not our own invention.
We took the granddaddy of our ORM space Hibernate as it's built inside ColdFusion and we put wrappers around it to make everything Hibernate can do as clean and as simple as you'd expect in ColdFusion, but also allowing you to drop down to the hardware level when you need to.
So there is nothing that you can do in Hibernate that you can't get in ColdFusion, though more often than not, you've got a higher level of abstraction than Hibernate itself gives you. And yes, this really does support it as well, and this is going to be very important for developers.
It is worth noting that this is not actually new to ColdFusion. It's new to ColdFusion 9 for us, but this is actually something the community drove. So for a while already, the community built their own object-relational mapping layers and abstractions of ColdFusion and there are several of them and some of them are really good as well.
And having saw the increase in popularity in those and also the inherent complexity in that they weren't a core part of ColdFusion in the tooling, it became apparent that there are developers who want this and that we really can do a better job of building it as a tool into the server. That's what the Hibernate abstraction in ColdFusion nine is all about.
Although if people want to use it for third party operating, they absolutely can. That's the beauty of ColdFusion: it's open and the community contributes to it and often takes the lead, as they've done here.
DZone: What are some of the new language level enhancements in ColdFusion 9?
Ben: Yes, lots of interesting features of ColdFusion 9, some more interesting than others. The local variables that you mentioned was really a way to standardize a convention that had kind of grown by itself. And that was: How do you keep variables that are local for a particular function from not stepping over variables in the file itself? So how do you keep different spaces and the life spans of variables you need to where they’re appropriate? And there are ways to get around this. You create local variables and so on. But it wasn't clean, it wasn't consistent, the language wasn't modern so it didn't really represent it as well as you'd expect.
And they created some interesting limitations like the fact that local variables could only be defined at the top of a function and not in the middle. So the local scope is a way to formalize that and to standardize what variable should be in local truly is local. And that it's clean, that's important.
There are other very important language changes, and probably the one that's got the most interest was, a lot of efforts finally put into CFScript. And the CFScript has been around to ColdFusion four days, and we've done very little with it since then, actually, occasionally adding a new feature.
In ColdFusion 9, for the first time, it is possible to build an entire application, beginning to end, including the application CFC and everything, entirely in script without needing a single line of CFML.
They'll find moving back and forth between CFML in script on the server and those other languages to be cleaner and simpler. Still not actually copy and paste between them, but a whole lot more so than it was beforehand. Also a lot of other things, improvements in how operators work, and just lots and lots of little details that developers have been asking about for a long time, that we've finally been able to deliver.
DZone: How does ColdFusion 9 augment PHP development?
Ben: That's an interesting question. So I think I'll answer that first by saying that I'm not in any way suggesting that PHP developers abandon using PHP and start using ColdFusion. If they want to, that's great. If they are comfortable and productive and prime PHP does what they need, then they should continue using it. There are a lot of good technologies and tools and languages out there, you should use the right one for the job. And so when I'm talking to PHP developers I often end spending more time talking about Flex and AIR than ColdFusion, and that's appropriate.
Having said that, we did do one very interesting thing in ColdFusion 9, and that is we recognized, if you think about ColdFusion and what it's become over the years, ColdFusion is actually two very different things which have become very closely integrated.
One is the language. The CFML language that some people love and some people can't stand. We keep improving it and have the CFScript alternatives. And it's a language, right? It's a language that at runtime gets turned into Java bytecode, and then at runtime is executed.
The other part of ColdFusion, which is actually a much bigger part of ColdFusion, are all of the integrated services. Everything from managing mail, to charting, to full-text searching, to manipulating office documents, and generating PDFs on the fly, and working with images and charts and so much more. And the way those services are primarily exposed, are by tags. So if you're a ColdFusion user, you call a tag or call a function and you have access to all the stuff.
Now, one of the things that occurred to us is if an organization has ColdFusion installed, and they have other developers who are using Java or .NET, or PHP, or whatever else it may be, why couldn't they use those services as well?
And going back to my point earlier that we're seeing more and more ColdFusion employed in enterprises and bigger organizations, those organizations typically have a bit of everything. There isn't an organization that is a larger enterprise operation that has standardized, purely on one language, and one platform, and that's all they use. So if they are investing in ColdFusion, let the PHP and .NET developers use it as well.
And so, what we've got in ColdFusion nine is a new way to invoke those core services in ColdFusion, where you're not only able to calls them by tags and functions, but you can actually call them from external systems via Web service calls or AMF/Flash Remoting calls. Which means that if you are a text developer and want to write an email, you don't have to write a CFC on the server that in turn calls the CF mail tag, and then have your AF code call the CFC mail. Your AF code can call CF mail directly.
And the same thing if you are a PHP developer. If you want to call one of those built-in services, we expose them, and there is this streamed model around them to ensure that they're exposed properly and who gets access to what. But, we can actually expose core services in ColdFusion and core pieces of functionality as services that can be invoked by other platforms including PHP.
So, for a PHP developer who now needs to manipulate - I don't know - a PDF file, whatever it is, ColdFusion comes as a very intelligent way to do that without having to even learn ColdFusion. We expose these services, and you can invoke them and get the results. And that's very compelling for organizations that have really a mixed bag of everything.
DZone: With a little over 750,000 ColdFusion developers worldwide, what is Adobe doing to bring organizations that don't have an existing ColdFusion investment to start using the platform?
Ben: I think the primary thing we're doing is tight integration with everything else out there. Even on my team, there are developers ... I've got a very diverse team with very diverse skill sets. My team's scattered worldwide, and they have to have a diverse skill set because they need to talk to, not just ColdFusion developers, but PHP developers, Java developers and more. And I've got developers on my team who are now discovering ColdFusion for the first time. They are PHP and Java developers, and they're constantly building apps. And they're trying CF, and they're blown away by it.
What made them excited about CF themselves is less that I'm their boss and they better like CF, and more the fact that they're building Flex applications, but applications, and they're blown away by the integration. If you want to build a back end for a rich internet app, ColdFusion just blows everything else out of the water over there.
I think that's a big part of what we've done, is making ColdFusion play a very important supporting role for the Flash platform and built that level of integration, be it in full-fledged Dreamweaver or integration in Flash Builder.
ColdFusion was the first back end to have wizards in Flex Builder 2. And we can improved that in three and it will be improved again in four. The online/offline support for AIR...
By having that level of integration with other products, it basically means that whatever you're looking within Adobe cultures, ColdFusion now plays a more important role. And I think it's that story of ColdFusion. ColdFusion not as a stand-alone way to build on apps, but really the glue, the middleware that facilitates this next generation of virtualization applications.
That's probably the most important thing we're doing to, not just create and enrich apps but also create a whole new level of interest in ColdFusion that wasn't there before. And that's really where a lot of new interest is coming from.
DZone: If you could look at your crystal ball, what would you describe as the future direction for ColdFusion?
Ben: There are some interesting things. The change in how ColdFusion is deployed. Price packages with cloud-type offerings is important. We've known that was coming. We've been trying to get our arms around it. We've talked about it, being out there. We know it's something that's going to happen. We're not quite ready to roll out all the details yet. But that is really important, it is going to happen. And that's going to do some interesting things. First, it will make ColdFusion accessible to a whole new audience, where it wasn't before because you eliminate the need to have to install servers yourself. You eliminate the up-front costs, because it's a kind of pay-as-you-go, pay-as-you-grow type scenario. And still the initial cost that has been a hurdle for some, becomes less so. It's an interesting trend, and it's one that we are embracing.
And watch for more details around that coming soon. The only thing I think you're going to see around ColdFusion is further solidifying its position as glue, as middleware. And while not de-emphasizing the fact that it’s used for Web apps because that is still primarily use case. But you're going to see more and more ColdFusion play this integration role. This glue piece that holds all back ends and front ends together.
And I think you will see a lot more apps out there powered by ColdFusion that have no web interface at all, and that's good, and it's appropriate. It's a good use of ColdFusion. And as we see more and more of that, that will automatically necessitate rethinking about what the futures are in the ColdFusion 10, how we prioritize them, the kind of integration features we need, and that's going to become more and more important.
DZone: You have several books coming out next year on ColdFusion 9. Can you tell us a little bit about what those will cover and when we can expect to see them.
Ben: Sure. The ColdFusion Construction Kit books, or CF Max books, as they have been affectionately dubbed, have become pretty much the de facto, standard way to learn ColdFusion. And that's a privilege and an honor for me personally that that has happened. That's how I ended up in this current role is that I wrote a book on ColdFusion and then got hired as a result. And it starts off as one book in ColdFusion 2. And then when you hit ColdFusion four or 5, because of the complexity, it became two books. And then with ColdFusion 8, we had so much content it became three books. And then even with three volumes, much to my publisher's dismay, we ended up with over 1, 000 pages that we couldn't print, and we had to put them online. We actually probably needed five volumes.
And that's a testament to how broad ColdFusion has gotten and what it does nowadays. And with ColdFusion 9, we are revving those three books. We had to make some tough decisions about what to include, what not to include.
There are some things that have been there for a long time that really haven't changed much in years. Things like WEDF support, which is still useful, but really hasn't evolved in several versions. Those chapters are being pulled so we can emphasize a lot of the new functionality.
So these books are an update. There will be three volumes like there are currently, and the plan is for them to be released in early 2010. And those exact dates are moving back and forth as we finalize details of the contents. But yeah, there will be three books like last time, and so stay tuned for those. I can't give an exact release date just yet, but the format, the layout, the visual is very similar.
It is looking though like once again, we'll significantly blow page counts, and once again, we'll probably have lots and lots of chapters online like we did last time. Readers, though, were pleased last time to see that all those chapters were published in PDF form free of charge, just grab them. And we intend to do the same this time.
DZone: Ben, on behalf of the DZone community, I want to thank you very much for your time today. Do you have any final words of advice for our audience?
Ben: I guess my big final word is, if you haven't tried it yet, play with it. ColdFusion nine is available. You can try it. You can download it. It's really easy to install and set up. It's a whole lot of fun to play with. And there are hosting companies that will give you accounts to play with as well. So if you want to try a remote server, somebody else's, you can do that also. Actually two last points. One is people often forget that ColdFusion is free for educational use. And so if you're teaching ColdFusion or if you're in an educational institution, there's really no reason to not use it. It's free, it's readily available, and it really largely supports these free educational versions of Flash Builder.
And the final point, and this is the one I was trying to get to all along, was as you think about interest in rich end applications when you're building apps or flash apps, you definitely want to pay attention to ColdFusion back end integration through them, because you'll find that it really does, once again, deliver a whole new level of productivity. Kind of like what we did for the web maybe 15 years ago, but now we're doing it for rich Internet apps.
DZone: You can learn more about ColdFusion 9 and also get Ben's thoughts on the platform and language at www.forta.com. Ben, thanks again.
Ben: Thank you.