Communicate

This is essentially a glossary entry for Communicate. I often write about Communicate's development in the blog and thought a quick overview would be useful.

Communicate is a desktop application that Watershed staff use to administer the data that is used in the creation of the Web site. Communicate is also used to control display aspects of the web site. Communicate runs on Apple Macintosh computers running MacOS X 10.3 or later and is written in Cocoa by Watershed's Communications department.

Watershed's Web site contains constantly changing content and it was decided to build a desktop application to administer the data. A desktop application has many advantages of a web application, especially in 2002 when there was no AJAX, widget toolkits, Javascript libraries… etc. A desktop application has speed, ease of use and a familiar interface. The disadvantages include platform dependence, version concurrency and development time. Work began on Communicate at the beginning of January 2003.

Communicate is a reasonably modular construction. The application itself uses a number of plug-ins and bundles to provide functionality and sits on frameworks that provide the data and ensure it is available to the Web site. Essentially, Communicate is just a collection of user interface elements.

frameworks

Database Libraries

The OpenBase frameworks and MySQL C libraries are used in database plug-in modules that provide network access to the databases. The plug-ins are relatively simple and just read and write data over the wire to the database. Currently we have written just the two for accessing OpenBase and MySQL databases, but adding more database plug-ins is relatively straight forward.

FBTFPersistentObjects Framework

The FBTFPersistentObjects framework provides object persistence for business objects. It handles archiving and unarchiving objects to a data store, caching and uniquing. The persistence framework can be thought of an EOF lite, similar to Ruby on Rails' Active Record or other ORM libraries.

WSHDCoreData Framework

When starting the project, I decided to model Watershed's operations in a business logic framework rather than just build another Content Management System. By modelling the organisation's data and operations we get a framework that accurately describes Watershed but ,more importantly, is reusable. The WSHDCoreData framework can be used in any application Watershed needs to develop, such as a cinema audience tracking, exhibition planning… etc. WSHDCoreData contains the classes that describe Watershed: Events, Exhibits, Media, StaffPositions , Locations and the XML mapping file used by FBTFPersistentObjects to map to the persistence database. There is a companion framework WSWOCoreData, written in Java, that is used by server based web applications. WSHDCoreData has nothing to do with Apple's CoreData persistence technologies. It was named to describe it's purpose at Watershed before we were aware of , and Apple demonstrated CoreData.

Communicate

On top of the frameworks is the desktop application Communicate. Communicate provides access to the data through a series of list windows. Staff can add, edit and remove items from Watershed's programme.

interface screen shot interface screen shot interface screen shot

interface screen shot interface screen shot

Communicate will load plug-ins, from inside its own bundle, at launch time to provide control over the Web applications which generate the site data. In effect, these Communicate Site Plug-ins just save their changes into a shared preference database. An abstract plug-in class makes writing these plug-ins a quick and simple task. For most plug-ins, almost all the work can be accomplished in Interface Builder using Cocoa Bindings.

interface screen shot interface screen shot interface screen shot

Further Development

Communicate is being developed and extended and this will continue into the future. This includes new features to support new site and Web application features, UI and workflow enhancements and performance optimisations We learnt in the past that creating a new shiny site and just sitting back is guaranteed way to create lots of work in the future and a repetition of the process in an endless loop. We have made an internal commitment to constantly improve the watershed.co.uk sites, gradually over time, for an indefinite period. Some of the features we would like to add to Communicate in the near future are:

  • Comprehensive Applescript support.
  • A plug-in architecture for import, export and actions. Probably allowing plug-ins to be Cocoa bundles or AppleScript files.
  • XML Import & Export plug-ins.
  • A more user friendly and intuitive UI centred around a publishing paradigm and not requiring the user to have a knowledge of the underlying frameworks data structure.
|

odds&ends…
Benjamin Miller