What do you want to see in CF 9?

What do you want to see in ColdFusion 9 (codename Centaur)? Yes Kevin Lynch, Chief Architect of Adobe told the crowd of 4300 attendees at MAX the other week that work is already underway on the new version, and showed ColdFusion's place on Adobe product roadmap. Puts to rest all that hullabaloo the other
month from a few folks thinking that CF was dead! The silent majority know CF rocks and is
alive! So what do you want to see in CF 9?

Comments
Michael's Gravatar Some things I've not often heard about but I would see for years:

1. Setting default attributes for tags (usually placed in 'Application.cfm') so you don't have to write always all attributes again and again.
<cftagdefault tag="cffile" action="READ">
   <cfsettagdefault name="charset" value="iso-8859-1">
</cfdefault>
<cftagdefault tag="cffile" action="WRITE">
   <cfsettagdefault name="mode" value="644">
</cfdefault>
<cftagdefault tag="cfquery">
   <cfsettagdefault name="datasource" value="mydb">
</cfdefault>
<cftagdefault tag="cfhttp">
   <cfsettagdefault name="proxyserver" value="????">
   <cfsettagdefault name="proxyPort" value="9999">
</cfdefault>


2. Enhance existing functions:
<cfset replace(string, sub, sub2 [, scope [, start [, end] ] ])>
scope:   LAST/REST/comma delimited list = number of occurence(s) to replace

