Skip to content

What is the release history of Mach II?

thofrey edited this page Apr 1, 2014 · 12 revisions

Table of Contents

  1. A Brief History
  2. Our Release History
  3. Our Future Release Roadmap
  4. Release Notes

A Brief History

The Mach-II framework was originally developed by Hal Helms and Ben Edwards to address maintenance issues using an OO style. The original name of Mach-II was Fusebox MX however it was renamed because Mach-II's OO style bares no resemblance with the procedural style framework like Fusebox. Mach-II has been publicly available for several years now with consistent releases throughout its history. Mach-II is based on an implicit invocation architecture and uses model-view-controller design pattern (MVC).

The Early Years: 2003-04

Several versions were quickly released after the first release in 2003. All releases were developed by Ben Edwards with the input of Hal Helms and later on with Sean Corfield. As typical with a new software products, the releases were frequent as people started learning the framework. As software matures, releases tend to become less frequent because core functionality rarely changes in order to maintain backwards compatibility. Just over a year after the initial release, Sean Corfield assumed the lead developer position to put out Mach-II 1.0.10. Mach-II was heavily used by Macromedia at the time (and still used by Adobe) and additional improvement were needed. By the end of 2004 and just over a year after the first release, Mach-II had put out seven releases of the framework.

New Leadership: 2005-06

The success of Mach-II spurred the development of Model-Glue by Joe Reinhart who liked the concepts behind Mach-II but wanted to implement MVC in his own way. Model-Glue made its a preview release in March, 2005. In July of 2005, Matt Woodward was appointed release coordinator by Ben Edwards to spearhead the development of Mach-II 1.1.0. At the same time, a call to the community for development help was made. Peter Farrell assigned on as one of the developers and brought the use of a non-anonymous subversion repository to Mach-II (a public repository followed). Two versions (1.1.0 and 1.1.1) were developed by Peter and Matt during this period of time.

Commercial Support: 2007-08

GreatBizTools, LLC acquired the copyright to Mach-II in July 2007 from Ben Edwards and became the commercial sponsor of the framework. During this time, Kurt Wiersma assigned on to help with the development of Mach-II 1.5 which was released in October 2007. Mach-II 1.5 was the biggest release of the framework since the initial release and brought new features like subroutines, includes and modules. The beta of Mach-II 1.5 coincided with the unveiling Mach-II's new logo and website.

In the Fall of 2007, GBT also opened a public anonymous Subversion repository in additional to defect management tool and a wiki (Trac). Matt, Kurt and Peter started development of Mach-II 1.6 and discussed the idea of training. With the help of GreatBizTools, Team Mach-II offered a two-day workshop on the framework in April 2008 in Minneapolis, MN in which 40 developers attended. We were proud to be the first object-oriented CFML framework to offer official training workshops.

"Meritocracy": 2009 and Beyond

Mach-II has really shown to the community that is has become a trusted and stable development framework. As the adoption continues to grow, so does our community. With the introduction of the Mach-II Dashboard, new development tools are being discussed and developed such as an auto-updater package to update the framework and dashboard on demand. In order to continue these developments, people have stepped up from the community to become contributors to the project. These steps are making Mach-II into a "meritocracy" (where appointments and responsibilities are "earned" through merit). Now has never been a better time for Mach-II and as we've reached critical velocity as project -- it can only get better!

Our Release History

Version Stable Release Date Lead Developers
1.0.0 8/1/2003 Ben Edwards
1.0.4 8/?/2003 Ben Edwards
1.0.6 9/22/2003 Ben Edwards
1.0.7 11/3/2003 Ben Edwards
1.0.8 12/1/2003 Ben Edwards
1.0.9 2/17/2004 Ben Edwards
1.0.10 10/10/2004 Sean Corfield
1.1.0 11/9/2005 Peter Farrell
1.1.1 11/25/2006 Peter Farrell
1.5.0 10/1/2007 Peter Farrell, Kurt Wiersma
1.6.0 2/9/2009 Peter Farrell, Kurt Wiersma
1.6.1 3/30/2009 Peter Farrell, Kurt Wiersma
1.8.0 RC1 11/30/2009 Peter Farrell, Kurt Wiersma
1.8.0 RC2 12/27/2009 Peter Farrell, Kurt Wiersma
1.8.0 Stable 2/9/2010 Peter Farrell, Kurt Wiersma
1.8.1 Stable 9/2/2010 Peter Farrell, Kurt Wiersma

Read more about our version number philosophy

Our Future Release Roadmap

