An Architect's View

CFML, Clojure, Software Design, Frameworks and more...

An Architect's View

Scorpio Wish List

September 12, 2006 ·

After the flurry of Scorpio wish lists, I have been wracking my brain to come up with a wish list of my own. What would I really want to see in ColdFusion? I thought long and hard about the systems I have built with ColdFusion over the last five years and tried to come up with things that have blocked me in one way or another. I thought I'd be able to come up with a top five with ease... but I was wrong. After much soul-searching, I finally came up with four features that would have made my projects easier:
  • sftp support. I had to apply for a security review exception on a past project because ColdFusion only provided ftp support.
  • Command-line invocation of CFCs (without using HTTP). I use ColdFusion to create quite a few general-purpose tools but I always have to stick a web form in front of them - or at least a URL with a bunch of query parameters. I'd like to be able to write command-line tools (against a localhost deployment of ColdFusion).
  • The ability to deploy and archive CAR files themselves so you can share CARs across servers. The current model lets you archive a variety of settings and deploy the contents of a CAR but not the actual CAR itself.
  • The ability to program a Ruby / Smalltalk style "not understood" method handler. ColdFusion is a dynamic language (like Smalltalk and Ruby) but you can't handle a missing method within the called component. Combined with duck typing, this would be a very powerful tool, making prototyping and testing much, much more efficient.
That's it. I can't think of anything else that would have helped any of my ColdFusion projects.

Tags: coldfusion