<cfset find(sub, string [, start [, end [, scope] ] ]>
scope:   FIRST/LAST/number of occurence (allows list): find("a", "abbaccadda", 1, -1, "5,3") = "7" for 3rd "a" because no 5th "a" ouccurence found!

valueList(query.column, delimiter, startrow, endrow, condition for each row to be included )

arrayDeleteAt(array [, pos]) - pos optional, default is the last element

mid(string, start[, count]) - count optional, default is rest

listLen(list [, delimiter] [, ignoreEmptyElements]) - default of "ignoreEmptyElements" is "true" to be compatible with CF 6-8
listLen("a,,,b") IS 2 but listLen("a,,,b", ",", false) IS 4!
listGetAt(list, position [, delimiter] [, ignoreEmptyElements]), listToArray(list [, delimiter] [, ignoreEmptyElements]) and other list functions...


3. Attribute onnestedtransaction="ignore" for CFTRANSACTION because
"You cannot nest a cftransaction tag within another cftransaction tag..."
I only want a transaction if there is none around:
<CFTRANSACTION onnestedtransaction="error|ignore">...</CFTRANSACTION>


4. compare(arg1, arg2) for structs, arrays and even queries
result = 0: equal, 1: not equal, -1: same as 1 but with special meaning: arg2 extends arg1, having more keys/rows


5. CFARGUMENT
CFARGUMENT could have "list, separator and maxlength" from CFQUERYPARAM and "max, min, pattern" from CFPARAM...
and a new attribute that defines the argument as "called by reference"
(which is now for complex values only ...) or "called by value": <CFARGUMENT CALLBY="reference|value" ...>


6. Current tag nesting
A function like activeArguments("CFTRANSACTION") gives you a struct with currently active arguments for the tag
(empty if function is not nested inside). Especially helpfull in includes/custom tags where you don't know current
value of CFFORM (format?), CFSETTING (showdebugoutput?) among others


7. More string / list functions to complete the functionality
- Get the index of the (list) element at the Nth position of a string:
listIndex(string, pos [, delimiter])
   listIndex("alpha,beta,gamma,delta", 13) = 3
   listIndex("ColdFusion is great.", 13, " ") = 2
- Get the position of a specified index in a list/string
listIndexPos(list, entry number [, delimiter])
   listIndexPos("aa,bb,cc,dd,ee", 3) = 7
   listIndexPos("ColdFusion is great.", 2, " ") = 12
- listLeft(list, entry number), listRight(list, entry number), listMid(list, entry number, count)
# Posted By Michael | 10/19/07 4:09 AM
Tom Chiverton's Gravatar 1) Remove the need to 'var' variables in CFCs aka 'objects should be thread safe by default'.
2) Share and CoCoMo tags - cfShare docId="90707ad234" action="display", cfMeetingRoom
3) Speed ups, like in string handerling (use Java's StringBuffer under the hood).
# Posted By Tom Chiverton | 10/19/07 4:19 AM
Tom Chiverton's Gravatar Oh, and a built in CoCoMo server, like it already has built in LCDS.
# Posted By Tom Chiverton | 10/19/07 4:27 AM
Tim's Gravatar MS Word support for CFDocument.
# Posted By Tim | 10/19/07 5:42 AM
Fernando Barros's Gravatar I'd like to see a better IDE, like Microsoft has with Visual Studio Team System. Have you ever seen the new testing tool, colaboration and project managment? It's really good.
It'll be a great feature to sell Coldfusion for medium and big teams.
# Posted By Fernando Barros | 10/19/07 7:14 AM
Jordan Clark's Gravatar Fixing the <CF> tags that now allow attributeCollection="" so that they can combine existing attributes with the passed in structure the same way custom tags have always worked.

<cfmail to="kevin@adobe.com" subject="Fix CF9 Attributes" attributeCollection=
# Posted By Jordan Clark | 10/19/07 7:37 AM
Jordan Clark's Gravatar Odd that my message was cut off by a hash character. cfmail sample is supposed to be:

<cfmail to="kevin@adobe.com" subject="Fix CF9 Attributes" attributeCollection=#application.mailOut#"> Now!</cfmail>
# Posted By Jordan Clark | 10/19/07 7:41 AM
Steve P's Gravatar Support for Word would be good, though Excel support
directly rather than through POI would be better.
# Posted By Steve P | 10/19/07 8:24 AM
devlord's Gravatar I hope to see the following improvements in the next release of CF 9.

1. support spell checking in the ColdFusion 8 rich text editor.
2. instead of using Verity search engine, I suggest cfsearch to be able to integrate other search utilities like Apache Lucene, IBM OmniFind, and perhaps Google Co-op.
3. new <cfcompare> tag to facilitate the data comparason over different data sources.
4. manage the URL mapping dynamically to a DB data field, which offer a better SEO-style URLs.
5. a new variable scope that leverage Flash Shared Object to store data objects in client's machine.
6. better support of OR-Mapping and DTO patterns, perhaps integrate the ColdSpring framework.
7. secure form submission with AES Encryption enabled.
8. native support drag and drop features in ColdFusion UI Components.
9. new <cftheme> tag to manage and switch web themes (defined by css) rapidly.
# Posted By devlord | 10/19/07 12:27 PM
Sean Corfield's Gravatar Most of you are asking for small point features rather than big picture stuff - read Jason Delmore's blog (the product manager) and respond there. He makes the same comment: features are interesting but the big picture stuff is way more important.

Steve P's comment comes closest to what the CF team are really looking for I think.
# Posted By Sean Corfield | 10/20/07 12:18 AM
Marcel's Gravatar 1. Native XML data type like e4x (aware it may require Java 7)
2. A greater capacity to remain within cfscript to run queries with queryparam() and query(){select * etc...} abilities. e4x in cfscript blocks would be brilliant, although so would a full implementation of AS3 :)
3. More database obfuscation for getting database properties so building scaffolding features or just finding out db properties can be a much easier exercise, working on any db type with the same code.

My 2 cents.
# Posted By Marcel | 10/22/07 8:25 PM
Mike S's Gravatar Here's what I would like to see:

1. CFIMAP tag
2. Word/Excel-to-PDF using CFDocument
3. Drag-and-drop (for organization and reordering) of CFPOD and/or CFDIV tags - like Scriptaculous drag/drop
4. MUCH smaller JS files for Ajax features, CFForm scripts, and cfgrid scripts.
# Posted By Mike S | 11/1/07 12:57 AM
Mike S's Gravatar Here's what I would like to see:

