||The topic of this article may not meet Wikipedia's notability guidelines for products and services. (March 2010)|
"Features Without Fixtures"
|Developer(s)||S. Isaac Dealey|
|Stable release||3.2b / September 24, 2008|
|Type||web application framework|
In addition to providing an MVC controller like most other ColdFusion frameworks, it also includes an array of APIs for rapid application development, including e-mail, HTML templating (and associated DHTML widgets such as Section 508 compliant tabsets), AJAX, application branding and customization, form management and i18n internationalization features.
Several of the early versions of the framework (prior to version 2.0) were released under the Lesser GPL. The LGPL had been chosen specifically for the purpose of allowing commercial software to be written using the framework as a starting-point. The OpenBSD license was later adopted for its even less restrictive terms, allowing commercial projects based on the framework to encrypt their own proprietary source code (which was not allowed by the LGPL).
The onTap framework has several key goals:
- Speed and improve rapid application development (RAD) by simplifying common or tedious web development tasks as well as providing convenient methods of accomplishing very complex tasks such as and/or keyword search filtering (this example is from the object-relational mapping (ORM) tool which has split into a separate project called DataFaucet ORM). The use of syntactic sugar is a primary method of achieving this goal.
- Enable better integration and collaboration between separate applications provided by different authors via a service-oriented architecture (SOA). The long-term goal is a software ecosystem similar to add-ons for the Mozilla Firefox browser in which plugin applications can be one-click installed via the existing browser-based interface.
- Enable easier customization of Software as a service (SaaS) applications by separating client customizations into their own directory structures thereby reducing conflicts between potentially incompatible customization requests. This is being described as a virtual private application (VPA) as an analogy to the web hosting term virtual private server (VPS).
These goals are similar to and overlap the intent of agile software development methodologies or the Agile Manifesto seeking a "lightweight" method of software development that can produce versatile working software very quickly.
To meet the objective of simplifying and improving the RAD process, the framework's core principles include Convention over Configuration (CoC) and Don't Repeat Yourself (DRY). One example of CoC and DRY principles can be found in the framework's form features. The form tools allow programmers to omit most of the code required to create common CRUD forms by relying on the database as the single point of truth for information about the type of data managed by the form. The following are examples of a form as created using the CFML native cfform tag as compared to using the onTap framework's CoC / DRY concepts for CRUD forms.
 Sample Code
The following code sample shows how many ColdFusion forms are written:
<cfparam name="attributes.eventid" default="" /> <cfif len(trim(attributes.eventid))> <cfquery name="getEvent" datasource="primary"> select * from tblEvent where eventid = <cfqueryparam value="#attributes.eventid#" cfsqltype="cf_sql_idstamp" /> </cfquery> <cfparam name="attributes.eventname" default="#getevent.eventname#" /> <cfparam name="attributes.eventdate" default="#getevent.eventdate#" /> <cfparam name="attributes.ticketprice" default="#getevent.ticketprice#" /> </cfif> <cfparam name="attributes.eventname" default="" /> <cfparam name="attributes.eventdate" default="" /> <cfparam name="attributes.ticketprice" default="0" /> <cfform format="xml"> <cfinput type="hidden" name="eventid" value="#attributes.eventid#" /> <cfinput type="text" name="eventname" label="Event" required="yes" value="#attributes.eventname#" /> <cfinput type="text" name="eventdate" label="Date" required="yes" value="#attributes.eventdate#" validate="date" /> <cfinput type="text" name="ticketprice" label="Ticket Price" required="yes" value="#attributes.ticketprice#" validate="numeric" /> </cfform>
The following code sample shows how the same form could be written using the onTap framework's XHTML template engine in combination with the DataFaucet ORM plugin to speed development. This code anticipates the intent of the code in the previous sample by using a conventional relationship between database columns and form input elements. These two code samples produce an approximately similar result with mostly semantic differences in operation. This supports the philosophy of CoC because the programmer only needs to specify the value of an input element (or its default) or the type of validation (date, numeric, required, etc.) in atypical cases in which the input doesn't mirror the structure of the database.
<cf_html> <tap:form tap:dbtable="tblEvent" xmlns:tap="xml.tapogee.com"> <input type="hidden" name="eventid" /> <input type="text" name="eventname" label="Event" /> <input type="text" name="eventdate" label="Date" /> <input type="text" name="ticketprice" label="Ticket Price" tap:default="0" /> </tap:form> <cf_html>
Isaac Dealey began working on a content management system (CMS) in late 1998 following his first ColdFusion job at MCI WorldCom. The CMS transitioned through several names eventually becoming known as Tapestry (not to be confused with the Tapestry framework for Java). Isaac later abandoned the CMS but not before releasing an open source API for ColdFusion development called the Tapestry Application Programming Interface (TAPI) not to be confused with the Telephony Application Programming Interface (TAPI). The design of this early version focused on use within an existing application and within several months Isaac decided that the system requirements to support this strategy were too limiting. This led to the first release of the onTap framework (a complex clip of "on Tapestry") as an alternative to TAPI in August 2003. In spite of the fact that the name onTap shares pronunciation with a colloquial description of draught beer (which is often said to be "on tap"), the name engenders less confusion than either the TAPI acronym or the original CMS' name Tapestry.
Some time between August 2003 and August 2004, an official website for the framework launched at fusiontap.com. In March 2007, Nick Tong and Kola Oyedeji interviewed Isaac for a podcast about the framework on the cfFrameworks website. Shortly after the interview, Isaac canceled the website's dedicated hosting service for personal reasons and the domain was subsequently purchased by domain scalpers. This created confusion in the following months with some people thinking the framework project might have been abandoned.
In December 2007 Isaac submitted the onTap framework and several related projects to the open source development community RIAForge.org, an alternative to SourceForge specifically for projects based on Adobe software platforms.
A new official site is now at http://on.tapogee.com starting in August 2008.
As of 11/7/2011 this URL causes a Site Not Found error. Attempting just http://tapogee.com shows simply "Hello World".
 See also
- CFConversations podcast episode 19
- SitePoint interview blog with Kay Smoljak - this article was a featured highlight on the SitePoint home page on Aug 25th, 2008
- ColdFusion Developer's Journal Special "Frameworks" Focus Issue article
- cfFrameworks.com interview podcast
- Kola Oyedeji : 8 things you didn't know about the onTap framework
- Discussion of ORM techniques used in onTap with Peter Bell
- Ray Camden's blog notice about ports of Galleon forums to several frameworks including the onTap framework
- Samples of 508 Compliant Flash Widgets built with Adobe Flash/ActionScript 3.0.