"...doctrine is not the point of arrival but is, on the contrary, the
point of departure..."
Long hidden in the world of academia, the World Wide Web began to attract the attention of businesses in the early 1990s. Initially unsure of how to best utilize the power of "infinite communication," companies were finally realizing the potential of the web. At the same time, emerging technologies were making it possible to create increasingly capable sites.
However, along with new desires and tools came new problems, and many well-intentioned development efforts were mired in problems inherent to working on the web. Programmers who were familiar with traditional desktop or client-server environments encountered a host of difficulties while trying to solve business problems in this new, stateless, request-and-receive environment. Chief among these problems was the lack of a computer language designed specifically to operate in a web environment.
I used to work in a software development shop that did both desktop applications and web applications. The desktop team always had a good laugh at us on the web team because we could not "maintain state." I never quite figured out what was so funny about it, but I think those people are not laughing now, considering the growing popularity of the Internet.
Allaire's ColdFusion was the answer. ColdFusion was easy to use, and developers could quickly create web applications with it. A group of ColdFusion developers including (among others) Gabe Roffman, Joshua Cyr, Michael Dinowitz, Robi Sen, and Steve Nelson started discussing common solutions to the problem of reinventing the wheel with each new site development. The "House of Fusion CF-Talk" mailing list became home to the discussion. Threads on a better way to organize applications progressed, and ideas began to form within the group. Example frameworks were discussed, but a catalyst was needed to finalize the system.
That catalyst arrived when Steve and Gabe (both independent consultants at the time) started sharing an office in Charlottesville, Virginia in the spring of 1998. They began to swap notes and ideas about their own development practices and how they related to some of the CF-Talk ideas. Discussions of the state problem and design patterns led to ideas about organizing applications, controlling system actions, and separating functionality of pages.
Before long, Steve finalized his idea for a centralized controller page within each directory of a site. Gabe noticed the resemblance of this model to the breaker panel of a house. This "fuse box" ColdFusion application system was documented in a white paper as the first specification for Fusebox version 1.0. Joshua Cyr wrote an example calendar application based on that specification.
Impressed with the system, Robi Sen hired Gabe and Steve to create the first full-scale Fusebox implementation at eBags.com. This e-commerce site was a magnificent success and is still going strong today as the largest online retailer of bags. And the rest, as the saying goes, is history.
Since its inception, Fusebox has been based around an open exchange of ideasa community. This community has been pivotal to Fusebox's success and growth. Make no mistake, we have come a long way since that first basic concept, but the fundamental ideas of Fusebox remain intact. These ideas are what make Fusebox the best web application framework for ColdFusion.
What Is Fusebox?
To explain what Fusebox is, let's look first at what it is not. Fusebox is not a software packagethere is nothing to buy. Fusebox is also not a development environment, a compiler, or a code library, although there is some standard code involved with it.
However, Fusebox is a web development specification. People who use Fusebox (Fuseboxers) use a standardized development methodology and framework to help their projects succeed. Fusebox has the strongest and most dynamic community of ColdFusion developers on the Net today.
What is Fusebox all about in practice? There are two major aspects of Fusebox:
Basic concepts of the purpose of Fusebox
Fundamental Fusebox principles in practice
Each of these aspects is made up of other pieces, so let's take them one at a time.