Pluggable Applications

by Nowell Strite and Shawn Rider

Background

  • Many sites
  • Built on a diverse technical architecture
  • Many repetitive components
  • Ease of implementation
  • Highly specific details

Reusable App design pattern

  • Easy to share functionality with other projects
  • Quick to get features up and running
  • Possible to expand and enhance functionality

Reusable App design pattern - sort of

  • Apps are expected to live at one URL
  • Convention of adding ‘extra_content’ params are not satisfactory
  • Conventional template replacement is not always flexible enough

Template tags to the rescue

  • Kind of fixes the problem
  • but form postings become complicated
  • but performance issues

The Use Case

  1. Access to a reobust database of curated resources
  2. Community features to allow educators to share and discuss those resources

Because discussion is so important in this setting, many objects in Peer Connection support discussions. Given thaqt the purpose of the site is partially to learn to use technology, a clean user experience is essential.

Their reqs

  • Sensible URLs that follow our patterns elsewhere on the site
  • Allow discusisons app to interact with other apps and objects in expected ways
  • Allow posting of data and error handling in the same location - no redirects to stand-alone pages to fix a message post
  • Flexibility to enforce permissions and other variations of display in an ad-hoc way

Solution: Pluggable Resusable App Pluggable

  • Apps can be presented at various URls through the site
  • Better architecture
  • Content generated by the pluggable app is in the main content well, but can be farmed out to other places

Make it so

  • pluggable urls
  • pluggable views
  • Subclassing / instantiation of pluggable application

Very nice!

  • They do control of request stuff very nicely!