At the urging of several people, I've taken my Blackstone Wishlist, stripped out requests that made it into CFMX 7, 7.0.1, and 7.0.2 as well as requests that have already been mentioned on a plethora of other blogs (many of which I would like to see), and came up with the following things I'd like to see considered for the ColdFusion MX 8 (Scorpio) release. Apologies for any requests that may have already been mentioned on other blogs.
Drum roll please (in no particular order)...
- I'd like to see a config file (CF, XML or otherwise) that runs when the server is restarted. This file could contain info on queries to automatically run and default variables to be assigned for the server or defined applications.
- Add functions to programmatically list all current sessions/applications on a server (without the Java workarounds we're currently using). Include info such as when the session/application was started, how long until expiration and whether or not it has already expired. Examples are getSessions(), getClients(), getApplications(), getSession(), getApplication(), etc
- Enhance the CF Scheduler so that it can operate in a cluster. I want to synchronize events between servers in a cluster so that you can setup a scheduled task on any server, and it would replicate out to all the other servers (similar to the buddy server concept), but the event would only fire on a single server, not on all of them at once
- Further enhance the cf scheduler to use its own thread count (as opposed to the one that's defined in the CF Admin now). This would allow the scheduler to use a different threading model than "active" applications on the server
- Ability to put a scheduled task on hold. Currently there's no way to temporarily disable the execution of a schedule task without deleting it (or changing the execution URL to a non existent page).
- Addition of weekday and weekend only durations. Currently, you can schedule a task to execute daily every n hours/minutes/seconds, but there's no way to specify you want this to occur only Monday through Friday (business days) or only on Saturday and Sunday. Sure you can code this into the pages you are executing, but that code has to be used with each task. It's much better if this can be made part of the scheduler.
- Task execution redundancy. Currently, if a scheduled task fails to execute (for instance if the server is being rebooted during execution time), there's no mechanism in place to automatically attempt to re-run a task. I've built this type of redundancy into several applications I've written that have scheduled tasks, but again, it has to be done on a per application/per server basis.
- Better reporting on task execution. I'd love to see a new column on the ColdFusion Administrator page for scheduled tasks that shows the last date/time the task was successfully executed as well as the next date/time the task was scheduled to execute. This would be invaluable for monitoring and troubleshooting.
- Deprecate cfscript. This would keep people from asking for more enhancements, when it's probably not going to happen. I used to be for enhancing cfscript, or throwing it out and allowing ActionScript in CF instead, but these days, I'm perfectly happy with all tags (I guess I'm mellowing out in my old age).
- Mechanism for dealing with name conflicts (overriding) with native CF functions/tags in order to future proof. So, if I already have a UDF called wrap(), upgrading my version of CF won't break my app when CF get's its own wrap() function
- Build stronger partnerships with companies like IBM, Actuate, etc to get support for CF into their products
- Make CF's security framework more granular. I always need an additional level of security beyond roles. How about groups, roles, and permissions. While you are at it, give us a way to programatically get a list of users currently logged in, their roles/permissions, etc
- Add IMAP, NNTP, and SNMP tags
- Since there is already support for Crystal Reports via cfreport, I'd like to see integration with Actuate too. It's J2EE based, so I would think that there are several integration points possible here.
- Add the Lotus Notes JDBC driver, free from IBM to the list of native drivers
- Fix reFind() and reFindNoCase() to return the positions for all matched subexpressions
- Spell check tag
- When a hotfix is applied, log it in a server var available in the CF Admin so that an admin can tell what hot fixes have been applied
- Add a TRACE attribute to CFQUERY for debugging so that we can see what CF is doing with the underlying JDBC driver. Most drivers have a trace capability that can be logged to a text file, but I'd like to see what's happening from a CF's perspective so I can see exactly what calls to my drivers it is making
- Scrap the JS validation in CFFORM and implement the qForms JS API from PengoWorks. It's much more powerful, flexible, and extensible and works very well with CF.
- Add an interface to the CF Admin to allow me to "reset" a datasource without having to restart the CF server. Right now, several of my iSeries DB2 data sources (JTOpen driver) occasionally hang. The rest of the CF server is fine as are the rest of my data sources. In order to free the hung data source, I have to restart my CF Application Server service. I would rather kill the connection to the hung data source and restart it (if that's how it works) without having to restart the server. It would be even better if I could to this programmatically, so I could call it from a cfcatch block if I detected the specific error a hang causes
- cfsocket tag (like in DRK5)
- Better caching than cfcache provides. See Brandon Purcel's CF_Accelerate. Not sure if you could replace cfcache with this or if it would be a new tag. I'd also like to see improved query caching options.
- In the CF Admin (and programmatically), give us a way to see and admin (expire) cached queries.
- Allow for mappings on an application level so that mappings defined in the CF Admin can apply to either the entire server, or a specific application.
- Official framework for unit testing CFCs
- Support for portlets as outlined in JSR 168 and JSR 170. I'd really like to see the ability to create a portlet in CFML, then have CF generate a WAR file for the portlet that can be deployed to any compliant portal server.
- Allow parameters for the JDBC URL to be passed dynamically at run time if possible. For example, right now, if I want to add an extra parameter to my data source just for testing, I can't do it from the cfquery tag. I have to go in and make the change in the CF Admin, and then change it back later if I want to "undo" it.
- Integrate with JMS (I know that Sean worked on an example JMS gateway, but I'd like to see it become "official")
- Allow sorting scheduled tasks within the CF Admin alphabetically by name, or time (interval). I have a server with 600+
scheduled tasks, and I'd like to group by time so I can tell whether I need to move any to a different time to avoid using too many of my server's available threads.
- Within a CFC method (and a UDF), allow us to VAR variables anywhere, not just at the beginning of the method. I often need to var a variable with a value that is dependant upon another condition (such as a conditional based on an argument being passed in). Because I have to var before any other cfml statements, I first have to var the variable and set it to empty (var=""), then do the conditional later. I'd like to see VAR implemented like in JavaScript. It would be great to var a loop variable inline, as opposed to at the top of the page for example
- Make it possible to deploy a "clone" of an existing instance of a CFMX deployment right from within the CF Admin of that instance. Similar to your archive and deploy, but have the deploy actually create the new instance and then clone the original
- Make it easier to tie a different jvm classpath to each instance of CFMX when using multiple instances.
Some comments on a few of them:
20 - qForms - I thought I read of someone building this integration using XSL and the XML cfform format? It would certainly be possible given how flexible the XML forms stuff is.
26 - cfcUnit? :) FWIW, both Web Team and Hosted Services have standardized on cfcUnit for our unit testing needs. What do you mean by "Official framework"?
32 - clone instance - Isn't this possible today with the Instance Manager / Cluster Manager in CFMX 7 Enterprise? I've certainly used it to create a new CFMX instance on JRun and build a cluster with it, all inside CF Admin.
Lots of good suggestions amongst the other points too - those were the only ones I had questions about.
Thanks for the feedback. We really do use the scheduler quite a bit in one of our main extranet services. My scheduler list is the culmination of the many features we've wanted to see over the years. We've created workarounds for many of them, but I'm always happy to see functionality extended to the server.
20 - that was actually Jim Bambrough, who used to work for me but has recently moved on. The project got started, but it was never completed. I haven't had the resources to pick it back up again.
26 - we're using cfcunit right now as well. I'd just like to see something built into the language/server, making it more official (as in supported). Not a big deal either way, just a "wish" .
32 - as far as I know, you can create new instances, but you can't create a clone (all admin settings, etc) of an existing instance without first creating a ear/war of the instance you want to generate that from. What I'd like to be able to do is go into the instance manager, point to an existing instance and tell the admin to create a new instance that's a clone of the instance I choose - all in one step.
While I'm at it, what I'd really like is a single console to admin multiple cfservers across physical installations ;-)
I would also like to see the application level mappings as I've run into conflicts many a time when someone on a shared host is allowed to create a mapping for /objects or /images. That can really screw up a site!
Thanks for sharing your list!
Mike.
I think I know exactly the requirement you mean here. In fact I'm close to releasing a tool ('Coldcase') to do exactly that. Its basically an API, administrator and custom tag for storing simple values and CFCs that can load itself (including the CFCs) from an XML heirachical configuration file on first request. Eg.
<cfset myColdcase = createObject("component",
"org.ben-x.coldcase.ColdcaseLocator").ini().getColdcase() />
<cfset spamLimit = myColdcase.getProperty("contractApp.spam.spamlimit") />
<cfset mailManager =myColdcase.getService("contractApp.utilties.mailmanager") />
I really just wanted to both centralise configuration across instances and applications and divorce my service's configuration (ie implementation) needs from their clients.
Anyway, I notice most CF8 wishlists are admin related, but I really think Adobe can't afford to forget the small-installations and build on its ease-of-use. I agree that the CFFORMS XML forms are ripe for heavy exploitation, but they need some love to bring them fully to the masses.
Cheers, and thanks for the article.
We can have your wow gold,buy wow gold,wow gold game,world of warcraft gold, wow Gold Cheap wow, Cheap wow gold,world of warcraft gold deal,Cheap WOW Gold ...
Welcome to our website for you World of Warcraft Gold,Wow Gold,Cheap World of Warcraft Gold,wow gold,buy cheap wow gold,real wow gold,sell wow gold, ...
Here wow gold of 1000 gold at $68.99-$80.99,World Of Warcraft Gold,buy wow gold,sell world of warcraft gold(wow gold),buy gold wow lightninghoof instock Cheap wow gold,cheapest wow gold store ...
<strong>wow gold</strong>--buy cheap wow gold,sell wow gold.welcome to buy cheap wow gold--cheap, easy, wow gold purchasing.World of Warcraft,wow gold Super ...
Wow gold- Gold for buy gold wow lightninghoof instock EU-Server: ...wow Gold EU: starting from 84,99?; 3000 WoW Gold EU: starting from 119,99?. wow Gold- Leveling Services: ...
We can have your wow Gold,buy wow Gold,wow Gold game,wow gold, Cheap wow Gold, Cheap World of Warcraft Gold,world of warcraft gold deal,buy cheap wow gold,Cheap WOW Gold ...
Here wow Gold of 1000 gold at $68.99-$80.99,World Of Warcraft Gold,buy wow Gold,sell world of warcraft gold(wow gold),Cheap wow gold,cheapest World of Warcraft Gold store ...
We have created full library of functions where I work that wrap as many tags as we can into scrpt that weren't in script so we can stay in script as much as possible.....
Would LOVE if ActionScript and CFSCript were harmonized....
at startup, first loads the file variables and plops them into the framework.
it tells it which queries to load for constants, and sets all the site parameters (so you can easily have multiple sites with the same code).
it sets the application vars like default cache/session times etc.
we actually have two sets of ini's.
one is held on an encrypted partition and loads keys and passwords into the site so they are never in the code, the other has the more banal stuff.
what would a built in one do differently? seriously, what would be the difference?
var local=structNew();
local.i = 34;
local.ii = 0;
var retvar = structNew();
retvar.queryResult = theQuery;
retvar.userMessage = theUserMessage;
retvar.errorCode = theErrorCode;
...at the end of cfc after functionality and error trapping
return retvar;
everything set to retvar comes out with it, and everything in local stays in the cfc you can
add anything to the structures in your cfc ad hoc and it has been effectively been var'ed already.
a little long to type but you know what stays in and what goes out..