In the beginning was the Web, and the Web was with CFML, and the Web was CFML. It was with CFML in the beginning. Through it all websites were made; without it no websites were made that had been made. In it were tags, and those tags were the productivity of all programmerkind. The productivity shone in the darkness, and the darkness did not overcome it.
Ok, maybe I'm overstating CFML a bit, but when it was created it was revolutionary. It redefined how websites were built and set the bar for other web programming languages. And though CFML led the pack for a while, there were soon others to follow. These languages were also productive, came with compelling frameworks, and made building sites fast and fun. Many of these servers were also free and open source and around them large communities grew.
For a while even, CFML was "as good" as most platforms, and today I would even say the CFML language has a lot to offer. But where it started to fall behind was tooling. The main axes I used to hack code looked something like this for years (in order):
If you think about it, most of those were glorified notepad with an ever-increasing amount of toolbars and startup time. They served me well, but other languages started branching out with different kinds of tools that went beyond an editor.
- Tools that lowered the entrance barrier to easily run code natively on your operating system.
- Tools that made common and repetitive tasks quick and easy.
- Tools that made large-scale community collaboration easy.
- And tools that focused on automation.
Yes, while these other technologies branched into realms that attracted developers to the platform, CFML gained new "enterprisy" features like exchange and sharepoint integration, Flex services, PDF generation, and Ajax widgets. These were no doubt attractive features, and some still are, but attractive to a different audience. The problem though was; CFML had fallen behind. While the wider developer community drooled at creating blogs from scratch in 15 minutes, sharing libraries with a million other developers at a time, running code from the command line, and ditching Ant's rigid XML to automate things in a familiar, dynamic language, CF developers toiled over a server environment that was heavy, imprisoned on their servers, and the only headlines it made were its security holes.
Oh, I know what you're all thinking-- It's Macrodobie's fault. "She's a witch, burn her!!" Well, just settle down and while you ponder what else floats in water, remember most other languages surpassing CFML didn't have a fortune 500 company backing them. No, they had active, vibrant communities cranking out cool things, often times becoming rolled into the platform after gaining organic fame within the group. They didn't expect anything from anyone. They banded together and built it. CF's insular, closed source mindset has been as damning as anything.
"Why are you telling us all this, Brad? The BlackList is on in 20 minutes and I'm starting to feel guilty."
Good, that was part of my goal. The other part was to show you the light at the other end of the tunnel. The first thing we have going for us is
Railo Lucee. While Adobe ColdFusion will always play to the enterprise market, we have something free, open source, and progressive to rally around. This is the common man's CFML. The second thing (in my opinion) are the tools being put out by Ortus. Full disclosure, I work with Ortus and have a particular attachment to these tools. Heck, even if the Box stack sucked though, the number of groups regularly putting out suites of modern CF tools can probably be counted on Frodo Baggins' right hand.
This is where CommandBox comes in. It was created to fill a giant gap that has formed between CFML and other platforms. Now, don't be thrown off by the fact it ends in "box". You don't even have to know what ColdBox is to use it. Repeat after me, "Everything box isn't ColdBox. Everything box isn't ColdBox." I don't know how often people ignore all things box simply because they're not using the MVC box. Almost every part of Ortus' box stack is a standalone tool that just to happens to play really well together. When you see something ending in "box", just think, "That's a tool that Ortus made" (FuseBox excluded). ColdBox may have started this whole thing, but it's just a cog in the wheel now.
So, what can CommandBox do for you? Well, namely:
- It lowers the entrance barrier to CFML by allowing you to easily run CFML natively on your command line as well as start ad-hoc CF servers anywhere
- It make common and repetitive tasks like scaffolding sites, installing libraries, and running tests quick and easy.
- It makes large-scale community collaboration easy with box.json, package conventions, and code sharing on ForgeBox
- It allows automation via OS-integrated commands, recipes, and custom commands written in CFML
This is what you've been waiting for people. Well, perhaps you haven't been waiting for it, but you should have been. There's just one problem left-- the fastest sports car in the world still needs a driver, and that's where you come in. The CFML community needs to step up and start embracing these modern practices. We have a long ways to go and Adobe, Railo, and Lucee combined can't solve this last piece of the puzzle. This requires you and me to step out of our comfort zones and try new things. Kick the tires, take it for a spin, and when you're ready, contribute back. CommandBox (and most Box products in general) are free open source software. We love community involvement, a helpful mailing list, and community pull requests. Together, we can do more than any fortune 500 company. Please plug in and become a part of what's going on.