1. CFIMAP tag
2. Word/Excel-to-PDF using CFDocument
3. Drag-and-drop (for organization and reordering) of CFPOD and/or CFDIV tags - like Scriptaculous drag/drop
4. MUCH smaller JS files for Ajax features, CFForm scripts, and cfgrid scripts.
# Posted By Mike S | 11/1/07 12:57 AM
Dale Fraser's Gravatar I would like to see proper constructors, ie a function named the same as the Class and the introduction of the new keyword.

So I can do

<cfset myObject = new com.company.Image('C:\Path\name.png') />

For example

So the Image.cfc would have

<cffunction name="Image" access="public" returntype="component">
<cfargument name="name" required="true" />

... Some Code ...

<cfreturn this>
</cffunction>

Now if they introduce this, it will make a lot of people happy, it is making CF more OO and more consistant with other languages, and it would not break anything as existing code that was out there wouldn't use the new keyword and as such the common init method would still function
# Posted By Dale Fraser | 11/1/07 4:54 AM
Ryan Favro's Gravatar I would like to see the introduction of lower pricing models to make CF even more accessible and get other partners on board championing ColdFusion. For example figure out a way to ship CF as a package with Apple's OS X Server the way php or webObjects currently do.
# Posted By Ryan Favro | 11/1/07 10:24 AM
Adam's Gravatar <cfcontinue> -- to complement <cfbreak>
onServerStart(), onServerEnd() -- events to fire when the server start/ends
# Posted By Adam | 11/1/07 10:40 AM
barry.b's Gravatar 1) CoCoMo server support, esp with API hooks to work with custom authentication.
2) nested CFTRANSACTIONs - this is a pain point of mine!
3) Query-of-query enhancements to support more SQL/DML (esp INSERT, UPDATE, DELETE)
# Posted By barry.b | 11/1/07 11:55 AM
Darrin's Gravatar I would like to see some admin tools, so if you had multiple cf servers you can go to one screen add the ips, and username / password and see all of your servers. Then be able to copy settings from one box to another. This would make deploying to multiple servers much easier, and if there was a crash, would help get the box back up faster.
# Posted By Darrin | 11/1/07 5:30 PM
Sean Corfield's Gravatar @Dale, the constructor in CF is called init() - remember that when you deal with Java objects, you call init() as well to call the constructor. I agree the new syntax would be a bit cleaner but the method name is irrelevant. Stop thinking like a Java developer! :)

@Adam, cfcontinue is evil - it creates unstructured code. So does cfbreak to some extent.

C'mon folks, Jason's already said he's looking for high-level features not nit-picky little language syntax issues!

Darrin is closer to being on the ball here.
# Posted By Sean Corfield | 11/2/07 4:27 AM
Dale Fraser's Gravatar @Sean, no currently there is no constructor in ColdFusion. The init method is just a function that could be called anything. Im not thinking like a Java developer. I'm thinking like a Java, .NET, PHP & ActionScript developer. There is no benefit in ColdFusion going out of it's way to be different when there is already a clear and good way of doing something.
# Posted By Dale Fraser | 11/2/07 7:18 AM
Sean Corfield's Gravatar @Dale, when you create a Java object in CF, you call init() to run its constructor. It makes sense that you treat CFCs the same way. COLDFUSION IS NOT JAVA. In ColdFusion, the constructor is called init() whether you're dealing with a CF object or a Java object.
# Posted By Sean Corfield | 11/3/07 4:16 AM
barry.b's Gravatar you want "big ticket" items, huh? lack of nested transactions not cutting the kudos stakes?

how about bringing more automated proesseses to web applications?

background:
http://brianchau.wordpress.com/2007/08/11/flash-vi...

we can now programatically work on image files. I can see a need to do the same for video
- directory watcher sees a new .avi file added
- process avi into various formats, inc flv
- generate JPG thumbnails
- load results into website, generate RSS feed
- record file info into database

sure this can be done manually but I'm after an automated process with an easy to use API.