27 responses

  • 1 Vinny Timmermans // Sep 12, 2006 at 1:35 AM

    Hi Sean,

    My wishlist is even shorter, it contains just one item I haven't seen on any other list: SPEED.

    In a current CF Enterprise/FDS Enterprise project CF just can't deliver the speed required to make the whole system behave fast. It performs too slow for a great user experience. If Scorpio will provide a much faster experience, it will make my day.
  • 2 michael traher // Sep 12, 2006 at 1:56 AM

    sftp should definately be built in, but in the meantime I'm sure you're aware of my humble sftp.cfc available at http://www.socialpoints.com using the excellent JSch library from http://www.jcraft.com.
  • 3 Raymond Camden // Sep 12, 2006 at 3:52 AM

    Sean, may I make two side requests to your list?

    I agree with the command line invocation - but I'd like to be able to run CFMs or CFCs.

    CAR files: I have a simple one as well. It takes _forever_ if you want to make a CAR of everything because you ahve to go through and check off all the settings, dsns, mappings, etc. We really need a simple 'Back Everthing Up' type option.
  • 4 Ben Forta // Sep 12, 2006 at 3:52 AM

    Huh, you mean you are not pining for a cfimage tag? ;-)

    --- Ben
  • 5 todd // Sep 12, 2006 at 5:36 AM

    I think your short wishlist speaks volumes to the success of CF. If someone like you can't even come up with more than 4 things that were roadblocks in past projects, they must be doing something right.

    A few things though - wouldn't you like to see a cfimap tag? Also, have you seen cfsftp.cfc? I know it's not native, but it's supposed to allow you to use sftp. Not sure how it works, haven't tried it yet. Here's a link: http://www.socialpoints.com/blog/client/index.cfm
  • 6 Simon Horwith // Sep 12, 2006 at 6:25 AM

    Ooh - cammand line CFC invocation... I like that, Sean ;)
  • 7 David Fekke // Sep 12, 2006 at 7:14 AM

    Sean,

    I defineatly agree about sFTP. We had to purchase a third party tool because we could not do this in ColdFusion. The other three are would be cool to have in ColdFusion as well.
  • 8 Dan Sorensen // Sep 12, 2006 at 8:01 AM

    I wonder what the security implications would be with command line scripting built in. Probably no more of an issue than the other scripting languages on my box.

    The SFTP idea is a good one. :-)
  • 9 Damon Gentry // Sep 12, 2006 at 8:43 AM

    In my new role as a CF Server Administrator, I'd like to see a few more enhancements for Admins, specifically in logging and file formats.

    We are beginning audit our CF configurations by archiving the neo*.xml files and diffing the files daily. However, many of these files contain no line breaks, and I've discovered that when the server restarts, some of these files (particularly neo-query.xml gets rewritten. The frustrating part is that the order of the XML elements change randomly. This makes diffing the files very difficult.

    In addition, the XML itself not very descriptive. Try finding the XML tag that enables or disables 'White Space Management' and you'll see what I mean. To contrast that, all of the JRun configuration files are well written, and well documented.

    Also, I would like to see all logging (metrics, errors, warnings, info, etc...) in structured XML format. This would make it much easier to parse the logs and generate reports on error conditions.
  • 10 Sean Corfield // Sep 12, 2006 at 10:16 AM

    @Ray, CAR: just click the "Select All" button on the first page of the CAR wizard and it will add all of your settings to the archive. One click, couldn't be simpler!

    @Ben, cfimage: I do almost no UI work with ColdFusion - it's almost entirely a server-side / server-to-server tool for me (I know I'm not a "normal" CFer).

    @Todd, cfimap: never needed it (so far!).

    @Damon, the neo*.xml files are WDDX so you might find life easier to have a ColdFusion task that reads the files, converts them back to structures and then programmatically compares them. With the CF Admin API, you could even write a tool that validated the configuration directly without needing to touch the XML files. Just a thought.

    @all who mentioned alternative sftp options... good information... no, I hadn't looked at most of those options.
  • 11 Raymond Camden // Sep 12, 2006 at 10:54 AM

    Sean, I don't know how I missed that. Thank you.
  • 12 Patrick Whittingham // Sep 12, 2006 at 12:13 PM

    Can I second performance....performance for pdf/flashpaper, cfloop thru a query, cfscript, cfinclude, cfc. CFQUERY seems to have good times if you write 'good' sql (ie., Oracle), but looping thru +10000 records is too slow. I create multiple pages (650/page) upto 30,000 rows. I'm using cfmx 7.0.2 Enterprise.
  • 13 Jeff Houser // Sep 12, 2006 at 1:50 PM

    a "Method not understood" handler in CFCs is probably one of the coolest ideas I've heard.

    I never would have thought of that.
  • 14 Dale Fraser // Sep 12, 2006 at 6:34 PM

    ECMA scripting before CF looses too many developers to other ECMA style languages.

    Keep the tags, but have a fully supported ECMA syntax also
  • 15 Sean Corfield // Sep 12, 2006 at 9:06 PM

    @Dale, in my opinion (and many other do actually share this view!), that is a complete waste of time. Here's why: it would take dollars and time to add all of that scripting and it would not move the capability of the product forward at all - it would simply provide a completely duplicated set of functionality.

    Also, if you go out there and survey non-CF developers, you're not going to switch anyone to CF by duplicating C-style syntax (which is really what you're talking about). Either they would use CF for it's power and rapid development style or they wouldn't. Similarly, you are not going to lose CFers either because they already have the language they need (even if they may grumble about cfscript). They won't leave CF *solely* based on cfscript.

    The scripting discussion is completely pointless and misguided (IMO). Frankly, if I had my way, I'd deprecate cfscript so that no more development dollars are wasted on it - I think it was a mistake to add it in the first place.
  • 16 Dale Fraser // Sep 12, 2006 at 9:35 PM

    Sean,

    I agree cfscript should be dumped, as it's not complete.

    IMHO, if an ECMA script was available and supported all functionality it would be used be everyone not developing intranets.

    From my experience when I attempt to get a developer to consider CF, they laugh at it as being not a real language.

    This is without a doubt costing Adobe lots of CF customers who dismis it without looking further into it.

    If the ECMA as As3 then all flash people would be instant converts.

    So while I agree it is a waste of time from a functionality stand point. I strongly believe CF needs it to survive and gain market share in the long term.

    It wil make the transition from uni or another language to CF that much more natural.

    You should try getting a java person to consider CF for a project and see what happens.
  • 17 Jonathan // Sep 12, 2006 at 10:06 PM

    Commandline cfc invocation would be great. I could finally get off trac or mantis and get onto a cf bugtracker project that supported svn/cvs integration. To satisfy the managers image support would be helpful for customized reports.
  • 18 Vinny Timmermans // Sep 12, 2006 at 10:46 PM

    Exactly the same performance issues here: good performance on CFQUERY but looping thru large datasets (this is what happens all the time when you use CF as a backend for FDS) is far too slow. This operation really hurts the performance of the app and the overall user experience. Result: the current CF is a far from perfect Flex 2 compagnion, just because of these performance issues. My customers are not waiting for all kind of new features, they are satisfied with the current featureset, they just want an acceptable performance.
  • 19 Ashwin // Sep 14, 2006 at 6:51 AM

    If I understand your wish correctly, invoking CF from the command line should be as simple as using a command line tool which can invoke HTTP URLs. This is easily achieved using tools like cURL. Blogged the solution: http://blogs.sanmathi.org/ashwin/2006/09/14/howto-call-cf-from-the-command-line/
  • 20 Sean Corfield // Sep 14, 2006 at 7:46 AM

    @Ashwin, no, the specific use case is the ability to invoke CFC methods without going through HTTP. I guess it would still be reasonable to require the method to be declared remote but it should not need to be web accessible (ideally some mechanism like the event gateway would allow registered CFCs to be called from the command line directly).
  • 21 Ashwin // Sep 14, 2006 at 8:20 AM

    Why not via HTTP, so long as a command line interface is provided? Is there any particular reason you want the requests to only come in via event gateway, or somesuch?
  • 22 Sean Corfield // Sep 14, 2006 at 12:43 PM

    @Ashwin, mostly so that "command line" CFC utilities do not need to be web accessible (which HTTP would require) and also so there is no need to actually go through the local web server. The utility should pass the working directory path (where the utility was invoked) in as well.

    It would be nice to have this work "out-of-the-box" without having to install something like curl and write a script / mini-app to provide friendlier syntax than a URL.

    I could write a small shell script (for OS X and Linux users) and an event gateway that used the socket gateway or something similar to interact with the CFC but that would still require configuring CFMX (for the gateway) etc.

    *whine* :)
  • 23 Ashwin // Sep 14, 2006 at 10:59 PM

    Ah, you CF Gurus... We've spoiled you silly, haven't we? ;-)
  • 24 Sean Corfield // Sep 14, 2006 at 11:09 PM

    Not yet... but if you keep granting our "wishes" then you will be spoiling us ;)
  • 25 faser // Sep 19, 2006 at 2:29 AM

    I would like to use CF for developing desktop application with a browser front-end. Something like the python cherrypy.org. We need a light coldfusion version that can be distributed and embed a web server. I need to deploy cf light on the clients machine and they can use my application opening the browser to localhost:8080/myapp.
    In this way we can develop a desktop and a remote application without changing the code.
  • 26 Aseem Mal // Nov 8, 2006 at 11:58 AM

    Hi All. I am quite sure that I have not seen this one on any other Wishlist for Scorpio.
    I'd really like to see CFDUMP and CFABORT combined somewhat like this: <cfdump abort="yes/no">.
    I am sure a lot of us use this combination of cfdump and cfabort many times a day. Furthermore, the abort option could be dafaulted to "yes", considering that's what we would use most of the time.

    Thanks,
    Aseem
  • 27 Andy Matthews // Dec 8, 2007 at 8:18 PM

    A wish for ColdFusion 9 is a useful ternary operator similar to that of Javascript.

    If expression one is true, expression two is returned, else expression three is returned.
    expression one ? expression two : expression 3

    I know we have IIf, but it requires so much other effort that it might as well not be in there.