Everyone freshly stuffed from their various dinners and socializing, we all waited in anticipation for the start of this evening's Birds Of a Feather session entitled "The Future of CFML". The zeal and comaraderie of the group was alive and well in the room (as are all such meetings involving members of this community) when the three panelists/moderators seated themselves in front of the room. On the left was seated Gert from Railo; in the center was Matt from OpenBD, and on the right was Sean Corfield. I couldn't help but wonder amusedly if the shirt Sean was wearing was prophetic in its short, simple statement: "I See Dead Code". Not so much that CFML could ever go extinct, but I wondered in myself whether or not the mother of all CFML, Adobe herself, might one day become a matter of history regarding the evolution of our language.

Just prior to formally beginning the discussion there was a brief but loud bump at the room's emergency exit. Upon inspecting the source of the noise, we happily found it to be a man bearing a large smile and at least two cases of Shiner Bock and other miscellaneous recreational beverages, no doubt just exactly the elixir needed to facilitate this discussion and keep it well lubricated. After the initial distribution of holy water, Gert formally got the dialogue rolling.
He began by giving us a short, general list of what he hoped to accomplish with the meeting, primary of which was to receive input from the rest of us as to what features and/or changes we felt the open source CFML engines needed to incorporate. He laughingly also allowed us the benefit of airing any grievances we may be harboring as well, the implied subject being Adobe and her less than friendly stance towards the open source engines. Speaking of whom, it was shared with us that the conference hosts had spoken with Adobe and extended an invitation to participate in whatever manner they saw fit. They saw fit not to participate at all, their motivation being (sadly so) that they had no place at an open source conference.
At Gert's checkered flag, the conversation was immediately off and racing full speed ahead. With courtesy abounding and caring moderation conducting this orchestra, nearly everyone had at least one thing to share with the group. In between listening, considering, and sharing, I was busy taking notes on how this dialogue flowed. What follows is a very paraphrased approximation of how it all played out, with my occasional commentary interspersed and annotated as such.
Upon the news that Adobe had declined to be represented among us, I couldn't help but feel a very strong sense of apathy towards her, looking into the future and feeling quite confident that, with the open source engines maintaining such a tight bond with the community who symbiotically supports them, nobody would shed a tear or be left in any kind of a lurch if Adobe should disappear from the CFML landscape tomorrow. Gert was sincerely gracious in reiterating to me at one point that, in its present state, CFML could not survive as a language if it weren't for Adobe's continued participation in its evolution. Despite his kindness towards Adobe, I could still envision the day when Railo and OpenBD would be leading the way for Adobe rather than the Adobe setting the standards for the open source engines.
The first topic was introduced by Sean, and addressed the fact that, the way CFML is currently architected, one basically has EVERY available tag and function living within the same namespace; that is, at any place and at any time in any CF app, you can execute ANY CFML tag or function. When you think about this, it seems like a lot of overkill to have EVERYTHING imported, especially when the model of other languages is that you only import what it is you need. Thus, Sean suggested that perhaps functionality be segregated into importable packages or modules.
Noting that, given any length of time when someone wasn't audibly speaking, the topic was subject to sudden and immediate change, the next tangent embarked upon was converting some functions to objects. For instance, there are currently 80 separate functions that you can use to manipulate spreadsheets in CFML; but it was suggested that it might make more sense if those functions were part of a single spreadsheet object that a developer could simply create an instance of and then call the needed methods in a more object oriented manner. It would remove those functions from the global namespace, alow those objects to be used within CFSCRIPT, and it would give developers a more "sensible" and compact syntax for writing code.
Someone then spoke of ways to measure the success of an open source engine's progress, and the popular response to that question was "the more hostile Adobe gets, the more successful that engine is becoming". Indeed.
Being able to execute different languages within CFML has been a topic of discussion off and on over the years, and we all took the time to hash it out tonight as a group. Languages such as PHP, Groovy, ActionScript...wouldn't it be useful to be able to execute their code directly within a CFML template? Well, it is definitely do-able, and has been demonstrated time and time again. Sometimes it is of use, with specific use cases; but the real question is, would end users truly find this a useful thing to have? How often would one really want to suddenly switch up and run a few lines of PHP within a CFML page? Just because we CAN do this thing, SHOULD we? Looking to the example of Adobe, who, in wanting to help attract more Flash developer to CFML, invested the effort into making it possible to execute Action Script on the server side. And did their effort succeed in attaining their goals? Did a million plus Flash developers fall in love with CFML? No. In fact, many of the Adobe Flash applications and demos are embedded in PHP pages. The overall conclusion to the debate led to a pretty clear "no, we do not need to make this feature part of the core engine". When such needs do arise, CFCs can be written to wrap up and provide this functionality, such as has been done with CFGroovy.
This discussion necessarily led to discussing OTHER tags that have been made part of the core that probably aren't appropriate as well. Tags such as CFMap, CFAjax, CFSharePoint, CFForm, CFTable were mentioned by name, though the list is much longer. Quite frankly, most developers do not and will not use these tags. Due to the fact that so many legacy apps exist, one person suggested that perhaps these "smelly" tags could be moved out of the core and into a "grandpa" library that could be imported as needed to support backwards compatibility. The nay sayers of this, though, brought up the subject of simple deprecation (or defecation, as one of my peers shared) of certain tags and functions. As with many languages and projects, there comes a time in their evolution when backwards compatibility can and should only go so far. So, rather than worry about legacy apps breaking if one were to upgrade to a more current engine, put the onus back on the developers to weigh out whether or not they're willing to simply rewrite the affected portions of their code to be compatible with the engine version they desire. It's not a new thing at all, and it makes perfect sense in the natural order of things. The now deprecated CFML advisory committee was nearly unanimous on this idea, with the exception of one member who tended to oppose sound suggestions on a rather frequent basis to suit their own needs.
A developer who is fairly new to CFML shared her perspective on the language, conferences, and what it is she does and does not look for from the community with regards to help. She was very pleasant and candid, and was interested in having access to a resource where she could get information and help with the kinds of projects she is specifically working on. This led the discussion into a debate on some kind of centralized wiki for CFML. There are those who feel that the current landscape dotted with blogs whose content tends to be very ecclectic in nature just wasn't sufficient to act as a solid resource for those who are just getting started with CFML. I personally thought contrary and, though I am all for a "central repository" of knowledge, feel that a virtual one is just as good as a tangible one. In over 13 years of CFML development, I have worked primarily as a lone developer and as such have had to seek out the information I needed as I went along. Google, ah my good friend Google, HAS been my single virtual "central repository", helping me locate exactly what I needed from among the multitude of knowledge out there, and helping me to make some good friends in the community along the way. This debate then evolved into discussing ways to assist one another. It was said that if you find there is only one person in an organization that everybody else goes to for help, it is possible for this to become a source for the propogation of poor coding habits. It is healthier for the community as a whole, therefore, if every individual makes a conscious effort to seek out assistance from different people, whether a local peer or a virtual one. The idea of what appropriate help is was also explored. In a nutshell, if you're doing it for them, you're not helping them. Give them the clues they need to figure it out for themselves...teach 'em to fish, don't catch it for them!
Ah, and speaking of educating people about CFML, a healthy discussion on ways to incorporate more of the other languages' communities also took place. In a nutshell, CFML has had a bad rap pretty much since its beginnings due almost completely to the fact that it never had an open source engine and required major financial investment to use. Now that this is no longer an issue, it's time the world became aware. How can we do this? By doing what I interpreted from the conversation to be an ethical bait and switch. Two key areas stood out to me during this dialogue: blogging and code sharing.
Regarding blogging, Sean put it best when he said that as long as you only blog about CFML, then only CFML developers will be reading your blog. The point therefore being to get developers of other languages reading your blog and thus "discovering" or even rediscovering CFML, it is important to do a couple of things. One, do more to genericize your blog. Rather than name your site something CFML-specific, like "BestColdFusionSiteInTheWorld.com", try "codeMonkey" or something else that speaks as well to a PHP developer as a CFML developer. Rather than title your posts with something CFML specific, try to come up with more generic approaches to sharing the information in your post. It's okay to mention CFML in the post, but get their attention first with your vast knowledge of ORMs, MVC, object oriented principles, and THEN utilize CFML to illustrate what you're talking about. Also, take the time once in a while to learn about and blog about other languages or technologies. On my own site, for instance, I get a LOT of traffic to posts I've done on Oracle, CSS, Javascript, and PHP. Sean shared an example of how he has gotten increased traffic via his posts on Clojure and how some of those readers have actually commented to the affect that they discovered or rediscovered CFML via his site.
Many community members share projects they've created. Custom tags, CFCs, entire apps. Applying the same mentality described with blogging, Sean suggests that rather than simply host your shared code on RIAForge or other CFML-specific sites, share it on Github! That way, EVERYBODY will see it. The more visitors to Github see CFML projects rising on the list, the more attention it will gain.
Lastly regarding attracting outside developers is the idea of participating in technical forums that are language agnostic, specifically StackOverflow. As other language developers frequent that site and see CFML questions being posted and responded to, it will undoubtedly pique their curiosity!
In a nutshell, all of us can facilitate the CFML Rennaissance by simply making a few simple changes to our online habits.
We wrapped up the session by actually talking about the main topic that Gert had mentioned to begin with: feature suggestions. Some of those shared were the incorporation of closures, proper collections and enumerables, and heredoc syntax.
Lastly, we were all given the reminder to take the time to share our ideas, needs, and desires for the open source CFML engines. The open source community, as it always has been and always will be, considers themselves to be one with the community who utilizes them. They recognize and embrace the symbiosis that makes both we and they great: mutual evolution.
Oh, I mentioned the CFML Advisory committee that had been formed to help all of the CFML engines evolve with some kind of standardization. Since Adobe refused to participate and exercised a lot more vetoing than concurrence, the new unofficial yet very functional CFML advisory committee exists in the form of a Google group to which ALL are invited to participate and be heard. If you have any input, ideas, or rainbow and lollipop dreams for either Railo or OpenBD, feel free to interact with those who guide them at CFML-CONVENTIONAL-WISDOM (http://groups.google.com/group/cfml-conventional-wisdom?pli=1)
Doug out! :)
P.S. Notice that not one time (with one exception when referring to what not to do on your blog) did I ever refer to our language as ColdFusion. As I believe that Adobe will one day in the near future no longer be leading the pack of engines, I prefer to think of ourlanguage in a more generic, open source fashion. This necessitates the cutting of all ties, and thus I will, on most every occasion from here on out, refer to it only as CFML. Might as well get used to changing your mindset to something more open source as well! :)
You are not logged in, so your subscription status for this entry is unknown. You can login or register here.
Jim
It sounds like the open source engines have been playing catch up the last several years and have implement a couple gems (some adopted by ACF). It sounds now with the Adobe announcement, the engines are gearing to move ahead. Their roadmaps are public so the enhancements are out on the web.
I don't understand the conflict between Adobe and a tiny fraction of outspoken developers. Can you try to explain why you think Adobe is so irrelevant, or on the outs? I'm all for open source having contributed numerous projects to RIAForge and on my blog. I just don't understand how you can ever think that ColdFusion will succeed if Adobe fails in it's stewardship.
As for your RIAForge contributes, hopefully they are on github also for more exposure outside of the CFML world and just the awesomeness of git. Can't recall off the top of my head :-)
Once ColdFusion X is released, the OSS engines will continue to play catch up (including things from CF9 still). Adobe does lead the way for the future of ColdFusion and that is not going to change anytime soon.
Sorry Doug, but if Adobe disappeared tomorrow, CFML would die out quite quickly, I think. Sure, there would always be hold outs that continued to use the other engines. But would it be enough to call it anything other than a hold-out community?
Gert was right about one thing for certain, and most of the OSS CFML leaders agree on this. CFML could not survive without Adobe's guidance and innovation. So enough hate. Enough Adobe bashing. Many of the things you state in here as fact are hearsay and speculation, much of the rest is hyperbole.
Yeah, since Adobe's enhancements aren't public the open cfml engines will play catch up when ACFX is released while ACFX can try to implement features from the open cfml engines since their roadmap is public.
I quoted from Adam's post http://www.adrocknaphobia.com/post.cfm/the-modern-age-of-ColdFusion about the longer release cycle for ACFX. Should have mentioned that.
>> The other engines are still playing catch up and that will not change. We don't actually
>> think that ColdFusion X won't have anything new in it, do we? Why do you think there will
>> be a "longer than usual" release cycle? It's not because of the management change.
>>Engineering is still working like it always has.
So if as you say in your blog posting, Adobe does drop CF all together, that's going to hit the headlines. All the big guys in the companies that use CF will say it's dead they won't care about CFML and they will move everything over to Java.
Game Over for everyone.
Gert is right in saying that Railo / OpenBD can't survive without Adobe CF.
We all know Adobe have more money then Railo and OpenBD, because they are a large software house. But they have to protect their selves, and it doesn't do them any justice to be relied upon to give a large wedge of cash to an event that a competitor will benefit off. (No matter what you say Railo and OpenBD are competitors to ACF)
I don't think this goes for just CF in terms of Adobe, why would they want to sponsor an event in the Flash Space, which also have sponsors for Open Source Flash, or in respect to Flash Builder it's not in Adobe's interest to sponsor an event, that also pushed FDT. In essence it means they are paying for someone else to eat into their market share.
We are in an economic down turn, and Adobe need to protect assets and not spend money they could help eat into their market share.
It's a hard call, but at the end of the day you personally wouldn't want to spend money to help someone, learn to do you job for them to undercut you and you lose your job.
Um, right. Let's not forget - Adobe is a business. There isn't anything wrong with that. It's ok to have a competitive advantage (there are other web dev platforms out there) and surprise folks with announcements. It isn't evil, immoral, greedy, or otherwise a negative thing.
Shoot, that being said, look at how often Adobe lets info slip out. You will normally get 2-3 feature announcements at every major conference. And this is all BEFORE a public test release. So it's not like CFX is going to magically appear one day with Unicorn Magic as a feature and catch everyone by surprise.
I am rooting for Unicorn Magic though.
Please bear in mind that I am not a financial person, nor did I stay in a Holiday Inn Express last night.
I realize having said that that there are plenty of community pillars who are "friends of open source" who would still heartily agree with you, and frankly I do trust their judgment in this department more than I trust my own simply due to the limited lense with which I have to assess the CFML landscape. Believing them, however, doesn't enable me to comprehend how the language would simply expire into the ether if Adobe were to let it go.
I am not trying to be a hater, and I honestly do not 'hate' Adobe. I admit to being a bit agnostic towards them, but hate is definitely not an accurate description at all. The word 'hate' is hereby banned from this comment thread.
Personally, I am thankful of Allaire>Macromedia>Adobe, who gave us CFML. It's my preferred language, and I am a really big fan.
In response to the anti- and pro-Adobe comments: did fans of Karl Benz's invention, get cross when other brands also started producing cars? Maybe in the beginning, because change can look frightening. But you do have a lot of brands nowadays, which gives us innovation, better cars, and choice.
To me, it's simple. Stop bothering eachother, and join in promoting and writing CFML!
p.s. this is my *personal* opinion.
I believe that the next step in evolution is to view the language simply as generic CFML, which can run on any of (currently) three engines, each having their own implementation of common tags and their own collection of specialized tags, as well as other features that make each more applicable depending upon the challenge being addressed.
Try your best not to spin this into an "us vs them" scenario, or an "anti-Adobe" rant. I have never drank of the Adobe kool-aid, and so speak of them in the context as a peer to Railo and OpenBD (albeit a peer who doesn't seem to keen on the idea of collaboration), rather than a supreme CF being.
There are actually currently four CFML engines, or maybe five, depending on how you count them: the commercial BlueDragon .NET and Java editions, both of which currently have larger installed customer bases then either Railo or OpenBD.
Very good blog post, by the way.
You'll never beat me.
<3 PHP
and @Ruby... I wouldn't be talking man...you only have ONE FRAMEWORK! :P
Though that portion of the podcast related to this post attempted to paint the entire open source community as an aggressor of sorts against Adobe (completely false, by the way), the manner in which it was done was equally as pointed and slanderous as my post was accused of. By suggesting to the open source community not once, but twice, that they should get together and have a 'kumbaya' over some drinks and 'figure it out', and by painting an analogy where Adobe is a bear and the open source community is a mere pointed stick (implying that the OS community is just asking for repercussions by promoting themselves), the host revealed a mindset that cannot be peculiar to only himself. One thing is for certain: no amount of effort will ever mask what is in the heart...it will always manifest itself in word or deed or both. Though my post was the catalyst that incited the host to voice his sentiments, the sentiments that were shared existed befoer I ever touched the keyboard and were clearly directed at the entire open source community. The host's choice of phrasing, words, and analogies blatantly cast the OS community in a negative, subordinate, despicable, miniscule role in the CFML landscape.
No animosity detected there!
Though the host expressed the desire that no polarization take place, his choice of words surely did nothing to advance this cause.
And that's all I have to say about that.
Here's why: Apart from Microsoft's well-known bumbles in this space, the ONLY "pay-to-play" web language of significance that's come along in the past has been Adobe's Cold Fusion. Even Sun opensourced vast parts of Java. PHP, Ruby, RoR, Perl, Python -- all free, all open, all extensible, all incredibly liberal and inclusive. It's no surprise that they've earned such dedicated followings.
Adobe consistently proves that they're inept at best (evil at worst) at being stewards of ColdFusion, and it's embarassing to see the fanbois repeatedly say the opposite, while Adobe continues to greedily take their money and squeeze the last drops of blood from an aged, mediocre product. (as an aside: one cannot help but think that if they're loud and idiotic enough, maybe someday they're hoping to be the next coldfusion evangelist? Pathetic.)
Don't believe me? Fine, but let's come back here in five years and see where Adobe's taken things, and see where the courageous and dedicated people behind OpenBD and Railo have gotten.
It's obvious that the only place to be right now in CFML-land is on the Free/Open team, and I salute you, Mr. "Rhymes with Loud," for standing up and saying so.
My entire career has been primarily based on The Allaire/Macromedia/Adobe platform, with the exception of the skills I gained in HTML-based UI development (HTML/CSS/JavaScript). It was the buyout of Macromedia that made me realize just how much I entrusted my career to a commercial product that was, in reality, fragile and at the whim of executives who have to have one goal: keeping the company profitable.
I <3 Adobe. They'd made a lot of things possible for me. But I also realized that I needed to branch out and open my eyes to other platforms. I've managed to become fairly adept with PHP, and have made great strides in learning Groovy and C#. On the UI side I've always been strong with HTML/CSS/JavaScript, but have continued to enhance those skills with AJAX frameworks and other newer technologies (HTML5, CSS frameworks, etc).
If ACF disappeared tomorrow I would have to examine what the OSS CFML solutions offered me compared to other languages I can leverage. I've heavily explored the OSS CFML options and found them lacking for my particular needs. Based upon that, if ACF disappeared tomorrow I would be sad to say that CFML would probably not be preferred backend. I am certain there is a fair percentage of CFML developers who feel the same.
I do believe that there are a large number of small shops and contract devs who would not retrain themselves, and would move to Railo/OBD to continue leveraging their existing skillset.
I do strongly believe that in order for ACF to survive the long haul that it needs to be more open, both in code and engineering. We are entering a whole new era in development where engineers and decision-makers both consider OSS to be viable for Enterprise and large scale apps, and finding less value in maintaining high dollar licensing fees that are better spent on support contracts.
Tooling and languages both have evolved at such a pace that it can no longer be said that CFML is the most RAD, which was historically one of it's biggest arguments for it's use.
So, do I believe CFML would survive without Adobe? Absolutely. But I do believe it would significantly reduce the size of the community, and senior developers would and should consider other languages to enhance their skillsets to stay relevant.
As I said before, I cannot envision CFML fading into oblivion without Adobe's "stewardship", based on my observations above.
Im fine helping improve/guide an OSS product that I am using. But making money and paying the bills are the #1 priority for me. When a product fails to deliver essential functionality I cant wait for it to be built into that product. I have to choose a platform that can deliver now, so that I can get paid now. That is exactly where the OSS products have failed me in the past. The disparity between the functionality of ACF and OSS CF can bite you in the ass.
I do understand that these OSS products will improve over time, and that's why I support them.
TJ,
Do you mind sharing any example of where the OSS engines have failed you in delivering essential functionality?
