Fusebox was a
web application framework
A web framework (WF) or web application framework (WAF) is a software framework that is designed to support the development of web applications including web services, web resources, and web APIs. Web frameworks provide a standard way to build an ...
for
CFML
ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine. Multiple commercial and open source implementations of CFML engines are availab ...
and
PHP
PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
. Originally released in 1997, the final version, 5.5.2, was released in May 2012. In January 2012 the rights to Fusebox were transferred from TeraTech to a team of five developers, who removed the rights and placed the framework in the hands of the community.
[Yahoo! Groups]
/ref>
Fusebox was intended to be easy to learn and provide benefits by helping developers structure their code through a set of simple conventions. Fusebox also allowed advanced developers to build large applications, leveraging design patterns and object-oriented programming techniques if they wish.
Overview
Fusebox provided web application developers with a standardized, structured way of developing their applications using a relatively straightforward and easy to learn set of core files and encouraged conventions. In addition to the framework itself, Fusebox became closely associated with a Web application development methodology developed by its proponents known as " FLiP" (for Fusebox Lifecycle Process). (Many people refer to Fusebox as a "methodology", but in fact, it was a development framework. FLiP, however, is a methodology). The framework has been ported and used in ASP, JSP, Lasso
A lasso ( or ), also called lariat, riata, or reata (all from Castilian, la reata 're-tied rope'), is a loop of rope designed as a restraint to be thrown around a target and tightened when pulled. It is a well-known tool of the Spanish an ...
, Perl
Perl is a family of two high-level, general-purpose, interpreted, dynamic programming languages. "Perl" refers to Perl 5, but from 2000 to 2019 it also referred to its redesigned "sister language", Perl 6, before the latter's name was offic ...
/ CGI and PHP
PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group. ...
as well, though the CFML and PHP versions of Fusebox were the only versions to gain momentum.
Fusebox dealt primarily with the effort of wiring together view states (pages) with controller actions (form submits, etc.) and the front-end of the business-logic tier. The framework did not address creating and maintaining business logic In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, stored, and changed. It is contrasted with the remainder of the software that might ...
such as database interaction or service layers
Concepts
Fusebox, Circuits and Fuseactions
The original concepts behind Fusebox were based on the household idiom of an electrical fusebox that controls a number of circuits, each one with its own fuse. In a Fusebox web application, all requests are routed through a single point (usually index.cfm
for CFML) and processed by the Fusebox core files. The application is divided into a number of circuits (usually in sub-directories) which are intended to contain related functionality. Each circuit in the application is further divided into small files called fuses that should perform simple tasks. As such, Fusebox is considered an implementation of the front controller
The front controller software design pattern is listed in several pattern catalogs and is related to the design of web applications. It is "a controller that handles all requests for a website," which is a useful structure for web application dev ...
, a common design pattern
A design pattern is the re-usable form of a solution to a design problem. The idea was introduced by the architect Christopher Alexander and has been adapted for various other disciplines, particularly software engineering. The "Gang of Four" boo ...
.
URLs within a Fusebox web application are usually of the form index.cfm?fuseaction=cname.fname
where "cname
" is the name of a circuit and "fname
" is an XML-defined "method" within that circuit known as a fuseaction. The query-string variable name "fuseaction" can vary depending on configuration parameters, so not all applications using Fusebox need to use the action variable "fuseaction".
Naming conventions
Fusebox encourages, but does not enforce, separation of presentation logic from business logic. It uses a number of file naming conventions to encourage this separation: presentation files begin with dsp (display) or lay (layout), database access files begin with qry (query) and general business files begin with act (action). Typical file names are in the format refix ilenamelike dsp_loginform.cfm. Additional naming conventions are used by some Fusebox developers but these are the most common ones.
Exit Fuseactions
Another concept that Fusebox encourages is to parameterize any exit points in a web page, coding them as variables that are set in the circuit control file. These exit points are known as XFAs - eXit FuseActions. The idea is that by parameterizing the exit points in a web page, the flow of control can be updated more easily, allowing more reuse of web pages or fragments thereof.
FuseDocs
Associated with the framework, but not strictly part of it, is the concept of FuseDocs which is a semi-formalized form of documentation written in XML that specifies the inputs and outputs of each fuse file. There are third-party tools available which can use FuseDocs to do things like generate test harness code.
History
Fusebox had several major revisions over the years. In Fusebox 3, the control files were all written in the underlying programming language (e.g., fbx_Switch.cfm for CFML). Fusebox 4 and later versions use XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable ...
for the control files (fusebox.xml and circuit.xml), but other framework components are written using the underlying programming language (e.g. fusebox5.cfm, again for CFML). In theory, this helps improve tool support for the framework. It also allowed for the pre-parsing and generation of a single template for processing each fuseaction, greatly increasing performance. Fusebox 5.5 allows the XML files to be omitted if certain conventions are followed.
Fusebox (version 1)
Fusebox 1 grew out of a conversation on the CF-Talk mailing list in April 1998. Steve Nelson and Gabe Roffman are credited with creating the original Fusebox though the first Fusebox program was written by Josh Cyr. The methodology was constantly evolving and beyond a whitepaper and a handful of examples, no official documentation existed. Very few developers were exposed to Fusebox during these early days.
Fusebox 2
Craig Girard and Steve Nelson (along with Hal Helms and Nat Papovich) wrote a book, Fusebox: Methodology and Techniques, which was published in 2000 by Fusion Authority. Programmers who followed the practices described in the book were said to be doing "Fusebox 2."
XFB
Hal Helms built upon Fusebox 2 and called his ideas eXtended FuseBox, or XFB.
Fusebox 3
Fusebox 3 (written primarily by Hal Helms, John Quarto-von Tivadar and Nat Papovich) was an effort by leading members of the Fusebox community to incorporate XFB and other ideas into a reusable library, known as the "core files." A simple API
An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how ...
allowed application code to communicate with the core files. Upon release in the fall of 2001, Fusebox became a framework rather than a methodology
In its most common sense, methodology is the study of research methods. However, the term can also refer to the methods themselves or to the philosophical discussion of associated background assumptions. A method is a structured procedure for br ...
. A subsequent 3.01 release addressed minor issues. Fusebox 3 was something of a sea-change from Fusebox 2. Only the original principles remained relatively unchanged; a Fusebox 2 and Fusebox 3 application are structured very differently.
Fusebox 4
Fusebox 4 was a complete rewrite of Fusebox 3. Th
license
for the core files (which is open source) is held by a private company owned by Hal Helms and John Quarto-von Tivadar
The Fusebox Corporation
(which appears to be a defunct corporation).
Fusebox 4.1 introduced some new XML grammar elements beyond those available in 4.0 that let you declare, instantiate and manipulate objects (COM, Java and ColdFusion Components) as well as web services. These features have provided Fusebox developers with the means of tying object-oriented models (i.e. business-logic) directly into their controllers. However, many Fusebox developers used object-oriented or highly structured models in earlier versions of Fusebox or in the current versions without use of these grammar elements.
Fusebox 5
In 2006, The Fusebox Corporation asked Sean Corfield to take the lead in developing the next iteration of Fusebox. Fusebox 5 was another complete rewrite with new features and improved performance. Fusebox 5 nearly completely maintained backwards-compatibility with Fusebox 4.1. In November 2006 The Fusebox Corporation transferred ownership of the core files and fusebox website to TeraTech under the guidance of TeraTech president and Fusebox speaker Michael Smith. TeraTech announced that Fusebox will remain open source and is seeking to increase community involvement in the project again. Fusebox 5.1 and all subsequent releases are licensed under th
Apache Source License 2.0
In February 2007 the members o
Team Fusebox
met at the Frameworks conference in Bethesda Maryland and created a plan of action for community involvement using volunteers in nine different areas of Fusebox.
Fusebox 5.5
This release focused primarily on adding a set of conventions that allow the creation of Fusebox applications without XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable ...
configuration files. The use of these new features instead of XML is called "implicit Fusebox".
* Alpha testing began in June 2007
* A Public Beta became available at Adobe MAX in October 2007
* The official release of Fusebox 5.5 became available at the beginning of December 2007
Fusebox 5.5.1 and FuseNG
The release of Fusebox 5.5.1 in March 2008 was the last release by Sean Corfield. In August 2008, Adam Haskell took over development, but became frustrated with the Fusebox organization, and attempted to branch a new framework called FuseNG (NG for Next Generation, a Star Trek reference). FuseNG quickly lost steam and ended without a release.
Fusebox 5.6
In January, 2012, a team of five community developers led by John Blayter announced on the Fusebox mailing list that they had obtained the rights and copyright of Fusebox from TeraTech. The framework code has had the copyright removed and i
available at GitHub
to encourage community participation
Fusebox 5.6 goals
were announced, but were never implemented.Fusebox 5.6 - Fusebox
/ref>
See also
* Comparison of web frameworks
References
External links
Official Website, Fusebox.org
Official Fusebox mailing list, at Yahoo Groups
(sys-con.com, September 2003)
(sys-con.com, November 2001)
Fusebox mailing list at House of Fusion
{{DEFAULTSORT:Fusebox (Programming)
Web development software
CFML programming language
Web frameworks