Feedback Wanted on Mach-II RadioGroup Form Tag


We're ramping up to the Mach-II 1.8 beta, and a big new feature of Mach-II 1.8 is the custom tag libraries we're introducing to make your life on the view side of your apps much easier.

Most of the tags were pretty straight-forward, but the RadioGroup tag proved to be a bit more complex due to the inherent layout issues. So I put together some thoughts and sent them to the Mach-II Google Group, but in case you don't regularly check the mailing list I wanted to make sure people saw the ideas and gave us feedback.

0 Comments  |  Mach-II 1.8  |  Send
Posted 6/15/09 @ 4:02 PM by Matt Woodward

copyToScope - Yet another Wicked Mach-II Feature!


Fine, I'm biased - I'll admit it! But when you have features like copyToScope(), it's hard not to be. If you've come to Mach-II from a non-MVC background, it's likely you've found that the views in your Mach-II applications have considerably less logic than many traditional ColdFusion templates.

With that said, it's impossible to abstract all the logic from your views, as you typically need to have some <cfif>'s, <cfloop>'s, and <cfset>'s to output your data to the user.

One recurring theme you may have noticed in your own Mach-II applications are a chunk of <cfset> tags at the top of your views.  They might look something like this...

0 Comments  |  0 Trackbacks  |  Mach-II 1.8  |  Send
Posted 6/11/09 @ 2:09 PM by Brian FitzGerald

Philosophy: Our decisions on what CFML engines we support


At cf.Objective() 2009 just a few weeks ago, I was asked why does Mach-II 1.6 support ColdFusion MX 7 since CF9 is so close.  I was kind of perplexed by the question to be honest, but without knowing some history it does seem like a strange decision.  So why does Mach-II 1.6.1 (the latest stable as of May 2009) which is the maintenance release for 1.6.0 support ColdFusion MX 7?  The answer is a simple one.  Planning for the 1.6 release cycle started in the December of 2007 and during our development cycle Adobe had barely released ColdFusion 8 (which was released on July 30, 2007).

We want to support everybody as far back as possible, but our normal rule of thumb is to support back two versions (or as far back as Adobe provides official support for in the case of ColdFusion).  However, our development cycle does not match up with the release cycle of the big three CFML engines and therefore our rule is not a hard and fast rule.  For instance, Mach-II 1.8 will still support ColdFusion MX 7.

I know people will say why not just drop support for 7? There are few points about that:

  • While ColdFusion 9 is coming, it's not here yet and not everybody will be able to upgrade immediately (economy / money). Plus, there are many people still on MX 7.
  • One of Mach-II biggest tenants since the inception of the project is backwards compatibility (BC) and we want people to use the framework as much as possible as long as they have a relatively recent version of a CFML engine.
  • Not all CFML engines support all features. This is actually something that most developers do not have to worry about because they write their applications to be deployed one favor of a CFML engine. Most developers just use one engine or another for developing their applications and don't really care about compatibility.
  • You cannot use this sexy new feature in the language.  What features in ColdFusion 8 does the framework itself need to leverage to new "cool" stuff that are not available in MX 7?

The last point is interesting one to make, because when use this as a rebuttle most people say stuff like:

  • You can't use onMissingMethod()
  • ColdFusion 8 is faster than MX 7
  • ColdFusion 8 has threading

Ok, good reasons for the needs of your application, but name a place in the Mach-II framework core that we need onMissingMethod()?  Maybe your application needs it, but Mach-II's features do not need it.  That point is more about your application's functionality.  The framework itself isn't missing stuff to "innovate" on.

Yes, ColdFusion 8 is faster, but that again is a need of your application.  Internal speedy for the sake of the framework core does not impact what features we can offer; it affects the application you might built on top of it.

The last point in regards to threading you might have gotten me a bit and yes, there a few place where threading would be nice in the framework, but it's not required.  In the end, we wrote a things called the thread adapter which allows us to run code in certain places threaded, but downgrades to serial processing if the engine doesn't support it.  Since it's all automatic, it's nothing you have to worry about -- you either have the ability granted to you application, but gracefully downgrades if you don't. You can read about how to use the threading adapter on our wiki if you are curious.

The main point is that the framework core code itself is not suffering from the lack of onMissingMethod, interfaces or anything other new features that CF8 or Railo or Open BD offers.  Actually, the framework core code itself is doing rather mundane things like shuffling data around mostly so you can develop your applications faster and do the fun stuff instead of pushing the form or url scopes about.  All the sexy stuff that your application does is stuff you write.

