OverDrive is a working whiteboard proposal for a new Struts subproject. The subproject will feature a set of best-practice applications written using a MVC framework that merges Struts with the Commons Chain of Responsiblity package.


Applications rule, frameworks drool.

Most application frameworks ship with one or more example applications. Struts has Mail{{`Reader. iBATIS has Petstore. JSF has Car}}`Demo. ASP.NET distributes several "starter kits". Some frameworks, like Spring, even consider the examples to be "first-class citizens".

From the OverDrive perspective, the applications are not just first-class citizens, they are the only first-class citizens. The MVC framework shared by the applications is simply a means to an end.

Over{{`Drive is about writing business applications, regardless of platform, and extracting components the applications can share. The initial Over}}`Drive applications are being written for ASP.NET/Mono, but versions for Java5 and PHP5 are expected.

The first two applications on the billet are

  • PhoneBook – A single-table employee directory.
  • MailReader – A multi-table account listing.

Once these ship, others will follow, including

  • Examples – A coding reference to document common strategies.
  • Wicker - A shopping cart application.
  • Gavel - An online b2c auction application.

The MVC Framework behind the OverDrive applications bundles two major components:

  • Agility, a C# port of Commons Chain of Responsibility.
  • Nexus, an application controller built over Agility.

For more, visit the offsite OverDrive wiki.


Agility vs Agility

"Is there a relationship between OverDrive Agility and the unreleased Agility package in Commons Chain?"

(smile) The major relationship is that Ted likes the name Agility, and isn't planning to have any more children. Foreman named all of his kids George. Likewise, Ted is naming all of his new projects Agility. (smile)

But, seriously, the whiteboard Agility package in Commons Chain suggests that we use CoR as the basis for a request/response front controller. OverDrive is building just such an application controller under the name Nexus. But, to build Nexus, first we needed a C# port of CoR. Chain of Responsibility is such a mouthful, we're calling our port of CoR "Agility" instead.

For the sake of consistency, we could have called the CoR port "Nexus" and the application controller "Agility", but the names just didn't seem to fit as well.

  • Agility - The gracefulness of a person or animal that is quick and nimble
  • Nexus - The means of connection between things linked in series

The CoR package, Agility, provides the grace and nimbleness. The framework package, Nexus, connects Agility with our software applications. Nexus is where it all comes together.

Once OverDrive is underway, the Agility package in Commons CoR could be replaced with a Java port of Nexus, and then everything will fall in line.


Questions, questions

"Where do I post questions about OverDrive?"

Over{{`Drive is a whiteboard proposal and unreleased software. Posts should be made to the Struts DEV list, with the keyword "[Over}}`Drive]" in the subject line.

Before posting, please be sure to review the material on the offsite OverDrive wiki.


  • No labels