Version Stable Release Date Lead Developers
1.9.0 - "Integrity" Slated for Q4 2010 / Q1 2011 Peter Farrell & Kurt Wiersma with features developed by Matt Woodward, Mike Rogers & Adrian Scott
2.0.0 - "Velocity" An alpha is planned for Q2 2011 Peter Farrell & Kurt Wiersma with features developed by Matt Woodward, Mike Rogers & Adrian Scott

Release Notes

1.0.0

  • Initial release

1.0.4

  • Fixed initialization sequence error and we now use a configure() method instead of an init() method
  • Fixed PluginManager argument validation in getPlugin()
  • Fixed where EventContext is passed as an argument to all plugin pre/postProcess plugin points

1.0.6

  • Added listener access to properties
  • Fixed EventContext produced errors under load and is now thread-safe
  • Fixed AppLoader.getAppFactory() correctly returns variables.appFactory
  • Added multiple Mach-II applications - allowed multiple Mach-II applications to share the same application scope with the introduction of the MACHII_APP_KEY in the bootstrapper

1.0.7

  • Changed about bootstrapper can simply be included instead of copied to the root of the application (now allows parameters to be overrided)
  • Fixed Listener/Plugin configure() methods were called twice
  • Fixed exception event did not contain original event and now the original event object is available via getArg('exceptionEvent')
  • Fixed where RequestHandler performed unnecessary loops by looping over form and url scope (we now use StructAppend)
  • Additional code improvements

1.0.8

  • Fixed some thread safety issues
  • Additional code improvements

1.0.9

  • Fixed thread safety issues with mach-ii.cfm bootstrapper (locking has been added to make this thread safe)
  • Fixed event.removeArg() return type was not void
  • Improved thread safety during framework load
  • Reduced whitespace output
  • Added error handling
  • Improved core API functionality

1.0.10

  • Added MachII.framework.BaseComponent base component for the Listeners, Plugins and Filters
  • New getProperty() and setProperty() methods
  • New append attribute added to the <view-page> command
  • Plugin execution occurs in the order in which plugins are they are defined in the configuration file
  • New describeBean() function added to MachII.util.BeanUtil

1.1.0

  • PluginManager updated to only execute implemented plugin points in each plugin
  • New TracePlugin to show trace information
  • Better typing of exceptions for more verbose error information
  • Ability to define default values in getProperty() method
  • New invokers (EventInvoker, EventArgsInvoker)
  • Deprecated older invokers
  • Specifying invokers is optional (default invoker is the new EventInvoker)
  • New resultArg attribute added to <notify> command
  • New contentArg attribute added to <view-page> command
  • New <redirect> command
  • Ability to validate Mach-II XML when using an CFML engine that supports XMLValidate()

1.1.1

  • Fixed contentArg append bug
  • Fixed redirect encoding bug
  • Fixed non-critical listener invoker mismatched argument name bug
  • Fixed postProcess event name displayed in TracePlugin
  • Fixed strange "No Event-Handler Defined" exception bug
  • Fixed framework loaded twice on initial startup bug
  • Fixed resultValue error bug
  • Ensured that isPropertyDefined() method was used by framework
  • Improved granular control of trace output in TracePlugin by allowing dynamic parameters
  • Improved display quality and added additional data in TracePlugin
  • Improved <redirect> command limitations
  • Improved load time on initial application load or reloads by about 25%
  • Added a method that returns version number of framework
  • Added enhancement to turn of trace output on a per request basis
  • Added better ColdSpring integration
  • Added an enhancement to get the event name that started the request lifecycle
  • Added Application.cfc support (new bootstrapper)

1.5.0

  • XML includes
  • Modules (sub / peer applications)
  • Subroutines
  • <redirect> command enhancements
  • Complex property datatypes
  • URL management features
  • Bindable placeholder support

1.6.0

  • Caching package including TimeSpanStrategy and LRUStrategy
  • Logging package including MachIILogger, EmailLogger and CFLogLogger
  • Publish / subscriber listener invoking (<message> command)
  • Better Application.cfc bootstrapper integration including onSessionStart/End plugin points
  • ColdSpring property dynamic method generation injection
  • UtilityConnector
  • Unit testing coverage of new components (utilizing MXUnit)

1.6.1

  • Buglet fixes for 1.6.0 release (maintenance release)

1.8.0 - "Simplicity"

*Things should be made as simple as possible, but not simpler. (Albert Einstein, 1879–1955)

1.8.1

  • Buglet fixes for 1.8.0 release (maintenance release)

1.9.0 - "Integrity"

*Integrity is the essence of everything successful. (Richard Buckminster "Bucky" Fuller, 1895-1983)

