In particular, consider some of these phrases (I've substituted ColdFusion for Ruby [I originally mistyped "Java" here so thanx to Paul Kenney for spotting it in minutes]) in Gregg's words:
"dynamically typed languages like ColdFusion will always be more productive than statically typed languages such as Java. In addition, he is not too fond of Java's C++ like syntax and the fact that the primitive types are not objects"
"Tate recognizes that ColdFusion could end up being the next Smalltalk, which he describes as not necessarily a bad thing. He thinks it much more likely that ColdFusion will instead be a huge mainstream success. What he did not provide, and what risk-averse development managers could use, is a description of the signs to watch for that indicate that he's wrong and that ColdFusion is in fact becoming the next Smalltalk"
We're used to being a niche language (like Smalltalk) but what an interesting proposition that we could become a mainstream language.
So you have to ask: why Ruby? why not ColdFusion?
I can only think of very a few things - mainly at the authoring environment (Flash Forms can be a pain to layout, tweak, etc). After using some of the new MX7 features like Charting and PDF/FlashPaper generation a bit of work there - but still I am blown away.
18 days from start to finish - Flash Form based CF application - dynamic charting - PDF/FlashPaper generation - my main issue was how time consuming it could be to "tweak" the flash forms in Dreamweaver 8.
Save. Reload. Tweak. Save. Reload. etc.
I know that MX8 will rock - I am just not sure how!!! Which is almost a good thing! But better design time Flash Form tools would be a god-send - Flash Player 9 makes using substantive flash forms even easier.
I'd like to see the simplicity of ColdFusion combined with the syntax of ActionScript 3 (as a replacement for CFScript?). Then I can use the same syntax across server (ColdFusioon), browser (Flex), and desktop (Apollo).
and now you can run ruby in java.
to me, the main benefit of coldfusion is the cfquery tag, which is generally considered bad practice these days, especially compared to ActiveRecord or CF ORM frameworks.
i'd like to some major improvement in cf8: better handling of input to web services (WSDL2CFC would be nice), actionscript in cfscript, ajax integration (using Spry, no doubt), object persistence, smarer template caching settings, image manipulation, exhange and/or office integration
Please correct the following issue(s)::
You must include a valid email address. An unknown error occurred - contact the site administrator
They also want to learn a "real language." Ruby can be used for one-off scripts, GUI programs, and web sites.
I can't speak for the enterprise, which was the target of the reviewed book, but for individual developers I don't think the question is "Ruby or CFML"; the real question is "RoR or CFML + Model-Glue + cf.unit + ColdSpring + Reactor + some other stuff." My guess is most mid-level programmers are exposed to the framework first when they pick up Rails, and only later do they really pick up Ruby. For CF the process is reversed.
Just my two cents: Adobe can keep CF competitive by picking a whole kit (framework, unit testing, etc.) and making it "official."
I think his writings provide great perspective to a Coldfusion developer regarding the software industry.
I don't know how Rubyists live without CFDump and CFQuery though.
I have no intention of moving to Ruby, but I think it's good to see how Ruby and Rails have tackled the same design problems.
... and yet, we're moving to JSP and Java - just to support Blackboard LMS. I can't even get them to upgrade the existing servers to CF7 (let alone 8 whenever). Sheesh! management....don't you just love 'em...
If CF advocates want the buzz and adoption of Ruby, you'll need to give a very compelling arguement about how CF fills some niche or need that Ruby and Java both do not. It cannot be pitched as a direct competitor to Ruby (ie- replacing CF for Ruby in the article). You'll need to come up with your own unique case.
that's not fair. I'd never heard a peep about Ruby before it became popular _because_of_rails_. In my mind, CF has been around a hell of a lot longer than Ruby, and like Ray Camden, I can't see what the fuss is about the language itself anyhoo.
1) what's so darn special about Ruby (the core language) that makes it better than CF? 2) if CF-on-Wheels or Reactor+MG+ColdSpring had been around before R-on-R and got the hype, where would this conversation go then?
Ruby is just as old as CF. Ruby was released by Matz in 1995. The first version of CF was released the same year. Ruby's popularity in the US spurred by Rails is certainly a recent phenomenon, but the language itself was popular in Japan long before DHH adopted it.
Whether you agree with they hype and fuss is one thing. But not understanding the fuss at all means you'll never get why Ruby is gaining mindshare while CF remains stagnant. This is also true with respect to Ruby's technical merits.
As for your actual questions:
1) As I said, I'm not familiar with CF itself, so I'm in no position to make a full comparision. However, Ruby begin life as a full fledged general purpose language, not explicitly tied to the web or databases. It has many strong influences from Smalltalk, Perl, and Lisp that make it very powerful and useful outside the realm of the web. Not understanding these other languages will also make it difficult for one to understand how CF compares.
2) Those are two incredibly big "ifs" particularly the one about hype. The hype factor is hard to deal with because hype's not necessarily rational, predictable, or explainable. However, even if CF had such frameworks earlier that would not diminish the appeal of Ruby as a replacement for Perl and competitor to Python in areas outside of of web development.
Arguing against Java or Ruby on the basis of fairness will not win mindshare. Even just presenting technical superiority is not enough. To win minds you have to solve pain points. You have to go above and beyond the solutions presented before. You have to make the benefits so great and the cons so small that the net result is migration to the alternative technology is cheaper than remaining with the mainstream. And even if you do all that, sometimes you still simply need to be in the right place at the right time.
What's the point of a hypothetical? Who cares?
One of the reasons RoR is hot is that it's an integrated package, unlike "Reactor+MG+Coldspring." And it's got envangelists who are smart enough to make a "you-can-build-a-blog-in-15-minutes" quicktime, instead of an "oh-yeah-well-I-can-make-one-too."
Marc, I'm sure I'm not the only one bitten before where "integrated packages" just can't cope (eg bolt-ons to legacy systems - 777 tables and not a PKey to be seen - they're all multifield unique indexes). It's a shame when it'll only work downhill with a tailwind....
but that what I was getting at with the language+framework. Take away Rails and what have you got? what's so special about the language? powerful constructs never seen before in a language? wonderful syntax that gives you orgasms to write?
and if it really comes down to the "integrated package" idea as a marketing tool then that's a shame that the CF community (or MACR/Adobe + New Atlanta) got beaten to the punch.
I'm just after a more complete understanding of how Ruby is stealing CF "ground" (ie: alternative to Java) - which ties in with Sean's origional post.
it's just sad that key ppl here are less interested in seeing the servers upgraded to CF7 than playing around with a new toy [url]plas.fit.qut.edu.au/Ruby.NET[/url]
Maybe it's a matter of branding. Perhaps the ColdFusion, Model-Glue/MachII, ColdSpring, Reactor combo could be rebranded as a package too. What about ColdFusion-on-Skis or something!? Or staying on the nuclear theme what about ColdFusion FastBreeder!?
And no, before you ask, I'm not currently gainfully employed in advertising...
I like it!
I don't have a lot of CF experience. I think that I see two problems. One, its slow. It may not really be slow, but the web apps based on it at my company and apps like MySpace are slow. Because of things like that, entry level web developers shy away from it. Two, you mention that it can be free, but thats not the primary method. Most people learn CF through Adobe/Macro. programs and then move on to learn the free solutions. The same goes for Flash.
As far as ruby, I see a few things. The syntax is very simple, it encourages small classes. Blocks. Meta Programming is rather nice. The OSS ideology. Finally, the gems system rules, I haven't seen anything like it. Yes, it is basically libraries and the likes, but it is nice that all you have to do is type 'gem install rails' and you have the entire RoR framework installed.
I don't want to beat down on anything else, I just want to give my 2c as to why I focus on learning Ruby not Python, PHP, or Perl. I would love to hear rebuttals that could interest me in ColdFusion, and I like the name ColdFusion FastBreeder :)
I agree that CF can be slow now and again. However, more often than not, this is down to bad application architecture. Some parts of CF are horribly slow and you'll want to use Java for those bits (seen lots about using the StringBuffer class recently). FYI: MySpace doesn't run on CF any more. It runs on ASP.Net - the fuseactions and other querystring parameters are mapped to the new ASP.Net app. At least that's what I've read on several sites.
My explanation for RoR being 'cooler' than CF is that it does everything and it's all built in. ActiveRecord, unit testing, MVC methodologies, etc, etc. I bought a book on RoR to see what all the fuss was about and I have to say that I absolutely loved it. CF doesn't have most of this functionality built in, so you have to go and research to find out how to integrate something like unit testing into your app. If you didn't look at this when you were picking up CF, you risk getting stuck in your ways and thinking it's not necessary. However, the 'definitive' RoR book tells you about unit testing and how to use it in your app. If you learned RoR before CF, I really couldn't blame anyone for thinking CF is far, far inferior.
Just random musings. Hope some of it makes sense ;)
Might I ask what the title of the 'definitive RoR' book is? And the author?
Thanks.
> Might I ask what the title of the 'definitive RoR' book is? And the author?
"Agile Web Development with Rails" by DHH, Dave Thomas and Mike Clark
DHH (David Heinemeier Hansson) is the original author of Ruby on Rails.
I think the real hype is over Rails. The Rails API is easy and pretty uniform for controlling a number of web/DB technologies, and the helpers are fantastic.
I think if you want to get the word out on the street about the advantages of CF, a good place to start is on Digg. There is a Rails story promoted to the home page almost every week. If CF got some visibility there, it might help create more a "grassroots" movement instead of your traditional top-to-bottom corporate marketing approach.
"dynamically typed languages like ColdFusion will always be more productive than statically typed languages such as Java. In addition, he is not too fond of Java's C++ like syntax and the fact that the primitive types are not objects"
"More productive": that's assuming that you don't have a tool to manage compilation/deployment for you. The Tomcat Eclipse plugins do just that, and the WebWork framework has a QuickStart tool that can dynamically reload classes once they're modified. I know people in the Java open source community are lobbying Sun to add additional support in the JVM to make this more powerful. It's very possible that within a year or two that Java development will be very similar to working with a loosely-typed dynamic languages like CF, Ruby, PHP, Python, etc.
"Java's C++ like syntax and the fact that the primitive types are not objects"
Syntax is personal taste. JDK5 adds support for autoboxing so Java's primitives (int, long, boolean, etc) can be exchanged with the Classes in java.lang (Integer, Long, Boolean). Problem solved.
Additionally, JDK6 / JSR-223 will provide support for scripting langauges directly into Java. Macromedia and Zend (PHP) were both involved in this effort.
-Cliff
All the talk on this blog has been Reactor/MG/Coldspring, which feature the ease of development of Java, combined with the consistent syntax and open source basis of Coldfusion. It looks like a brilliant (seriously, very sharp programming) solution to the wrong problem.
Sheesh. Has anyone really heard developers wishing CF were more like Java? But that's the direction I saw here and elsewhere for months while I evaluated frameworks. Flex is being touted as "Java-like." That completely tore it for me; I'm a Rails developer now.
I really tried to stay with CF; I did -- but the only framework that competes with ROR (CFWheels) gets no buzz, no recognition that I can see. If the CF community got behind CFWheels the way they did behind the "Java-lite" technologies, I'd still be a happy CF developer.
Bottom line: Ruby is the price you pay to use Rails -- and Rails is worth the price. Ron
4 words: Active Record , Form Helpers
I don't want to flame anyone, I just want to really understand what Ruby (with/without rails) strengths are and where CF has gone "wrong"
is Ruby *still* worth it, even if you can't use Active Record and Form helpers ('cos it's a dog of an app - full of gnarly "micro-logic" at every level, no PKeys and an unsupported - for Ruby - database**: Informix). This is what I meant about such 4GL helpers (CF ones included) only working "down hill with a tailwind"... it's a one trick wonder?
(** the Rubyforge Informix/Rails adapter seems to be stillborn, and because it hasn't got a company the size of Adobe behind it, would _you_ trust this critical piece?)
Dude... In my humble opinion, no-one can really answer that (in terms of Ruby/RoR vs CF) for you; it's all down to personal taste, what you want from a web-app server, and how each option mixes in with your business requirements. Do the same small project in each language and make your own mind up. Each will have pros and cons, some you can trade for the other, etc.
It's down to what you need the platform to do more than anything. CF is great at some things and shocking at others. As an example, I had a huge barney with CF the other day because there's no SAX parser. Most people will never have even the smallest inclination to use one in a CF app so it's not a big deal to them, but for the project I was working on it was a huge deal. I got round the problem by writing (or horribly hacking) my own together. I let CF off the hook this time though, because I know how great it is at other things that I do far more often.
true enough, but it's two seperate (but related) questions and it's other ppls's opinions I'm interested in. I'm stuck with my own situation being dictated by my empolyers in the short term and where I want to go career-wise in the longer term.
>> It's down to what you need the platform to do more than anything.
that is soooo true... and it also includes frameworks. one size does NOT fit all, I've found (the hard way). That gnarly 777-table app I mentioned? not even Doug Hughes' Reactor would cope...
Good point. That is also one of the problems with all of this hype. Some people are using rails where HTML and JS would do.
>>'cos it's a dog of an app - full of gnarly "micro-logic" at every level, no PKeys and an unsupported - for Ruby - database**: Informix
What do you mean by this? I am not sure what you are refering to with "micro-logic" and no PKeys (primary keys?). As far as Informix, I think the problem there is mainstream. Most people want to use RoR and Ruby with Oracle, MSSQL, MySQL, SQLite, or PostGRES. I haven't heard of Informix, but that probably has to do with not doing a ton of DB-Driven apps yet.
I won't bore ppl with more details (irrelivant really) but it was a legacy app (and DB schema) that was being rebuilt "for the web"... and the bosses knew best (ahem!). But I was just trying to make the point that not all web apps can be written completly from scratch - which is what RonR (and frameworks generally) seems to work best with... the more complex/F***ed-up the design, the less it helps.
However,CF doesn't even pretend to do desktop, and for general data-munging, it's not really a contender. In fact, CF is completely irrelevant outside RAD for the Web, and now they're not even the best at doing that. I mean, how long have we been asking for graphics capability like Python, Ruby, PHP, etc. include for free -- let alone a framework like Rails?
Apparently, they are focusing on attracting disaffected Java developers. Ruby is not especially Java-like; it's more Smalltalk-ish. Python, though, does feel Java-ish, and is a lot quicker to develop. I'd bet on Python (which has at least two reasonable Rails-style frameworks IN USE) over CF in that market
However, I've done all three, and for a site of any serious complexity, Rails has no competition at all in the RAD Web arena. None.
It's completely outclassed CF in its strongest area, and Adobe doesn't even seem to notice.
Ron
sometimes it takes another viewpoint to see that the Emperor is *really* walking around starkers!
1) Ruby on Rails is good stuff. Very fun to use!
2) Ruby is okay as a language, but I think I prefer Python for anything that isn't web development. But since both play well with YAML and JSON and REST, I can use both Python and Ruby easily together!
3) Model-Glue:Unity is the killer framework for ColdFusion. Very fun to use! The downside is the XML situps. Python convinced me that less XML is better. Also, it would be nice to have a feature that converts MG:U output to JSON or YAML or something useful for REST. Many Python frameworks do this now, so why not MG:U?
4) On Java: I am about 5 times more productive in Python than I am in Java. I think the more that the CF gurus steer development in CF away from being Java-like, the better.
5) XML situps suck. To paraphrase someone else's paraphrase, if you you have a problem, and you add XML, now you have two problems.
Yes, that's why I got so wound up. The original question was straining at gnats (Ruby) and swallowing camels.(Rails)
To paraphrase Daniel:
IF the big question is, "General Java developers -- where should they go when they're sick of crying themselves to sleep?", then Python is probably the best answer. Ruby is second (arguably) and ColdFusion self-eliminates (doesn't do desktop.)
IF the big question is, "Strictly-Web Java developers -- where should they go when they're sick of waking themselves up screaming?", then RoR is a great answer. Python is second (TurboGears or Django), and ColdFusion self-eliminates (doesn't do graphics, wierd OOP, verbose syntax, ugly URLs, etc.)
What's left?
Ron
Well no it doesn't. However, Java does, and therefore so can CF if you try hard enough. It's quite possible to call up Java2D or even Java3D from CF. However, you're going to have to know at least some Java, and I doubt it's anywhere near as clean as alternatives in other languages. Or you could use the canvas, but that limits the browsers that will be able to see the graphics.
Your points about weird OOP and verbose syntax are completely fair and are things that have been winding me up a lot recently. I've been using mixins and duck typing a lot of late and I still feel dirty whenever I have to use them. I'm not sure what you mean by ugly URLs - I know CF can support search engine safe URLs if that's what you mean.
as you said about CF and graphics: "Java does, and therefore so can CF if you try hard enough. It's quite possible to call up Java2D or even Java3D from CF."
I agree, but Java was what the hypothetical developer in Sean's post was trying to avoid!
As far as ugly URLs: I slipped back into comparing frameworks again -- sorry if I wasn't clear. None of the CF "Java-lite" frameworks support pretty URLs out of the box, as far as I remember.
CFWheels supports pretty URLs, but who supports CFWheels? Rob Cameron all by his lonesome, that's who! No Trac wiki, no mailing list, no Google or Yahoo group, and precious little notice from the "Java-lite" crowd.
The whole process makes me sad. What I see is a lot of emphasis on very clever answers to the wrong problem.
Ron
So, Sean, does all this answer your question? For myself, I'd love to hear your concluding thoughts...
and for me, with the dying support here for CF (I've tried everything: free flash remoting, RAD dev, etc), the app I'm just about to start on will *have* to be Java/JSP. I _was_ thinking of prototyping it in CF first but I'm asking (after all of this) why not do it in Ruby on Rails instead?
So the biggest barrier to ColdFusion is addressing the 13 to 19 year olds, and giving them the tools so they too can be cool, and uber-geek, and nerd out by installing stuff. We don't do it because it's an "Enterprise" or "Business" product.
ColdFusion can not, will not, could never not, win the hearst of the majority of new developers because it's not therer for them to install on their own servers and use to share with the world.
I love CF. It rocks. But I can not get it into my local Not-For-Profit because there's an associated cost (and they have a voulenteer that is techie cool, but want's - well, he says open - really he means free to monkey with) server software. That's why they've committed to looking at Ruby.
And ok, NFP is not CF's market.
But still. Microsoft gets developers because of the massive money to be made. CF gets developers because ... ... ...
That's the real question: "CF gets developers because ... ..."
That's the real question to solve. Try that with many languages ".Net gets developers because ... ..." "PHP gets developers because ... ..." And compare.
I argue the adoption of ColdFusion is not because of how good it may be. The value of the tool is a straw arguement. There are many tools that can do a "good enough" job to compete with ColdFusion. They don't have to be as good or even better. They just have to be close. And if that is the case, then we drop back to "CF gets developers because... ..."
Personally, I think to Champion CF is awesome (I do it am much as I can) and I am very happy AGIS/ESRI is so CF Positive. That drives more people than I've know who just "pick it up". Part of me suspects that the positive government install base is because of that positive ESRI support in CF.
I rant, but the arguement for CF can not be justified only by the strength of the tool set, it needs to be justified by something else as well.
.end.rant.:-)
Why replace CF with JSP/Java when you can do both? Do the tricky stuff in Java, or with whatever JSP taglib you want. Then call Java classes from CF or use CFIMPORT to bring in the JSP taglibs. That way you get the best of both worlds!
And trust me: years of experience in JSP/Java has shown me that CF + Java + JSP is the better and much faster tool for web development at any level.
I'm a CF developer by day, but an RoR developer by night. Why? RoR is a lot more enjoyable to work with than CF at this point. Ray, I have to disagree with you, but the Ruby syntax is beautiful :)
which is more clear to you:
10.minutes.from_now <-- comes from the rails framework OR DateAdd("n",10,now())
or maybe this comparison
<objects> <object name="Customer"> <hasOne name="Address"> <relate from="addressId" to="addressId" /> </hasOne> </object> </objects>
OR
class Customer < ActiveRecord::Base has_one :address end
Dan said he didn't understand how you could do without cfdump. The solution is called irb, interactive ruby debugger. Since ruby isn't only focused on web development, you can leverage the other functionality. Say I have a model in my rails app. I can drop into irb, and type this:
listing = Listing.find(:first)[enter]
my model is loaded up with data. I can inspect all the properties of it, run methods, etc. This kind of functionality supercedes cfdump easily. Also Dan, I think activerecord is a much better alternative to cfquery. I'd much rather have an array of objects than to have to scroll through a recordset.
As to the college kid issue, if you had your choice of learning a language that was excellent at web development (CF) or a language that was excellent at web development, and system scripting, and could be used for desktop apps, which one would you pick.
(IMO)Ruby on Rails gained it's popularity around the same time the term Web 2.0 did. Since the 'popular' impression of Web 2.0 is to bind it to technologies, like Ajax, ROR is another one of those buzzwords associated with the latest trend.
Stephen Cassady said that CF distractes beginers b/c of the cost. The last time I checked, you can download the developers edition of CF for free. And since most newbies (and most of other developers) don't own, run or maintain their own personal production servers, cost for exposure to the public is the same as any other 'free' language like PHP or ASP. Viux has CF hosting plans for $3.95/month.
Question: Has anyone used ROR in a full scale enterprise development? I'm not talking about 2 developers working on what they consider to be an Enterprise level app, I'm talking about cohesive development with 20+ developers, a large user base and millions of lines of code?
That's the thing about RoR, you'll never have millions of lines of code :)
I took a look at Ruby one time but the syntax was just too cryptic for me. I'm used to the HTML syntax, so the CF syntax is more readable to me.
The other issue is documentation - if you go to the bookstores, you'll find only the CFWACK copies, if at that. You can't even find O'Reilly's Programming ColdFusion book (and it hasn't been updated since 2003 and only covers up to MX 6.1). That leaves the impression that CF isn't widely supported. As compared to shelves of Java and Ruby books.
I remember reading discussions about the lack of printed books and it's partly due to economics. I wonder if it may also be due to the level of marketing in the past of the product. I hope that this will change since Adobe seems to be actively pushing ColdFusion. And especially since now we have Fusion Authority. I wonder how long it will take before the quarterly shows up at Borders and Barnes & Noble.
I think part of the answer is stepped-up marketing by Adobe, and more awareness of how students and developers with limited funding can get up to speed with just the developer version and knowledge of cheap hosting such as hotstingatoz.com (just 7.99 per year for the most basic services and I'm a new customer - I needed a site to host demos of my apps).
Thanks for the IRB tip, I was unaware of that.
Regarding Activerecord, it's great, but there's no technical reason why it's tied to Ruby. Similar functionality can be reproduced with other languages. It would be especially easy in CF (because of the similar capabilities to Ruby).
Python and Ruby have a lot less boiler-plate scaffolding to do basic stuff. You can have multiple inheritence, use interfaces, go totally OO or stay in a procedural paradigm. Fancy tricks with duck-typing and Mixins can make for even more fun. In fact, I love the idea of CFMX gurus pointing in this direction. Because, once you 'get' it, it means significantly less code.
Anyway, I don't know of any true 'Enterprise' Ruby efforts, but they do exist in Python. Google, NASA, Eve On-Line, Industrial Light and Magic, Washington Post, NYSE and more are there. Some are older than you think. And my guess is that Ruby has as many Enterprise efforts in production as CFMX, they just might not all be in English.
Regarding Coldfusion, I feel like alot of the reason Coldfusion is often not as popular as things like RoR is because the unintelligent response to it is "its for noobs" or "its too expensive", and both of those responses are completely uneducated, but..thats the way it is for the most part. I think with Adobe behind Coldfusion, like many have stated here, we will see (hopefully) a bit of a surge in popularity with the upcomming versions of Coldfusion MX and now the onset of Flex 2 and coldfusions "first class citizen" stance in that world as well.
I think mainly, people need to move away from the language defensive mode and more to the fundamental requirements of each application one is to build; If I need to use ruby for a project, its very clear that its an established, mature language that I could benefit by learning. But on the other hand, If I need a web application, there are 100+ reasons I'd choose Coldfusion over PHP or ASP.NET even.
I think inevitably we need to keep the application requirements in mind more before we start trying to compare langauges against one another, if your a developer and you refuse to learn Ruby because you are a CF developer, or vicea versa, then your not going to do well in this ever-changing industry.
The time has not come for me to learn RoR, but in time perhaps it will. These are just my views on the situation, When RoR first came out, I looked into it, I saw the demo blog app, I saw the syntax, I saw it all, but I kept with Coldfusion because for myself (and my clients) it fits exactly what my application development requirements ask of me, and until that changes, I won't leave.
"As always open source gets all the hype. The open source community knows how to beat the drums at the grass root level.
I think Rod Johnson has it right when he disagrees with the panel on how open source fits into the big picture. tinyurl.com/efvlk
The open source community does not like commercial software. Floyd mentions scripting languanges as the future, but only mentions rails, as if CF is not a scripting languange.
The Open source community is a click and they are just not going to talk or promote a commercial product."
There's no one to blame about the lack of community around Wheels other than me, I don't have a message board or mailing list for people to discuss on, sorry about that! As always, something is in the works. :)
As someone else mentioned above, I'm a CF Developer by day, RoR developer by night. CF has been my bread and butter for the last 6 years, but compared to RoR it's like building a car from scratch rather than just going to the store and buying one. And then once you have it being able to change anything you want by just pushing a button.
If you think Ruby and ColdFusion can truly be interchangable then you must have very little experience with Ruby, or actual programming languages for that matter. And people are mixing Ruby and RoR. Yes, CF pages can do many of the things that RoR pages can do. But you can't write an .exe or windows app in CF, there's no interactive debugging, CFC aren't really "real" objects...the list goes on. Ruby is an actual programming language. CF masquerades as one so that those familiar with HTML aren't scared off by the syntax. The plugin and development environment around Ruby and Rails is going crazy right now, new stuff is coming out every day it seems like.
I love ColdFusion, but it's not my future. I need more. Ruby and Rails gives it to me.
P.S. sorry for the tapeword "Java-framework-like;" apparently "Java-like" threw some people off the rails. TeeHee.
Ron
1. It requires CFMX 7 but I couldn't find that fact mentioned in the docs or on the site. We still have CFMX 6.1 on our production and test servers, so I'm having to try it locally.
2. It was written to run on Windows. Some of the path functions use hardcoded directory separators which need tweaking to work on UNIX (Linux, OSX, etc).
3. It really needs to have SVN, Trac/MantisBT and a mailing list set up. I've been making code changes to get it working on OSX but I'm not sure where I should send my changes to.
One thing I really do like is the documentation, the five chapters finished so far are really excellent.
Damien
Perception is more important than reality. Are there really more professional ROR developers than CF? I doubt it. Not around my area anyway.
Creating proper perception is Adobe's responsibility.
There was a time not that long ago when everyone said it was now .net vs java, the war was really only involving them. Before that perl and asp. Now look at the field. Things change very rapidly and there is much to look forward to just one year from now.
CFWheels is getting more of my attention once my new server comes (can't wait!). Rob, I will try to help in some way.
One way Adobe can help greatly increase exposure, and remove the FREE issue that new developers have is to offer CFMX for free to all shared web hosts. This way it can be offered as a default option for any and all hosting accounts. It would make a great news story, get mentioned on DIGG, etc. Plus get more people to look, play, work, etc.
I left because I saw no evidence that CF was going toward a goal that I felt was critical; one of the reasons that I started with CF 5 years ago: developer productivity.
CF owned that arena when I started: it wasn't the cheapest, it wasn't the fastest running, it wasn't the sexiest, but, man! could I crank out the pages. Nothing could touch it for developer productivity.
RoR leapfrogged CF in that race. When after almost two years CF was still apparently too busy fiddling with Java-style frameworks to even notice they'd been beaten at their own game -- that's when I left.
Ron
LOL, seriously, how old are you and when was the last time you hung out with a newbie developer? Current cutting trend: If you're not hosting your own box to the world, then you're not geek (that means no developer version). It's ok to hold onto an "image of the world" from years ago, but don't apply to newbie then. They're hosting to XML out their current play list, running gaming servers, hosting forums, intergrating with IM, monitoring and sending web cam images, and much much more.
There is a huge group of new techie users that WANT TO HOST. The model before was "you need a big computer to host a website and pay bandwidth fees". Not anymore. Almost "any" old box can effectively host through a residential ADSL or Cable line.
Their Old computer (free) + Cable/ADSL (free, they have it anyways) + Server Middleware.
If you're a newbie, that Server Middleware won't break the (free) model of the computer and bandwidth.
So, we've got an upcoming group of energetic, excited, curious, and interested programmers. They look around and go "what can I play with", and it's not CF because comparable products will install for free and allow them to experiment - while hosting to the world.
One thing with Rails I've been pretty disappointed with was the messup over the 1.1 release. For such a publically visible framework to have to release a patch so quickly (what was it, the next day or something?), they needed to test it more solidly before launch, especially external code (script.acul.us et al) rather than launching with untested release-candidate code. It just looked very sloppy.
Sure, Rails 1.0 release was sloppy. For an open source group to do something like was a terrible mistake.
In fact, it is nearly as bad as Macromedia releasing ColdFusion 6.0 on the world and saying it was production ready.
Personally, I don't like the CFonWheels approach of running a generator to create custom code that I then need to edit / extend to fit in with my application. I don't like RoR's command-line generator approach either. Just a preference. I much prefer the inline scaffold / "active record" persistence handling approach that Model-Glue provides. Again, just a preference. And I like that Model-Glue is cross-platform and cross-database and doesn't require a whole bunch of configuration to get up and running.
Rob has repeatedly "criticized" Model-Glue as "Java-like" in with the "other" frameworks (Mach II... what else Rob?). Model-Glue is a lot less Java-like than Mach II.
I'm looking forward to CFonWheels being usable on other platforms (Linux, OS X, MySQL) so that I can evaluate it properly but right now it has a long way to go to be competitive (I hope it will be - choice is good).
Ruby/Rails is Pretty. Ruby/Rails is Fresh. Ruby/Rails is Free.
To top it off, I've scored way more women claiming I code in Ruby than I have when I mentioned ColdFusion.
I've coded, professionaly, in Java, C++, ColdFusion, PHP and now, exclusively, in Ruby/Rails.
To tell you the truth, I'd rather not have a job, than to have to code in something other than Ruby/Rails. Ruby is that much fun to use, as is the Rails framework.
The verbosity and ease of use of Ruby is a rediculous... as is Rails. Mixins, Migrations, Capistrano for deployment... the list goes on.
I'm outta here :)
Floyd Marinescu: "Im Floyd Marinescu. Im the original creator of the ServerSide. I was there for five years, not there any more. I think that one of the biggest trends were going to face as Java developers is the fact that Java itself is changing. What is Java? Java is no longer the language. It is now the JDK and the JVM, which is equal to byte code, which is equal to any language. And what were going to see is resurgence of¬ resurgence, but we are going to see Java as a good platform for domain specific languages. Were going to see scripting languages, especially becoming quite popular, and thats just beginning now. I think the reason why it hasnt been popular before in our communities is because you couldnt script Java itself. I mean scripting languages come from shell scripting where you script the underlying platform. So, were going to see that coming up and probably, the biggest area that were going to see that coming where there is all kinds of debate is in the web development frameworks. I dont think Rails is the ultimate solution to the problem. I think Rails rather is a symptom of what Bruce said that J2EE itself is too complex for web development. We need something built to suit. I think ultimately we need something that is well integrated with Java and I think Rails actually could be quite that solution or perhaps RIFE or a framework like that, and finally, just want to comment briefly on Web 2.0, not necessarily a Java specific trend, but its one that will change every&the way we work in the next two-three years. What were seeing is the Internet is moving from a publishing platform to an application platform and that will have a massive impact on how we develop on the frameworks we use and just the way we think about enterprise systems in general and thats already beginning. Its something we need to keep a look out for."
My take aways: 1. He states Rails is not the future. 2. He mentions scripting languanges, I put CF in this category. 3. The big one 'an application platform' can you say Flex 2.
Uhhh, yeah. If you're using what language you know to meet women, your issues run much more deep than RailsFanBoyism. (Oops, sorry, that's :rails_fan_boyism!, because Ruby's all about being easy to read.)
My wife thinks coding is dorky enough... no need to start actually trying to explain things to her. Here eyes gaze over on the word "code" to begin with :)
And yes, I've "criticized" the Java-like frameworks in the past and criticism is always a personal opinion -- after working with something like Rails, a framework that just "feels" right, Mach-II and Model-Glue just don't cut it for me any more. They are both amazing pieces of CF engineering, I doubt I could write something so well architected if my life depended on it. But, like some one else once said, they solve problems I don't have. And do it in a way that just doesn't feel natural to me.
What I'm talking about is a generator that allows re-generation, mantaining any changes that have been made since the previous generator run. Not really necessary when a single file is involved, but nice for more substantial changes.
Truthfully, RoR gets a lot of hype about the scaffolding. Unfortunately, it shouldn't. The scaffolding is just there to get you started. Most of the time now I don't even use the scaffolding just because I end up deleting all the generated code anyway.
On the other hand, my use of code generators goes beyond CRUD, where it would be nice to be able to make changes along the way as the application is developed and redeveloped.
Ahhh, ok. That's probably one of the most intelligent reactions to scaffolding I've seen in a while. Seriously.
In terms of a useful code generator, I really like Reactor. It continually regenerates a "base" class each time schema changes, but one-time generates a "shell" child class. The obvious benefit is that you can then change behavior to your heart's content.
A more subtle benefit is that it gives you a place to add DB-specific SQL (Reactor will generate DB-specific "shells") that stays in the data layer, instead of "leaking" up into the object model or controller layer itself, which happens way too much in Rails apps.
tinyurl.com/gydy6
Here's Joe's accompanying comment:
"This post finally gave me the kick in the arse needed to send a lot of my thoughts on Rails to print. Long post entitled "I Don't Like Rails" at:
[see url above]
Not trying to steal traffic, Sean - it was just way to much to fit in here, and it's OT. Your post isn't about frameworks!"
Actually Joe, I'd suggest it is, in a round about way... especially the way pro Ruby ppl are evangelising theirs and decrying CF with the lack thereof. By far the biggest "selling point".
(and who cares about Ruby writing desktop apps and CF not? not me....)
It's certainly been an interesting thread...
I have a lot of experience designing languages (and compilers / interpreters / etc) and there are so many reasons I don't like Ruby syntax. @@ : bah! I don't like Perl and I don't like PHP either. That's a personal preference.
There's clearly a brick wall between the RoR fanboys and the CF community... I would urge everyone to read Joe's post based on the "definitive" Rails book.
Open up folks.
Note to owner of this blog... get new or update blog app ! Or, I should have been smart enough to not use my real email address :|
Sean, you said you didn't like the generator creating files that you need to edit to fit into your app. I assume you meant the pages generated for a scaffold? The rest of the pages generated are nothing more than the absolute minimum you need to get the app to function. You don't have to edit anything to make them work in your app, you just start adding your own code to them.
If you plan on keeping the functionality of the scaffolds then yes, you'll need to edit them to fit in with the rest of your app. But I suspect most people will keep the scaffold as a separate admin-like interface, and produce real display/edit code for the user from scratch (that's what I've always done, anyway). The scaffolds don't stay around for long.
Scaffolds are way over-hyped. They're awesome for showing off that you have a functioning app in 30 seconds, but in reality you probably won't use them once you get going.
D: that was my fault. you heard about this from someone (a co worker of mine) at the RonR forums? I pointed this post out to her. you guys kicked it along nicely. Cheers.
ummm... Ruby doesn't do any of that stuff, yes? so you can't write the same component and put a remoting facade around it and use the same logic for HTML or Flash?
maybe it's time to look at what CF has that Ruby doesn't (unless you want to break out to AMFPHP or Java which kills the idea of re-using the same code for multiple presentation platforms)
How about this snippet. This will use the same url and respond accordingly to what the request will accept. If the url is called as a web service, xml will be served, if not, html will be.
def list @people = Person.find(:all)
respond_to do |wants| wants.html wants.xml { render :xml => @people.to_xml } end end
As for gateways, why wouldn't that be possible for ruby?
I pretty much ignored Rails in 2005. I've been coding in Coldfusion for about 7 years. I have both JSP and ASP.NET experience (plus plenty of asp experience in the late 90's).
Coldfusion to me is all about functionality. There were things you could do in 1 line of code in ColdFusion that not only took many lines of code on other platforms but all required elaborate server set up and admin. Cfmail, cfpop, cfhttp, cfquery and the inclusion of Verity (for search) were certainly priceless. Coldfusion was a bargain. Web services in coldfusion were also an absolute breeze.
So how did I get into Rails? I needed to generate a heap of custom pdf reports from a database. This was a personal project. CFdoc would do the job and I had the developer edition of cfdoc installed on my laptop. All worked well and in less than 5 minutes I had the pdf reports generated. Yes - generated but with with a watermark. Which was fine as I was running the developer edition. So I looked for alternatives and as I had plans to eventually release the app as a web app I thought I'd check out Ruby on Rails. ...And yes there were a variety of pdf plugins and my realisation that Rails is full of functionality out of the box as well: wiki.rubyonrails.com/rails/pages/HowtoGeneratePDFs
I was quite amazed at the maturity of Rails. Remember it is only about 2 years old and had just released version 1. Rails is not perfect (I agree with some of what Joe posted on his blog) but has a solid, passionate and innovative community with excellent leadership. I particularly like plugins: wiki.rubyonrails.org/rails/pages/Plugins eg with acts_as_taggable I can easily add tagging to my model. With acts_as_ferret I can automatically add full text search to my database. acts_as_ferret is actually a port of Lucene to Ruby with some C in crucial places to make ferret faster than the Java version. Rails also plays nice with Flash via XML which can be generated with very little code: class ReviewsController < ApplicationController def list @reviews = Review.find :all render :xml => @reviews.to_xml end end
Check out this Rails and Flex tutorial: www.liverail.net/articles/2006/04/16/rubyonrails-1-1-and-flex-2-0-pt-1 Ruby on Rails does web services, caching, intergated testing, ajax support (+ really cool RJS templates), and has a growing list of plugins which is really quite impressive for a version 1 product. It is not only a matter of comparing what Rails has with Coldfusion. It is where Rails is heading. Essentially what the Rails community thinks is cool, they will build and release as open source. I really like functionality that I can use in a few lines of code, Rails certainly delivers and I feel inspired by the community.
I also think the proprietary nature of Coldfusion does not lend itself well to the open source model. Many will disagree. I admit there are many ColdFusion open source projects but I can't say that there is a lot of variety except in the area of frameworks. Are there any open source Learning Management Systems in CF? They all seem to use PHP or Java. Not any in Rails at the moment but What about CMSs? Again i can only think of one - FarCry. Yet many open source CMSs in Rails are being released. What about a Wiki? Only one, but with limited functionality. Cmon even the Wiki on Adobe labs uses php.
oh and did I mention that an opensource version of an S5 presentation builder already exists as a Rails app: s5presents.com/
I'm really excited about Flex. I was even more excited when I started realizing that it was really tied to CF and that any backend will do.
but to get back to the point of open source apps compared to, say, PHP.
I will say this about open source, tho. I know a place that were evaluating learning mamagement apps. Unfortunatly the O/S ones were deemed "not there yet" so an expensive proprietary (with no source and webservices to interface with) was chosen.
part of the reason could come down to trust. if you run a critical app, if it's open source and something goes wrong, you bloody-well hope the community can fix it. if it's a licenced app of a large company, at least you've got a hotline to screem "blue murder"... and this can also apply to using ColdFusion as a platform....
...open source SAP, anyone?
I'm also (still) unsure why there aren't many open source apps (farcry excluded**) written in ColdFusion. I was looking for an event/conference booking one just the other week. Bah - no hope!
if someone has 2c on this, I'm all ears...
** BTW, it strikes me that Farcry could scrub up nicely as a LMS. I mean Geoff and Daemon are using it as a pretty robust application base...
- cost of CF - lack of deployment options/hosting - CF programmers are too busy building apps for paying clients - just way more php, java, .net and soon to be rails pgs around - Flash Remoting, SMS Gateways and PDF generation is not enough to convert people over to CF
and Barry, it does not matter if Open source products in php and java are not ready - at least these projects have been started and have active communities.
A proprietary language can pull the rug out from under the project. If an open-source language takes a turn that is "unfriendly" to your project, you at least have the option to support the old version yourself, make a version that is friendly to your project, patch the language so that your project is supported, etc.
Hypothetical instances: two groups of developers come up with competing projects. A highly-placed developer in the Company states a strong preference for Project_A. Project_1 developers have to worry, "What if Project_A-friendly code gets baked right into the language?" Instead of open competition between the teams, everyone's watching to see how the owners of the language are reacting.
But the Project_A developers aren't completely safe: What if their project requires/permits use of technologies that compete with the Company's other offerings? An animation technique, say, or some open document format that the Company's Marketing Department sees as a threat? They could find themselves baked right out, just as easily.
Even a simple bug patch can be a make/break for a project. In an open source language, if a bug is stopping your project, usually it's a straightforward matter of finding/writing the patch, compiling it into your working code, and submitting it for inclusion in the next release.
With proprietary software, you just have to hope that YOUR biggest problem is also the Company's biggest problem, otherwise the fix you need might get bumped off the schedule to make room for a new feature the Marketeers want.
As for your example, I'm sorry, but it simply doesn't make sense. Back in the old days Allaire released one product actually made with their software, and that was a forums application, but it was dropped many many years ago. I have yet to hear of a developer who was afraid Macromedia would build their web sites into ColdFusion. The closest I've seen is built-in support for PDF. There is a company that also offers PDF support for CF. However, Adobe's PDF support and this other company's PDF support is pretty different, so I don't think the company has anything to worry about.
I also think that the common PHP user will NOT be simply patching PHP. Do you honestly feel the average PHP user has the skills, or the desire, to make their own version of the PHP server? This is NOT to bad mouth PHP folks. If CF were open source, I'd say the same thing. I don't think the average user would even be able to modify and compile a new version of PHP. For the reason I stated above (forking), I'd bet most folks never do that. Also, do you have hard data on how fast the turn around is for PHP bugs? You talk about how CF users are at the mercy of marketeers. Does every PHP bug reported get fixed immidiately?
www.remotesynthesis.com/cfopensourcelist
Not as big as PHP, but growing.
My examples were hypothetical. The common thread in them was: commercial interests will take precedence over the wishes of OS projects. OS projects had better keep one eye on the commercial interests of the language owner to judge their future support.
Now, as far as PHP -- I know nothing about PHP. Sorry. My OS experience has been with Python, and, more recently, Ruby.
Here's my rule of thumb: the more expensive the software, the more/older bugs you'll find.
Python and Ruby are free, and if something I've written in Python or Ruby misbehaves, I will spend 4 hours on it before I begin to think it might be a bug in the language.
If it's written for AutoDesk or ESRI's hideously expensive software, I'll try it twice, and then I start checking for what antique bug they've left unfixed for version after version. Some of ESRI's documented bugs will be starting grade school soon.
CF is somewhere between in price and in the average ages/numbers of bugs. I'll try for an hour or so, and then I go looking for documented bugs. Sometimes my googling will turn up the same complaints for a couple versions back, but that's about it. Not bad, but not as good as FOSS.
Ron
I simply just don't know where you get this fear of the commercial owner simply taking over OS projects. I simply have never seen this happen, nor have I seen anyone scared of this. I did present the PDF example, but even that is somewhat contrived as the feature sets are pretty varied. If someone in the CF world knows of this happening, let me know.
I haven't seen a price versus bug comparison before. I _would_ probably make the comparison between age and bugs. Older products tend to have more bugs hanging around just due to their age.
I'd say CF is no more, or less, bug free than other products, but again, I'd ask, what would an -average- PHP person do if they find a bug? Would they crack open the source, probably not.
The problem, in my experience, is if you ask a question, more often than not, a person who responds will assume you have a certain level of knowledge, and if you possessed this level of knowledge, you would have no need to ask the question. A few times I had asked for 'idiot proof' help, I was berated for wsting people's time.
Its kind of like, you can't get in the club unless you know the password. However, you only get the password after you are in the club.
"I'd say CF is no more, or less, bug free than other products, but again, I'd ask, what would an -average- PHP person do if they find a bug? Would they crack open the source, probably not."
is interesting. They probably generally wouldn't (we google). I'm not really a coder who likes to get close to the metal but I can tell you a couple of times a year I do it. I go deep down into the library that's giving me pain and find out what's going on. I think so far it's always been my lack of understanding but just being able to see what happens under the surface is immensely useful.
if ColdFusion is to become a "first class citizen" to things like Flex, where does it pay off?
there seems to be a lot of Ruby-on-Rails ppl saying "Bah - humbug!". The lack of "closer ties" with Flash/Flex, livecycle, et al, doesn't seem to be a worry....
just a thought...
One: an OS project's lack of control of the language basics means developers are less willing to commit to the project.
Two: the controlling company's top priorities are sales-driven: Adding features. Locking-in their offerings. Locking-out alternatives. Fixing bugs isn't sales-driven, until after the fact (the bugs cause buyers to refuse/delay upgrades).
This makes it hard for OS developers to commit, as well.
I can't claim there's an overwhelming flood of support for my hypotheses here -- a trickle, perhaps. I am interested in any alternative explanations of the phenomenon.
Ron
Coming from the Java world, I am just not in the habit of buying stuff!
In the 1990's I briefly bought into Microsoft's ever changing (or charging) C++ products. It was like having to pay to work on quicksand. So Macromedia, no thanks.
The core language hasn't changed since, at least, the v4.0 days, other than to expand and grow upon what was already there. Every iteration since has provided backward compatability, with minor code changes (if any).
If anything, the cost of programming in ColdFusion has decreased over the past 5 or six years, rather than increased. And, now that ColdFusion falls within the Adobe product line, the expansion of the platform will only grow. And, considering the ease with which Flash and Flex integrate with ColdFusion, the platform is likely to explode like it never has in it's past, probably expanding beyond anyone's previous expectations.
But I have already started dating Ruby, and she's so straight forward and simple! I am already getting paid for RoR stuff, so my loyaties are with her.
Ideally I want to spend minimal time learning frameworks and languages, I just want to connect web pages to data bases quickly.
As I read 'Agile Web Development With Rails' earlier this year, I kept coming across really practical down to earth common sense (testing, gems, setting up test/production envionments, proper MVC for once (BTW wheres the Model in Struts MVC?). Best of all, its not hype.
Thanks for the info about the costs of ColdFusion, I would be flirting with it had Ruby not come along.
ColdFusion, as a server product in development doesn't cost a dime either, whot with the free developer versions (inc a couple of static IP addresses).
the only time CF get's really pricey is running clusters, and if your app needs to be that big then then not only can you afford it but it's probably too much for RoR to handle anyhoo...
Please don't do this !!
UNSUBSCRIBE
Sorry if this "plug" is bad-form, but if it's the framework+mvc you're interested in, maybe check this out CF on wheels at http://www.cfwheels.com/ . Those guys have MVC there, they have scaffolding, routes, helpers (form helpers even), and several other features of rails for CF.
Talking with a colleague at work who is a recent (well past year I guess) advocate of Ruby on Rails, he thinks that cfwheels might actually have a better take on the framework than ruby-rails *shrug*.
tinyurl.com/k3pzr