Lasly, Team Mach-II wants to support all the major CFML engines - ColdFusion, Railo and OpenBD (official support for Railo is coming soon).  Why would we want to do this?  Because we're cross CFML engine compatibility sadomasochists...not!  Because Mach-II should be able to run anywhere.  It should not be reason why you cannot not use Mach-II for you new application -- because you use an engine that we don't support.  If you have major CFML engine with a relatively recent version, we should support Mach-II on it.  Plus, you would not believe the amount of emails I receive about LylaCaptcha asking me if I support ColdFusion 5 and if I have any plans to support it (Lyla itself is a CFC that uses Java, none of which CF5 supports -- so it is a no go anyways).  So it goes to show you that there is wide variety of users using older versions.

Call us a stick in the mud for supporting the framework on "old" CFML engine versions.  I call it being pragmatic -- at the moment there isn't anything that one CFML engine offers in the terms of features that we absolutely need to implement sexy new feature K or Y yet.  Only good reasons are a compelling way to make good decisions otherwise it's just a decision for the sake of making a decision.

0 Comments  |  0 Trackbacks  |  Articles  |  Send
Posted 5/29/09 @ 4:00 AM by Peter J. Farrell

Project Update - 5/28/2009


Good Day Mach-IIers!  It's been a month since our last official project update, however some you heard a lot about Mach-II at our cf.Objective() sessions or if you came to our Brit's Pub Meetup at cf.Objective().

This Update's Special Thanks

We'd like to thanks a few people for contributing to the wiki in the past month.  I apologize if you contributed and I didn't list your name specifically. Team Mach-II appreciates all the help.  Your contributions are what makes Mach-II a great place to be!

Bravo! Thanks for all of your hard work.  We couldn't do it without you!

Wiki Updates

There haven't been a whole ton of "big" wiki updates in the past month (because we've been busy on tickets and the conference).  Here are few notable ones:

Mach-II Dashboard 1.0.0 Released

We never did blog about it, but the Mach-II Dashboard 1.0.0 went gold on May 12th and is ready for general use.  Download the 1.0.0 version of the Mach-II dashboard now (links to zip file).  Great thing is we're already working onf 1.1.0 so if you want to see new features in that be sure check out the nightly release (available from the code page).

Where is Mach-II "Simplicity" (1.8) Beta?

We've been working hard on the 1.8 alpha version and we are nearly feature complete.  There has been almost 100 tickets filed for the 1.8 alpha milestone and there are just a few left to complete.  Just wanted to thank those that helped put the alpha through it's paces and made it a better release even before we've gotten to a beta.  This release really lives up to the name of "simplicity"!  We hope to get simplicity into beta in the next couple of weeks.

On to Mach-II 1.9 - A Possible List of Features

Wow, we've not even reached a beta for 1.8 and we're already planning 1.9.  If you are curious, here is a tentative list which may or may not be implemented in the end.  We were just brainstorming:

  • Packages (application helpers and sub-systems such as a configurable exception handling and decision system)
  • Implement soft reference manager for timespan cache stategy - #70
  • Provide mixins for views - #227
  • Boostrapper loading page option - #195
  • Improvements and new features in the tag libraries
  • AJAX integration hooks and improved "co-existence" of AJAX
  • RESTful URL support
1 Comment  |  0 Trackbacks  |  Announcements, Contributing, Mach-II 1.8  |  Send
Posted 5/28/09 @ 5:00 AM by Peter J. Farrell

Mach-II Meetup @ cf.Objective() - Thursday May 14th - 5:30pm


Kurt and I have organized a Mach-II Meetup at cf.Objective.  If you are attending the conference, this is a great opportunity to meetup with other Mach-IIers, exchange ideas and meet some members of Team Mach-II.  We love these kind of informal gatherings as this is where we find out how the community feels about the project and where you can influence new features for future versions of Mach-II.

When: Thursday, May 14th - 5:30pm - ends whenever
Where: Gathering in Hyatt Regency Lobby and walking to Brit's Pub at 5:45pm

Also, we're be arrive during Brit's Happy Hour. Which means a great selection of beers @ $4 and all starters @ $5.95.  If you want more info, check out the Happy Hour deals.

So far we have several people that are attending:

  • Peter Farrell (Team Mach-II)
  • Kurt Wiersma (Team Mach-II)
  • Matt Woodward (Team Mach-II)
  • Joseph Lamoree
  • Max Sobol
  • Brian Meloche
  • Steve Withington
  • Adrian Scott
  • Joel Halpern
  • Chris Irwin
  • Taivo Evard

Please comment on this blog if you are coming, so you we don't leave without you. If we lose you, it's a short walk:


View Larger Map

If you are attending the Star Trek IMAX outing, you'll still have plenty of time to come hang out with us and grab some dinner since they will start gathering at 7:45pm and leave at 8pm.

6 Comments  |  0 Trackbacks  |  Announcements  |  Send
Posted 5/12/09 @ 12:00 PM by Peter J. Farrell