Milestone 1 target for Mach-II 1.9.0 - Integrity:

  • Boostrapper "loading page" option - (trac-wiki) #195 "enhancement: Loading Page option in Bootstrapper (closed: completed)")

  • Add 'prepend' attribute to the view-page command - (trac-wiki) #420 "enhancement: Add 'prepend' attribute to the view-page command (closed: fixed)")

  • Improvements to the logging package

    • Use <cfhtmlbody> for M2 logger output when on Open BD - (trac-wiki) #439 "task: Use for M2 logger output when on Open BD (closed: fixed)")
    • Allow for MachIILogger use IP list to show debugging output - (trac-wiki) #329 "enhancement: Allow for MachIILogger use IP list to show debugging output (closed: completed)")
  • Improvements to the HtmlHelperProperty

    • Add support for nested "inline" JS in asset packages - (trac-wiki) #469 "enhancement: Add support for nested "inline" JS in asset packages (closed: fixed)")
    • Add option to add JS before HTML body in HtmlHelperProperty - (trac-wiki) #230 "enhancement: Add option to add JS before HTML body in HtmlProperty (closed: fixed)")
  • Miscellaneous improvements

    • Add ability to use a module event as default event - (trac-wiki) #382 "enhancement: Add ability to use a module event as default event (closed: fixed)")
    • Add helper methods to ViewContext and BaseComponent for environment related functionality - (trac-wiki) #467 "enhancement: Add helper methods to ViewContext and BaseComponent for environment ... (closed: fixed)")

Milestone 2 target for Mach-II 1.9.0 - Integrity:

  • SSL support for event-handlers requires secure/non-secure URLs via BuildUrl and like methods - (trac-wiki) #287 "enhancement: Redirect Command and Function Support for http/https Redirection (closed: fixed)")

  • Native i18n support - new ticket and M2SFP document

  • Improvements to the HtmlHelperProperty

    • Compression and concatenation of JS / CSS files into single assets - (trac-wiki) #274 "enhancement: Adding Compression and File Concatenation to HtmlHelperProperty (closed: Moved to GitHub)")
    • Asset hosts - (trac-wiki) #340 "enhancement: Add asset hosts for HtmlHelperProperty (closed: Moved to GitHub)")
  • Miscellaneous items for enhancement and improvement

    • Add support to auto-format route parameters in URL routes - (trac-wiki) #392 "enhancement: Add support to auto-format route parameters (closed: fixed)")
    • Implement threading adapter for Railo and !OpenBD - (trac-wiki) #85 "enhancement: Implement threading adapter for Railo (closed: fixed)") / (trac-wiki) #112 "enhancement: Implement threading adapter for OpenBD (closed: fixed)")
    • Add support for file extension to MIME-type conversion in accept attribute in uploadFile() - (trac-wiki) #455 "enhancement: Add support for file extension to MIME-type conversion in accept attribute ... (closed: fixed)")
    • Add support for optgroup form tag - (trac-wiki) #527 "enhancement: Support the optgroup form tag (closed: fixed)")
    • Performance improvements and whitespace reduction changes to form custom tags - (trac-wiki) #529 "task: Improve whitespace output and speed of checkboxgroup form tag (closed: fixed)"), #530 "task: Improve whitespace output and speed of radiogroup form tag (closed: fixed)")

Milestone 3 for Mach-II 1.9.0 Integrity:

  • Endpoints - Project-Meetings, 2009-12-20 - (trac-wiki) #15 "enhancement: Provide a remote adapter for Mach-II event handling (Endpoints) (closed: fixed)")
  • Improvements to bootstrapping and options
    • Isolation of module loading - (trac-wiki) #320 "enhancement: Isolation of module loading (closed: fixed)")
    • Add the ability to set certain bootstrapper variables via Environment property (i.e. config mode) - (trac-wiki) #444 "enhancement: Add the ability to set certain bootstrapper variables via Environment ... (closed: fixed)")
    • Add ability for dynamic config mode to watch for changed cfcs - (trac-wiki) #445 "enhancement: Add ability for dynamic config mode to watch for changed cfcs (closed: fixed)")

Milestone 4 for Mach-II 1.9.0 Integrity:

  • Validation - Project-Meetings, 2009-20-12 - needs ticket
  • Various improvements
    • Refactor ExpressionEvaluator - (trac-wiki) #212 "task: Refactor ExpressionEvaluator (closed: Moved to GitHub)")
    • Implement a pattern loader that allows listener, filters, and plugins to be loaded by convention - (trac-wiki) #220 "enhancement: Implement a pattern loader that allows listener, filters, and plugins to ... (closed: Moved to GitHub)")

2.0.0 = "Velocity"

  • Official features and enhancements have yet to be announced

Back to FAQs

Clone this wiki locally