Replacing Faculty Staff Directory
Faculty Staff Directory is a venerable Plone add-on that integrates with Plone’s users and groups infrastructure and provides content types for creating and organizing personnel directories within educational institutions. It adds academic profile information such as job title and contact details, and provides an area for personnel to add their own bibliographies, as well as pages and other content. Faculty can be associated with departments, committees and specialties, and these groupings can then be used to control access and editing permissions throughout the site.
Originally released in 2007, FSD is an “old-style” Archetypes add-on that is currently in use by many universities and colleges. As Plone moves away from Archetypes and embraces the Dexterity content type framework, the Plone community needs to decide what to do about old but important add-ons like FSD.
A group of concerned Plone citizens convened an open space at the Plone Conference last October to discuss this. There was clear consensus on the way forward: replace FSD with a Dexterity-based add-on and provide a migration path for existing FSD content. We also agreed that the new FSD should be based on an existing add-on rather than starting from scratch, and we identified several existing add-ons as potential candidates:
Two months later, Jazkarta was tasked with recommending a replacement for an FSD-like custom add-on that was developed at NYU’s Institute for the Study of the Ancient World to manage faculty information.
This provided the perfect opportunity to assess the above set of candidates.
Cris Ewing did the evaluation and concluded that collective.roster is the only package suitable as the basis for an FSD replacement. collective.contact.core does not allow the extended profile data that is needed. collective.contacts is Archetypes-based. ibme.persondirectory is a bit too bare-bones and does not provide enough of a starting point to be reasonably useful on its own. collective.workspace is more like a building block (for example see this post about using it to build a badge system), and is discussed further below.
collective.roster is dexterity-based so features can be easily added with behaviors. It has a nice viewlet-based system for extending views. It can use dexterity.membrane to provide integration with Plone’s membership system. Groups are currently implemented as a simple keyword behavior, but it could use collective.workspace to group-based rights management.
In short, we have a winner in collective.roster. Instead of implementing a specific use case it provides an easy way to add features via behavior add-ons. This building block approach is what gives the Dexterity framework its power. The next step on the path to replacing Faculty Staff Directory will be to combine collective.roster, dexterity.membrane, collective.workspace, and other add-ons to provide the FSD features that users rely on.