I get asked quite frequently “What made you switch from ColdFusion to Ruby?”. The truth is, ColdFusion is kind of a dead end. I’m not saying its a dying language, in fact far from it. The language is used by many large companies and its growing according to adobe. The truth is there are good things and bad things, however after using the language for a few years I realized the bad out numbered the good.
So lets start with the good things. ColdFusion is a JVM language and utilized the maturity and power of Java and this makes ColdFusion a very robust a powerful server side language. Well, atleast from the stand point of concurrency and memory usage. The language does very well for scalling and utilizing resources efficiently. In this regard ColdFusion is the winner over Ruby, MRI is not very memory efficient, and requires some tricks to establish concurrency and avoid the GIL. However, as far as a language goes efficiency is not the most important factor. Servers are cheap and programmer time is not. Respecitively you can get a 64gb RAM 16 core server for less than the average salary of the average software engineer.
Rapid Application Development
So if servers are cheap and programming time is not, then that brings me to the next point. Application time to market. Simply put ColdFusion was billed as being the RAD (Rapid Application Development) language. This may have been true at one point and may have warranted the 8,000 price tag of enterprise ColdFusion, but in recent years ColdFusion simply falls behind other languages. Ruby is the clear winner in this regard and allows or quicker time to market. This is a huge benefit to a language and explains the large number of startups choosing Ruby over other lanugages.
Ruby has gems, this is awesome especially during initial application development when its crucial to get a product out instead of worrying about how to paginate, or how to handle parsing a CSV, or handling file uploads. Gems allow us to expedite our time to market. This is one area where Ruby is the clear winner.
ColdFusion still does not have an official package management system. Recently the community and more specifically Ortus Solutions wrote a package manager for ColdFusion. Unfortunately this is a bit late and should not have been the responsibility of the community of a very expensive language. If you are paying premium prices for a product it should be better than good and not be available for free on the street corner.
It’s really hard to beat free and open source. Ruby is the clear winner here.
ColdFusion is expensive and can costs thousands of dollars. To get the full featured version of ColdFusion you can easily spend 5000+. For this price tag I feel like you should be getting a ferrari and recently it feels like you get a VW bug with some heavy milleage on it. There are some CFML variant available for free, and these tend to be better options than the Adobe flavor.
This one is a little loaded in Ruby’s favor, since ColdFusion never makes this claim but Matz does make this claim about Ruby. It may not be fair but I am happy when I work with Ruby, and ColdFusion not so much. That one is a little subjective and up for debate, but I support Matz’s claim, and Ruby is one of the more fun languages to work in.
The Ruby community is one of the most vibrant and diverse communities on the internet. It’s wonderful and inviting and follows MINASWAN (Matz is nice and so we are nice). This lend to the community being very friendly and very helpful. I rarely see flame wars happening or name calling in this community. In addition the Ruby community is big on ensure best practices are followed by the community, TDD, SOLID, OO Design, all are part of the communities core values. These things alone are a huge value to the overall community, and new people starting get exposed to this.
The ColdFusion community is very small and not especially active. I think this is one of the bigger draw backs to the ColFusion language. The community is everything. If the community is small and not very active then this does not lend to people learning quickly and causes open source with in that community being almost non-existant. This is not to say there aren’t open source CFML projects, they are usually just fewer and farther between. Additionally the community for ColdFusion does not provide positive pressure on people comming into the community to follow best practices, and its is not as easy to setup TDD, or follow OO priciples. Which brings down the community as a whole.
ColdFusion isn’t exactly a bad language but it does have some major flaws and issues that cannot be ignored. It makes it easy for people to avoid best practices and in doing so brings down the bar for the language. These are just some of the reasons I chose to make the switch to Ruby development. I’m happy I made the switch. I still do some work with ColdFusion, but given my prefernce I would much rather work in Ruby.
I choose a language that makes it easier for me to be a better developer. I choose a language that has a community that surrounds it and forces me to develope at a high level. These are the reasons I choose to use Ruby and embrace it.