Sean Corfield's written an interesting article entitled "CFML - Too Little, Too late?". I recommend you read it. It's not earthshattering and not saying anything that hasn't been said before, but it's nicely composed and is poignant and thought-provoking. And I tend to pay attention when Sean says stuff. I don't necessarily then agree, but I do pay attention ;-)
I started feeding-back to him in a comment on his own blog, but it was getting too long for a blog comment so I thought I'd revise it slightly to add context, and write it here instead.
Sean's article is his feedback on two blog entries elsewhere (this is becoming like... err... what's the PC term for chinese whispers? Yeah, well it's becoming like that anyhow), one was the summary of "CFML 2012: State of the Platform", and another a response to that from Nick Kwiatkowski (I have to admit I wasn't aware of Nick before reading his article).
My reaction to that "CFML 2012: State of the Platform" thing was who are these people? I mean I know their names (but mostly from about 7-8yrs ago when they were last on my radar), but I don't see them representative of today's CF community. Actually when I clicked on the link to the article (I read it last week, I dunno how it got in front of me), I thought I had fallen back through time to when I first started with ColdFusion - so around the turn of the century - which is the last time I saw web pages looking like that. And, I guess, the last time I picked up Fusion Authority. I didn't even know it still existed. Um... now that sounds unduly harsh, and I don't mean it as having a go @ Fusion Authority, but it was more to describe my initial reaction of "oh, hang on... I've misunderstood... this is some comparison back to a conference from ten years ago or something", before realising it was actually published last week. So that wrong-footed me from the start. But I think it's ultimately a reasonable summation of their article.
Having read through the thing, my next reaction was "what is this panel? Who appointed them?" and "man, they kept all this quiet". I was completely unaware of the "State of the Platform" panel. I don't expect everyone to run their ideas past me (but, you know... if you could... ;-), but I spend a lot of time keeping up with as many ColdFusion and ColdFusion-related blogs as I can get my hands on, and they first thing I heard about this thing is the summary of it after the event. Odd. If this was a thing that was relevant to people, surely I'd've heard someone mention it?
They didn't come up with anything that wasn't already painfully obvious, and - like you say Sean - it's all being done too late. The bullet points raised in their "challenges noted" were all blindingly obvious, surely?
- People don't use ColdFusion exclusively. I don't think this is news. I'm almost exclusively a ColdFusion developer, but in all situations I've worked, CF has always been part of the solution, not the entire solution.
- ColdFusion's installation process could be simplified. OK, this is something that people have been talking about more recently. I think it's because Railo is so damned-easy to install, and it's showing ColdFusion up a bit there. Plus other languages people are using are all very easy to install too. ColdFusion on the other hand has a cumbersome install process, and isn't even possible to install on more recent OSes (eg: Windows 8, 2012, and whatever the current version of MacOS is). Adobe need to catch up here.
- There is a perception that CFML is in decline? A perception? Wake up. It is in decline. Things decline. This is the natural course of things.
- It's hard to find developers, and whilst there are advanced and intermediate ones, hardly any new ones coming up. My experience is that there are very few good CF developers out there that aren't already working for someone else. There's a fair few not-very-good CF developers out there looking for work though. Good luck to them.
In feedback John Farrar observed (I'm paraphrasing) that to make something popular, it needs a killer app. So all we need is one of those, eh?. Oh OK, we should definitely do that then. I'll get onto it today in fact. The one thing holding me back from writing that killer app was that no-one pointed out to me that it would be beneficial to have one. Now that I know, I'll just pull something out of my... "kill app idea pool" and get on with that right now. Yeah, OK, I think that was stating the obvious a bit.
The next suggestion I think has some merit, kinda. It was a suggestion that many third-party services such as Amazon, eBay, Paypal etc all have APIs we need to work with, and none of them are overly easy to use on ColdFusion. Well: they actually are easy enough to use if one rolls-up one's sleeves, but a lot of CF developers aren't prepared to do that, or don't know how (and let the fact they don't know how to do something prevent them from finding out). So it would be of merit to wrap these things up in something like <cfamazon> or something (god, no, that was a joke... no more tags please!). The alarm bell that goes off with me here though is that ColdFusion would need to be far more dynamic in its approach to keeping up with technology if it was to take this approach: ColdFusion and its release cycle really hasn't kept up with the rate of change of the rest of the web industry. An example here was a while back it was brought to their attention that the version of Google Maps API that they use in CF is deprecated (and has been for quite a while), and Google tend to obsolete things once they deprecate them. That was met with the electronic version of a shrug from Adobe. And I understand all the JS stuff used on CFFORM etc is always well behind the current state of play for those libraries, etc. One of the more egregious examples I can think of is that the regex engine ColdFusion uses has not seen any work since I think 2004 (CF uses an older version though), and is officially dead (Apache Jakarta ORO). So if ColdFusion can get its act together and play at the same pace as the rest of the industry, then this could work, and this could be good. And also is buzzword-heavy, so easy to market. Not that Adobe do any of that.
One thing that didn't get mentioned was that the thing that made Ruby popular (because as far as I could tell, prior to RoR, it wasn't really), was RoR. So perhaps as well as providing the basic language, Adobe ought to be promoting/including the framework to get things done quickly. Resting on their laurels and saying "CFML is just sooo quick to develop with" doesn't seem to be working any more though.
There are lots of frameworks out there for ColdFusion - indeed ColdFusion on Wheels is a nod to RoR - but none of them seem to have the ubiquitous community buy-in that RoR has. ColdBox seems to be the closest to being the "all-singing-all-dancing" CFML solution, but getting up to speed with it (which I am trying to do as I type) is a bit like wading through molasses at times. There's a lot of stuff to read to get anything done. Fortunately the stuff to read is all there available for me to read, but I still gotta read if first. I do realise that once I do get up to speed with it, it'll be quick to work with. Well that's what I hope.
I think the ColdFusion community's problem here is that there are too many developers who simply don't bother using a framework. Not because they don't need to, because they're too ignorant to (sorry: a lot of CF developers are just f***ing useless at what they do for a living, in my experience... and my experience with other CF developers is pretty extensive). There are a lot of really good developers in the CF community, but there is a very high proportion of people who are clueless and shockingly bad at even the basics of CFML and programming in general. I think this is because it is easy to be productive with CFML. But one can be productive without actually being any good at it.
Back to what the bods from the "State of the Platform" thing were saying...
John is working on a "Learning Center" project. I wonder what this is all about, and does it have any overlap with the "Learn CF in a Week" project? If it isn't... should it be?
The also mention YouTube videos. This I think is actually an interesting idea. Personally I can't stand technical videos or videos as a learning tool (I want text on a page; be it electronic or paper), but that's just me, and I know these videos are popular. This could be a good "viral marketing" tool. And these definitely should be on YouTube, not one some special sort of video thing on the Adobe site which no-one will ever see except for the people that don't need to.
The last bullet point was about an application framework. This reminds me of something the guys on CFHour talked about a while ago... the idea of embedding an MVC framework right withing ColdFusion itself. This might actually encourage people to use one. I think this is a good idea. NB: this is not what they were talking about on the SotP2012 page, but it just reminded me of this. The SotP2012 people were just suggesting that (and this is a quote) 'we could have several groups of 10 developers working on our "killer" apps, using a common framework'. This sounds really naïve to me. You're just going to magic-up these 70-odd developers, and the killer-app ideas, are you? Good luck with that. No: seriously... good luck.
So what did Sean have to say about this (the focus of this article of mine has shifted from where it started, I have to admit).
Sean summarised the two articles, which I won't dwell on. He goes on to point out that just because ColdFusion is in its twilight, doesn't mean it just ceases to exist as soon as someone says "ColdFusion is dead". It'll be around for a while yet. However this does have ramifications for those people in the community: it's perhaps time to get more strings in yer bow. I need to take this advice myself, actually.
Sean also makes the observation that ColdFusion is a bit unwieldy to install, and compares it to Railo. Something I have done as well. ColdFusion needs to sort this out. I cannot say this enough times. This is a very real consideration. Every now and then I have to do something in PHP, but it's so infrequent that I'm usually on a machine that's been rebuilt or replaced since my last foray into it, so I need to reinstall again. But I do so, because it's really quick to do. If I was to mess around with Python or Ruby, one of my expectations would be that I can crack on with writing "Hello World" within a few min. I find installing software tedious, and want to spend as little time doing it as possible. I think Adobe's approach here is one of "well one only uses the installer once in the lifetime of the the product", which - whilst true - misses the point that it's a barrier to entry to using the product at all. It also has the notion that the product's life time is a long one: not so when people are first investigating things.
At the very least, ColdFusion needs an express install which just does it. Assumes all the answers to the questions, and just gets on with it. It doesn't even need to set a password to start with - a lot of experimental installs are not going to be outward facing, so a password is just a hindrance - or just use a default password and be done with it. This is easy.
Sean says he gets a lot of feedback along the lines of "ColdFusion? Really?" and the normal reaction of surprise that it still exists, etc. There's not a lot we as the community can do here: it's up to Adobe marketing it properly I think. So that's a lost cause. Railo will be no help here because - as Sean points out - even most people within the ColdFusion community haven't heard of it, let alone outside the community. So what Railo will be doing is eroding and dividing the existing community, not building it (Sean did not say that last thing; I'm just following on from what he said).
Following the theme of what we (CF community members) need to be looking at in the future... basically looking out for ourselves. The message is to diversify, I think. Not abandon CF necessarily, but to make sure we've got a solid grounding in complementary skills. He mentions the general ignorance he sees in the CF community on topics like TDD (even the concept of unit tests is foreign to a lot of people), source control (a lot of people don't use source control still. Everyone should learn how to - and then actually use - GIT), and other odds and sods that I see as less relevant (agile techniques, etc. My belief is that Agile is just something to give team leaders to do to interfere with the productivity of the team, but perhaps that's just me. It's all way to nebulous and touchy-feely for me ;-).
Sean's bottom line is that whilst it's too late for ColdFusion, perhaps, it should not be a nail in the coffin of a ColdFusion developer's career prospects. It should, however, be a stepping stone to something more forward-looking that ColdFusion is, as a career prospect.
I think he's right. Now I'm 42, so I don't have age on my side either, but not a day goes by when I don't chide myself for not opening a book and learning something new, and then somehow trying to get it into production so I can safely say on my CV that I actually can use that technology in a commercial way. I'm just devoid of ideas and motivation (and I'm a time waster... I've been sitting here writing this thing for 1.5h now!). I think I either need to focus on C# or something if I am to continue with server-based applications... and we have a reasonable amount of .net at my place of work; or I should maybe look at knocking together some mobile apps on Android. Both sound fun. I could probably "get to market" faster on Android than I could with C# though, unless my bosses want to help me move from the ColdFusion team to the .net team...
Now... where's my C# book...