In this year's State of the CF Union survey report, we have detailed breakdowns of tools and techniques used by the top CFML developers around the world. This year we had 602 responses to the survey, which is up over last year.
Before we begin with the results, we'd like to thank everyone who participated and responded to this year's survey. And a special thanks to Brad Wood who helped me edit the survey questions and reviewed the results with me.
And in the unlikely event that you are new to ColdFusion. It is a development platform for creating modern web applications on the JVM. The CFML language has tags that resemble HTML syntax for templating HTML and script that resembles JavaScript syntax for writing business logic. It is designed to be powerful, expressive and easy to get started coding in. Many features are built into ColdFusion that require add ons for other languages.
Table of Contents
CFC Dependency Injection Framework
Testing and Mocking Frameworks
Other Languages/Environments Used
Attendees of ColdFusion User Group Meetings
Conferences Attended by Developers
Mobile Development Frameworks Used
(Part II)
Types of Deployments Being Used
CFML Engines Used
CF11 is now the most used CFML Engine with 51.8% of the votes. CF10, which was in the top spot in 2015, is now the second most used CFML engine. The open source Lucee Server is coming up fast in third place. BlueDragon Commercial got the lowest of votes, the same with last year's result. “It is dead Jim.”
I am surprised by how many developers are still using CF 9 or earlier. CF 9 went end of life in December 2014 with no more security patches being issued by Adobe. Ditto for earlier versions. If you are running CF 9 or earlier you are just asking hackers to steal your data and crash your server.
While we didn’t list the upcoming CF 2016 (aka CF12) in our survey as it is not released yet, some developers are already trying out the beta version on their apps. Partly to try out new features and also so they can influence the future direction of ACF.
Type of CFML
The result is no different compared to last year's. Enterprise is still the most used CFML engine among the survey respondents. Which indicates how much ColdFusion is used for enterprise development and hosting mission critical apps.
For me one of the most useful Enterprise features is separate instances. This let you host different collections of websites in different CF instances and if one instance runs slow or even crashes the others are not affected. This is great for keeping “bad” apps from upsetting “good” ones. Or just for keeping resource hogs like reporting from slowing down other apps.
CF Server OS
Most developers are still using Windows for their server with 83% of votes. Linux came second with 41% of votes and Mac with 15% votes.
While Linux may have security or cost advantages, the commonality of Windows admins and servers makes it a common choice for running CF on top of. In addition many CF shop use MS-SQL Server which is another reason for using Windows. Just be sure you keep your Windows server patching up to date to prevent new hacker exploits, as this is a major way that servers get compromised.
Browsers/Client Platforms
The top three browsers are neck and neck in being supported by applications. Chrome is just ahead with 94% of votes, followed by Firefox with 93% votes and Internet Explorer on the third spot with 91% votes. Safari comes up with a respectable 62% and Opera is way behind at 26%.
Interesting app support for mobile is growing with both iOS and Android being supported by 50% of apps. If your users are out on the streets or just in the corridors of your office building, you should look at supporting mobile browsers. In the CSS Framework Used part of this year’s survey most developers are using Bootstrap, which is a good example of a responsive CSS framework that makes mobile and desktop browser support from one code base easy.
Databases Used
Most developers who participated in the survey are still using MS-SQL Server, taking the top spot with 78% of votes. The open source MySQL got the second spot at 55% votes.
SQL Server is the most common database supported in businesses, can handle larges amounts of data when correctly tuned and has an easy-to-learn interface, so no surprise that is is the go-to database for ColdFusion. However saving thousands of dollars on licensing by using the open source MySQL has obvious appeal. And as MySQL features, GUI options and industrial strength performance have been catching up with SQL Server over the past few years, more developers are using it.
Some CFML developers, who are evangelists for the open source movement, see MySQL as part of a CF alternative to the popular all open source LAMP stack; using the open source Lucee in place of PHP to provide the CFML application server.
(FYI there is a free version of MS-SQL, Express, which works well for smaller databases. Thanks Russ for pointing that out!)
Honorable mentions this year go to MongoDB for leading the NoSQL document based database movement in the CF world. And for MariaDB, a MySQL fork, that provides open source clustering with Galera – we have seen several clients this go to this set up for more reliability and geographic automatic distribution of data.
Some 8.5% of CFers still run apps on Access. A bad idea for any public sites due to security and performance issues but an easy way to start an intranet app if you don’t have other databases available. As the interface to SQL Server is so similar to Access and the upsizing process is straightforward I don’t see the point in remaining in Access these days.
Whichever database you use make sure you keep its patches up to date and lock down any insecure features, such as the ability to run shell scripts from SQL. SQL injection is the number one way web applications get hacked, so you want to protect against that too in your database code and CFML.
Also before you complain about the slowness of your database or CF code and throw money at more memory or CPUs, consider that the main cause we see of slow apps in our optimization work is poor SQL and unoptimized databases.
Code Frameworks
FW/1 and ColdBox are joint top frameworks with 28% of votes each. A lot of participants still use custom/home grown code frameworks, which got the third spot. And the first ColdFusion framework, Fusebox, is falling behind.
If you are not using a framework then consider it as a way to organize your code to make maintenance easier and to provide building functionality for your app so you don’t have to re-code it every time. The advantage of a pre built framework over a homegrown one are that there is a community of other developers using it who can help you out if you get stuck and that others are adding new features for you.
Javascript Libraries
jQuery is again the most used Javascript library this year, same as last year. It got a total of 93% votes, while Angular JS taking the second spot with 32% votes. Using jQuery is almost universal these days. It provides cross browser support for working with the HTML DOM, AJAX, form validation.
Angular takes a more radical approach, replacing the static DOM model with its own dynamic programming system build on top of JavaScript. It provides all the features you want for creating modern web apps on top of a ColdFusion backend.
CSS Framework Used
As we mentioned early, the leading CSS framework is Bootstrap with 74% votes. Why? Because it makes creating responsive web apps that will run on desktop, tablet or browser from one code base easy.That it works well with the most popular JavaScript library, jQuery, helps too. There are also BootStrap components for Angular.
CFC Dependency Injection Framework
50% of the participants are not using any CFC dependency injection frameworks which blows my mind. Unless you only have a few CFCs you need some way to test and mock out objects while you build them. And lets you easily swap out one implementation of a service for another without affecting other code. If you are new to DI this stack exchange answer give some background.
The top DI framework is Wirebox, which 20% of developers are using. It works well with the other “box” frameworks. The FW/1 family of components DI solution, DI/1 – Inject One, is nearly as popular with 19% of votes. Really if you are using a lot of CFCs you should use one of the dependency injection frameworks.
Persistence Frameworks
Most of the participants are not using any persistence frameworks, which is weird considering OO Usage question where 90% of developers are doing some OO coding. Means that the majority don’t use OO for a data layer between the application and the database.
For those persisting data in objects nearly all use the built in ColdFusion ColdFusion ORM* (Hibernate). Transfer (nice explanation of ORM) and Reactor which were popular with OO first came to ColdFusion are nearly dead.
* ORM = Object Relational Mapper. It generates and populates CFCs that are Objects that represent the data in your application based on an XML configuration file. From there, it is able to automatically insert, update, delete that data into, and out of your database, without you having to write any of the SQL or CFML to do it. (Text from above Transfer link)
If you think that your database might change radically in the future or you love objects to do repetitive data work for you, then you should be using ORM.
Testing and Mocking Frameworks
The results are exactly the same as last year's. Most developers are not using any testing framework for test automation. Which given how much Test Driven Development improve your code quality is surprising! (TTD is where you write the test first, then write the code. And continually test until your code passes the test. It makes refactoring code and automated re-testing easier. It also means that your code can nearly always pass a TTD is where you write the test first, then write the code. And continually test until your code passes the test. It makes refactoring code and automated re-testing easier. It also means that your code can nearly always pass a smoke test.
Those that do use testing frameworks go for TestBox with 24% of votes and MXUnit with 23% votes. As TestBox is backwards compatible with MXUnit scripts I image its use will grow over time. One of the original automated testing tools, TestBox is backwards compatible with MXUnit scripts I image its use will grow over time. One of the original automated testing tools, Selenium is still used by 14% of developers.
Even fewer developers are using mocking frameworks than do test driven development. I hope that will improve over time because in larger projects mocking or stubbing out code lets your code be testable before all the pieces are complete. It let’s you write and run those automated tests before you write the full code. The leading CFML mocking framework is MockBox, which as you might guess works well with TestBox. Actually given the usage of MightMock being close to zero I could have said more than leading, but lets leave it at that. More on Why Mocking Matters in this blog.
Code reuse
Nearly 100% of CFML developer do code reuse. Take a pat on the back CF community! The years of spagetti code are behind us.
The most popular method is CFCs, while the old methods of CFIncludes, custom tags and custom functions are also heavily used. We didn’t include SQL stored procedures in our survey this year and that is another common way to reuse database code, as someone mentioned in the survey comments.
Source Code Control
Source control is a subject close to my heart, as I starting using it on a VAX in my first programming job, and then having learned it was made source control manager on a 60 person Oracle project. It save our bacon on backing out mistaken changes many times. No more checking if Fred or Jane are editing the same code I am with file locking. I moved on to PVCS, CVS, MS-Source Safe (now Team Foundation Server), Subversion and currently Git. (Even more source version control systems that that exist, it is a popular software category!)
The open source Git got the top spot this year with 51% of votes, while the related commercial GitHub and BitBucket come in strong as a way to have private Git repositories and other features such as user permission for organizations. (BitBucket cloud private Git repositories are free for upto 5 team members or more if you are in an .edu, so there is no reason not to try it out)
Git is great at easy branching and merging back code changes from other developers. And it distributed approach is great for teams. You can create a branch to try out an idea, commit a few times, switch back to where you branched from, apply a patch, switch back to where you are experimenting, and merge it in. Or if your coding experiment doesn’t work out, delete the branch without anyone knowing.
As you can image this is great if you are doing agile development!
The open source Subversion is still used, but is not as popular these days as it once was. It is not distributed and runs slower than Git.Git.
Surprisingly about 25% of developers don’t use source control, or run homebrew solutions such as zipping up folders every so often, copying directories or comparing files. These developers are missing out on being able to track code changes through different versions, easily roll back “bad” changes, and automatically merge changes with other developers.
Tools/IDEs Used
The IDE is where CFML developers spend most of their time coding, so the productivity of your IDE is key. The shareware SublimeText is still the most used tool/IDE this year. The commercial ColdFusion Builder got the second spot and the freeware Notepad++ at third spot.
Browser Dev Tools
For browser development tools, Chrome still got the first spot with 81% of votes. Second is Firefox with 58% of votes, third is Firebug with 53% of votes. The results are the same as last year's.
CFML Usage
Most of the participants in the survey have been using CFML for more than 15 years; 46%. The second 30% has been using it for more than 10 years. There are 0.36% of the participants who are still new to CFML and are using it for less than a year.
It is unclear whether CF surveys reach more experienced users better due to Slack, blogging and tweets being read more by them. Or if few new developers are learning CFML. Perhaps a bit of both.CFML. Perhaps a bit of both.
The good news is that Adobe Complimentary ColdFusion Standard is available to all education institution’s students and faculty for free (for learning/teaching, not production use) and the open source Lucee CFML being free to all users. So there is no longer a barrier to new developers learning CF.
OO Usage
For Object Oriented code usage, 34% of the participants have been using it for 6-10 years. 26% are using it for more than 10 years. There is still 8% who are not using it at all. If you haven’t started using OO in your ColdFusion code then 2016 might be the year to try out some CFC coding!
Other Languages/Environments Used
Naturally JavaScript got the top spot with 88% of votes, which is the same as last year's. AJAX got the second spot with 49% of votes, while Java got the third spot with 33% of votes. With PHP and .Net trailing a bit.
CFers as a group program in a wide variety of other languages! JavaScript and AJAX are both front end languages that all back end web developers can use. Java on the other hand is another back end language and it the one that CFML compiles into. So it makes sense it is the top other language used.
Attendees of ColdFusion User Group Meetings
User groups meeting are a great way to meet other CFML developers, learn new techniques and tool and get problems solved. 63% of the survey participants do not attend any CF user group meetings. Maybe because there is not one near them (as some survey comments say). Or perhaps people don’t know what they are missing out on, or are too busy at work/home to attend. If that is the case checkout the ColdFusion MeetupMeetup (organized by Charlie Arehart), which has over 300 meeting under the belt with recordings.Arehart), which has over 300 meeting under the belt with recordings.
Conferences Attended by Developers
Similarly conferences are a more in depth way to meet other CFML developers, learn new techniques and tool and get problems solved. Among the participants, 21% attend the dev.Objective() conference, and 20% attend the Adobe ColdFusion Summit.
There are 52% of participants who do not attend any CF conferences. I think they are missing out big time. On learning new CF and other technology programming techniques, on networking with their peers and speakers and just in general being fired up about CF! If you can not afford the big conferences time and money then try a smaller regional one such as NCDevCon or CFCamp.
Mobile Development Frameworks Used
PhoneGap is the most used mobile development framework this year with 20% of the vote. Second is Cordova, while Angular focused Ionic got the third spot, which is about level with native iOS and Android development. All 3 frameworks are open source.
A mobile framework lets you code once while it deals with the details of iOS or Android SDK and store requirements so you don’t have to.
Still, 64% of participants do not do any mobile development. Which given the growth curve of mobile and tablets seems strange. Perhaps some of them use responsive layouts to address mobile users.
CFML Challenges
For CFML challenges, 54% of the participants say that they encounter CF “dying”/legacy issues. Second most encountered challenge is maintaining someone else's badly written code. Third most encountered problem is hiring CF developers. Having bugs in ColdFusion also got 26% of votes, while 29% of the participants have a problem with lack of marketing/PR for CF.
With Adobe CF 2016 (aka version 12) around the corner and Lucee leading the open source CFML space, ColdFusion is here to stay no matter how many times a “CF is dying” thread pops up on its annual comet like journey around the developer sun.
Caching Solutions
Majority of the participants use EHCache (built in to CF) for caching solutions. 37% are using Railo/Lucee cache, while 27% are using CacheBox.
If you have a high volume application and are not using caching then you are missing out on easy performance gains.
Miscellaneous Frameworks
CFML command line and package management tool CommandBox is being used by 81% of the participants who use a miscellaneous framework, while 35% are using logging library LogBox. CFML based Web Application Firewall FuseGuard is being used by 14% and documentation tool DocBox with 12% of votes.
Monitoring Tools
Real time monitoring of your server for slow downs and crashes is key to having high reliability for your app. For monitoring tools, FusionReactor got the top spot with 48% of votes. The new version even allows real time production debugging when you have problem. ColdFusion Server built in monitoring tools got the second spot. 26% of the participants are not using any monitoring tools.
Get part II of the State of the CF Union Survey 2016 here.
And to continue learning how to make your ColdFusion apps more modern and alive, I encourage you to download our free ColdFusion Alive Best Practices Checklist.
Because… perhaps you are responsible for a mission-critical or revenue-generating CF application that you don’t trust 100%, where implementing new features is a painful ad-hoc process with slow turnaround even for simple requests.
What if you have no contingency plan for a sudden developer departure or a server outage? Perhaps every time a new freelancer works on your site, something breaks. Or your application availability, security, and reliability are poor.
And if you are depending on ColdFusion for your job, then you can’t afford to let your CF development methods die on the vine.
You’re making a high-stakes bet that everything is going to be OK using the same old app creation ways in that one language — forever.
All it would take is for your fellow CF developer to quit or for your CIO to decide to leave the (falsely) perceived sinking ship of CFML and you could lose everything—your project, your hard-won CF skills, and possibly even your job.
Luckily, there are a number of simple, logical steps you can take now to protect yourself from these obvious risks.
No Brainer ColdFusion Best Practices to Ensure You Thrive No Matter What Happens Next
ColdFusion Alive Best Practices Checklist
Modern ColdFusion development best practices that reduce stress, inefficiency, project lifecycle costs while simultaneously increasing project velocity and innovation.
√ Easily create a consistent server architecture across development, testing, and production
√ A modern test environment to prevent bugs from spreading
√ Automated continuous integration tools that work well with CF
√ A portable development environment baked into your codebase… for free!
Learn about these and many more strategies in our free ColdFusion Alive Best Practices Checklist.