oh, and inbuilt CoCoMo server for the enterprise version of CF9 as another feature..
# Posted By barry.b | 11/4/07 12:13 AM
Gary Fenton's Gravatar VoIP. That's big stuff isn't it? Come on Adobe, I dare you to step on Microsoft's toes and deliver something better and more programable than their Communications Server 2007 offering.

CF can communication with humans using email, SMS and IM. All that's missing is telephone, and perhaps fax which can also be achieved using VoIP. There are so many applications where VoIP can be used, and since CF is so good at being the glue that binds so many technologies together it's odd that one of the oldest communications technologies isn't supported - telephone.

Come on Adobe, get your chops around that one! :-)
# Posted By Gary Fenton | 11/4/07 11:02 AM
barry.b's Gravatar @Gary:

Adobe are working on VOIP technology - using Flash (of course) right at this moment - it's called Pacifica.

Having said that, I actually don't think VOIP is the right thing for CF (unlike Breeze-like Cocomo) simply because it's primarily peer-to-peer - I just can't see anything worthwhile with it for a server technology.

eh, my 2c.
# Posted By barry.b | 11/4/07 12:12 PM
ignite's Gravatar CFML is a great language... I just wish it were open-source. That would be my #1 item on my wish list. Probably won't ever happen but a guy can dream can't he?
# Posted By ignite | 11/4/07 12:43 PM
Sean Corfield's Gravatar @barry.b

