About
The official blog of Team Mach-II and is the best place to stay up to date on all things Mach-II.
Blog Search
When is Mach-II 1.6 going to be released?
Ah, the age old question. While we could say "it will come when it comes," this is a bit of a cop-out phrase, and we also feel it promotes secrecy and uncertainty as opposed to the openness and transparency that is required for a great, community-driven open source project.
We could easily go into a Beta of Mach-II 1.6 today, but since Kurt and I are both going on vacation (independently of course), we'd prefer to wait on an official beta so we are able to better respond to your questions and comments. Remember that you can grab the bleeding edge release (BER) from SVN or our nightly builds, so don't feel as though you have to wait for the beta in order to start gearing up for version 1.6.
Our plan at this point is to release the Beta in early June once the both of us get back, since Kurt and I will be the point people when it comes to discussing the particulars on how logging, caching and the new ColdspringProperty.cfc works. A nice side effect is that both our brains will be fresh from all the relaxing we get on our vacations, so we'll be ready and eager to handle all the beta activity.
Mark your calendars for early June, 2008 for the Mach-II 1.6 Beta! In the meantime, be sure to download the BER Zip of Mach-II 1.6 available from the code page of our website.
What's New in Mach-II 1.6 and 2.0?
Peter gave an extremely well-received presentation at cf.Objective() covering what's new in Mach-II 1.6 and even a bit about what we have in mind for version 2.0, and if you've been curious, be sure to download his presentation! We'll have an official beta for 1.6 available in mid-June, and development on 2.0 is already underway.
Some of the highlights for 1.6 include:
- Improved Application.cfc bootstrapper
- Publish/subscribe listener method invocation
- Caching package
- Logging package
- ColdSpringProperty.cfc (replaces the ColdSpring plugin)
- Miscellaneous fixes and improvements
The caching and logging packages in particular are extremely flexible, powerful new features in 1.6. Mach-II 1.6 ships with two caching strategies and three loggers, but we've made it very easy to extend and implement your own. For example, if you want to use MemCache, Mach-II 1.6 does not ship with that functionality, but it's very simple to add this--or any other caching strategy--yourself.
There's much more information and details in Peter's presentation, so grab it now and learn all about the fantastic new features in 1.6, as well as what we have planned for Mach-II 2.0!
Mach-II 1.6 Progress with Beta Coming Soon
It's been a while since Team Mach-II briefed users on the progress of Mach-II 1.6 -- probably too long. Before I get into the details, I want to personally mention that I'm extremely excited about this release for many reasons. I'd like to thank Kurt Wiersma (our resident geek) for all his hard work on 1.6 and playing devil's advocate with me when it came to features, architecture and final implementation. Coding with constant input creates better code than solo coding. I look forward to working on Mach-II 2.0 (we've got great things in store).
We've added many major features:
- Mach-II caching appears to be the flashy new feature. We're offering a very flexible implementation that allows you to either use basic caching strategies (time span or LRU) or the ability to write your own caching strategy. The possibilities for developer extended caching is pretty much limitless as the architecture allows you to go as far as hooking into open-source Java project EhCache or a distributed memory caching system like MemCache (which is used at sites like Slashdot and LiveJournal). The caching feature offers controller-level caching which was hard accomplish before 1.6, however it does not replace the need to add caching at other layers of your application such as in the model layer or at the database.
- Mach-II logging is a feature that has been requested for a long time as it allows developers new ways of debugging a Mach-II application by using the one of the bundled loggers or creating their own. We wanted to get this feature into the Mach-II 1.5 release, but due to time limitations it was pushed into the 1.6 release. However, it is probably a good thing as 1.5 introduced new property datatypes (structs, arrays, Property.cfc). The new Property.cfc was so new at the time that we never envisioned using a Property.cfc as a way for setup and configuration a Mach-II specific feature. The logging feature is configured by declaring the MachII.logging.LoggingProperty as a property in your xml configuration file. This approach allows us to offer greater flexibility to develoeprs for configuring and extending the logging system. We also went in the same direction for caching and use the MachII.caching.CachingProperty for setup and configuration of the caching features.
- The publish-subscriber listener invoking (broadcasting messages) is a new feature that has gotten some people very excited. Broadcast style listeners decouple listeners from the event handlers whereas using the <notify> command couples listeners to event handlers. The "broadcast" layer of abstraction would allow you to register an audit / logging layer by merely adding it as a subscriber to the broadcasted message instead of adding a notify to every event handler. Also, message broadcasting lets you easily swap listeners by changing the messages it subscribes to and saves you from editing event handlers (and possibly introducing new errors). As a few people have pointed out in past discussions, these two reasons are a bigger maintenance issue than most developer realize.
Some of these major features have resulted in few neat byproducts or smaller features:
- Mach-II 1.6 ships with a threading adapter that allow us to pass arbitrary bits of code (basically a CFC, method name and arguments) to be executed in a thread (cfthread). One of problems is that the threading implementations between CFML engines varies somewhat. The variation causes problems as we would like to support all CFML engines that offer threading capabilities. The thread adapter allow us to abstract the different threading implementations and create a common API for calling code to use. Currently, threading is only available on Adobe ColdFusion 8 as the BlueDragon 7 currently has some limitations in the context of Mach-II's implementation (these limitations are supposed to be changed in a future release). Support for cfthread in Railo is coming in a future version of Railo as well. As the CFML engines evolve, we'll be able to support threading with the Mach-II core with the threading adapter (both the caching and publish/subscribe features utilize the threading if available on the deployed CFML engine and atuomatically downgrade to serial processing if not available on that specific engine).
- Simplify your Application.cfc. We have added support for onSessionStart and onSessionEnd as new plugin points in Mach-II plugins. Of course, this is only available when using Application.cf (via mach-ii.cfc). This addition allows you to move onSessionStart/End logic into the Mach-II arena and resuse logic that exists in your model layer. This leaves your Application.cfc devoid of complicated logic within your Application.cfc and allows for easier module intergration (no need to copy onSessionStart code from a third-party module like MachBlog into you application). We have also added basic onApplicationStart and onRequestStart methods in the mach-ii.cfc which allows you to ommit these methods in your Application.cfc unless you need to add special functionality in your Application.cfc that is not offered by the basic methods.
At the moment, all the features described above have been implemented and comitted to the repository. Check out a nightly and download a zip the lastest nightly build of 1.6. All in all this is a very exciting release and we have plenty of new things in the queue for Mach-II 2.0. Look for a Beta of Mach-II 1.6 in early April.
Posted 3/30/08 @ 11:00 AM by Peter J. Farrell
Mach II 1.6 Spec: Caching
Team Mach II has been busy working toward a beta release of Mach II 1.6. We have started implementing a new caching feature for Mach II based on a proof of concept which Peter wrote. We have produced a spec and would like to get the community's feedback on this proposed feature. I want to thank Andrew Powell for contributing some ideas around creating a pluggable caching strategy.
Mach-II 1.6: Sneak peek...
The photo says it all.

Mach-II 1.6 Spec: Application.cfc Bootstrapper Enhancements
Team Mach-II is proud to release a specification for a proposed new feature for Mach-II 1.6 and we need your comments / thoughts / reactions. Please read the entire specification and if you have questions or comments please comment on our new Trac install on Ticket #5.
Summary
Integrating third-party (such as MachBlog) that use sessions require you to copy and paste onSessionStart / onSessionEnd specific code into your Application.cfc/cfm. While this may be simple to do, it becomes a tedious and error prone process when you want to upgrade your module to a new version. This would also apply if another team of developers maintain the code to the module you integrate with your application. Module integrating should be as easy as drag 'n drop by adding the module configuration file to your base Mach-II XML configuration file. Currently, this is not possible when integrating modules.
Another problem is that Mach-II applications require users to manually call methods in the mach-ii.cfc boostrappers when using Applications. These could easily be streamlined for standard Mach-II applications, allowing developers to override default options by overriding the method in their Application.cfc
Read the entire specification
http://docs.google.com/Doc?id=dhjcwfn4_44crp8tx
Mach-II - We're Community Driven!
Posted 11/7/07 @ 7:40 AM by Peter J. Farrell
Mach-II 1.6 Spec: Broadcast Style Listeners
Team Mach-II is proud to release a specification for a proposed new feature for Mach-II 1.6 and we need your comments / thoughts / reactions. Please read the entire specification and if you have questions or comments please comment on our new Trac install on Ticket #4.
Summary
There has been discussions in the past that Mach-II does not allow for multiple listener notifications via a single "broadcast" command. Model-Glue's entire listener (aka controllers in Model-Glue) works on a broadcast system versus Mach-II somewhat more direct approach with the <notify> command. Any listeners have has a registered interest in a particular broadcasted message will receive the message for use. This allows you to invoke multiple listener methods by broadcasting a single message.
Read the entire specification
http://docs.google.com/View?docid=dhjcwfn4_38gnmpfc
Mach-II - We're Community Driven!
Posted 11/4/07 @ 4:56 PM by Peter J. Farrell
Mach-II 1.6 Development Started & Small Updates
Just wanted to let everybody know that we've started a new directory in our Subversion repository for development of Mach-II 1.6. Point your favorite SVN client if you wish to use the BER here:
http://greatbiztoolsllc-svn.cvsdude.com/mach-ii/framework/1-6-0/trunk/
Also, a friendly reminder that nightly zips of the BER are available. Ok, they are not so nightly at this point, but when significant features or enhancements are checked in we'll (manually) generate a nightly build. The build, zip and ftp is already handled by our ANT build file, I just haven't found the time to add a cron task. Nightlies are available as a ZIP from our nightly build directory:
http://www.mach-ii.com/nightly/
Also, I'm working on a new application skeleton for Mach-II 1.5. Not a lot has changed except for the addition of a few xml commands in the configuration file and a couple new "suggested" directories. I hope to release a new version in the near future as I've gotten a few emails about this already. FYI, the 1.1.1 skeleton works just fine with Mach-II 1.5.
Lastly, we're working on more documentation for Mach-II. Just wanted to thank Brian Meloche who recently contacted me about writing some documentation for the framework. He even included a sample technical writing sample for review. Brian is a big user of Mach-II and promotes it heavily at the company he works at. We'll update the resources page as new documentation is updated or created and I'll be sure to leave a note on this blog as notification.
Posted 10/19/07 @ 8:16 PM by Peter J. Farrell