Adobe Acrobat Connect / Connect Professional relies on Flash Media Server (or whatever it's called these days ;) which is an expensive server product in and of itself. CoCoMo is a client side set of Flex components to talk to an existing Connect server setup (either Enterprise or Hosted). You're not going to see that server setup as part of CF9 - Connect Enterprise (where you host it) is a six figure dollar cost. The whole point of CoCoMo is that any Flex developer will be able to use the CoCoMo components to build a *front* end collaborative application that leverages the massive hosted infrastructure the Adobe provides. It really has nothing to do with a server product like CF. FWIW, you can already drive the Connect system via XML APIs that can be manipulated from CF but that's pure backend stuff and nothing to do with CoCoMo. You are spot on with Pacifica being client only (again, a set of Flex components that will leverage Adobe hosted infrastructure to some extent but mostly operate as peer-to-peer, client-to-client).

Now, video transcoding... yes, I can see that as a set of tags and functions in CF at some point.

@ignite: why do you want CF to be open source? What would that buy you? Today, Adobe are able to provide deep cross-product integration because they can leverage proprietary technology components. It's not like the CF community could actually maintain and enhance a Java-based open source CFML engine - otherwise we'd see huge amounts of interest in Smith and an active community of CFers working on it. No, these constant calls for open sourcing CF are just a knee-jerk reaction to corporate ownership... After all, Allaire released Spectra as open source and the CF community didn't do anything with it - it pretty much just died. You don't want that to happen to ColdFusion itself do you?
# Posted By Sean Corfield | 11/4/07 6:23 PM
Gary Fenton's Gravatar @barry.b. Here are examples of the sort of apps that CF with VoIP could do. Keep in mind that some users may not have web/email access all the time or may not like/trust the Internet.

* Pay by phone
* Information lines
* Surveys & polls
* Government & commercial message delivery
* Account info or balance tracking
* Hotlines and helpdesk
* Status reporting
* Web callback
* Price/stock enquiries
* Market research (I really hate those calls)
* Security checks / account activation verification
* Appointment/meeting reminders (dentists, doctors, corporate)
* Alerts

I already run commercial telephony apps but have to use other systems to achieve it. There is huge potential here for CF to muscle in and grown new tentacles. Most people here must be able to imagine how one of their apps/interests can benefit from something from the above list?
# Posted By Gary Fenton | 11/4/07 7:54 PM
barry.b's Gravatar @Gary

I can see your point and infact I saw something similar with doing things during a LiveCycle demo where you could - from accessing PDF - be able to connect with someone on staff with audio - and - video to help fill out some forms ("it looks like you're filling out one of our forms" says the bouncing Adobe paperclip...)

Audio is something special (I'm an ex-audio engineer so I'm biased). Most of what you suggest could be done with Flash Media Server or Connect/Breeze. For pure audio use best uses are:
as a radio replacement (broadcast)
as a telephone replacement (peer-to-peer)

@Sean, yes you're correct about me being greedy and wanting to roll FMS functionality with Flex componetary into CF9 enterprise. But this is for 2 reasons:
- I'm working on getting Connect in here. Part of that will be integration with existing CF systems: automatically saving the recording URL's into the CMS-based system, authentication and access, etc.
- my take so far on CoCoMo is that it's more than the Flex Componetary. To get a lot of the Connect functionality to work takes a lot of server tricks. It looks like Adobe are moving into hosted services with CoCoMo - the componetary is available but you'll be connecting to Adobe Connect rooms on an ASP model. That's briefly mentioned here http://blogs.adobe.com/collabmethods/2007/10/cocom...

(unless I musunderstood). Not exactly what I'm keen on...
# Posted By barry.b | 11/5/07 4:41 AM
Gary F's Gravatar @barry.b. Does Flash Media Server support VoIP then? Can it handle 200-500 simultaneous phone calls on a single server? I am unfamiliar with FMS.

Off topic: This is the first instance of CFBlog 5.9 I've used and it still has the IE6 bug where the textarea for comments always runs off the right-side of the page, even when my browser window is maximised to 1920x1200.
# Posted By Gary F | 11/5/07 6:38 AM
David Ringley's Gravatar Add an attribute to CFComponent that informs CF not to load the request data into scope as it severely impacts performance.

In other words, do not explicitly load url, form, session, client, application, server scopes into the CFC everytime a CFC is createted.
# Posted By David Ringley | 11/5/07 11:39 AM
Sean Corfield's Gravatar @barry.b - CoCoMo is (just) a set of Flex components and it *will* require either hosted Connect or an Enterprise (local) install of Connect. All the "server tricks" will be provided by Adobe - either hosted or as an expensive enterprise-level installation. Does that clarify?

@David, what you're saying makes no sense at all: the scopes are *not* loaded into CFCs, they are just part of the variable lookup mechanism and it does not have a significant effect on performance. Can you *prove* otherwise?
# Posted By Sean Corfield | 11/7/07 5:43 AM
Steve P's Gravatar I'm asking all over again as I've just had to do this in CF8
and its still toooooo hard!

I want to do mail merge into PDF docs or better still Word
docs. Simple exercise like replacing bookmarks with text
from a query and being able to save and or rpint the result.

I know CFPDFFORM kind of does this but its not nice and
simple. I want to open a doc and replace the bookmarks
and have the doc reflow.

It would be so useful.
# Posted By Steve P | 11/9/07 12:53 PM
Terry C's Gravatar Would like to see a lot more financial functions or easier linkingto Matlab (or similar) number crunching
# Posted By Terry C | 12/10/07 3:31 AM
barry.b's Gravatar Terry, I won't speak for MatLab, but the java under the hood for CF (for java math library) isn't doing it for you?

(I've been learning the hard way that some things a web language just shouldn't do ... horses for corses)
# Posted By barry.b | 12/10/07 4:05 AM
brian's Gravatar cfsubdomain
create = "yes, no"
name = "subDomainName"
delete = "yes, no"

nuff said. :)
# Posted By brian | 4/24/08 1:57 PM
BlogCFC was created by Raymond Camden. This blog is running version 5.9.002. Contact Blog Owner
Home | About Us | Software Development | Server Optimization | Client Portfolio | Training | Contact Us

Copyright © TeraTech Inc 2007. All rights Reserved.
TeraTech Inc 405 E Gude Dr Suite 207, Rockville MD 20850 | MAP Map | Tel.: +1 (301) 424 3903 | Fax: +1 (301) 762 8185 | Contact Us