I am currently working on a (set of) module(s) to integrate Drupal with CollectiveAccess, an open source PHP collection management system that is focussed towards cataloguing, maintaining and managing collection data. This software is getting quite some traction with museums, archives and other institutions that require digital collections.
The big picture:
We have been pitching the idea of Drupal / CollectiveAccess integration to a few (cultural) non-profit institutions, and there is real interest in this approach. The people behind the CollectiveAccess software are also receiving plenty of requests for good integration of CollectiveAccess with Drupal, so demand is certainly there. CollectiveAccess already comes separated as a backend + frontend. However the frontend system is not very powerful, and that's where Drupal could come in.
The idea for the integration is to use CollectiveAccess as a powerful collection management backend, where editors and administrators of the institutions are able to easily add, import and manage the collections that they own or maintain, whereas Drupal would be used as a flexible frontend to present these collections to the general / broad public, leveraging the myriad of great possibilities that Drupal provides. Just to name a few:
* facilities to browse and filter collections with Views or Apache Solr
* add "web 2.0" functionality such as personal collections for logged in users (Flag module) or social network interaction (Facebook, Service Links module, ...)
* ability to comment and interact on collection objects
* and much much more
These possibilities are of course most likely not in the scope of the Drupal CollectiveAccess module itself, but the purpose of the module is to prepare and deliver that data to Drupal in such a way that these possibilities become easily implementable.
The CollectiveAccess module (set) should provide a generic and modular architecture, so integration between CollectiveAccess and Drupal would become trivial. The aim is to have as little dependency on programmers or Drupal experts as possible, once an institution has their CollectiveAccess system set up, so they could potentially do the integration with Drupal themselves and have the richness of Drupal at their fingertips when building their web presence frontend.
History & current status:
I have already done integration of both systems for a cultural institution, and part of that effort was the CollectiveAccess module for Drupal
. However this module is currently only usable for developers, and still too specific for the project I created it for. Also, it's currently only for Drupal 6.
Therefore my plan is to take this a step further and create a generic, well structured module (or set), focussed primarily at Drupal 7, to be able to leverage the functionality in D7 that could ease integration of those 2 systems significantly.
Battle plan: functional requirements / wishlist roadmap:
- Create a general SDK / API wrapper around the webservices provided by CollectiveAccess. (current CollectiveAccess module already comes with a basic shot at that)
- UI to easily connect your Drupal site to one or more CollectiveAccess instances (current CollectiveAccess module already comes with a basic shot at that)
- UI to specify what data should be retrieved from each CollectiveAccess instance (e.g. all objects, objects in specific collection, objects by specific author, ...)
- Ability to create Drupal entities for each object that gets fetched (leverage D7 Entities API)
- Ability to map CollectiveAccess fields with Drupal fields (leverage D7 Field API)
- Implement a smart caching system
- Implement a smart syncing mechanism
- Potentially backport (some of) the functionality to Drupal 6
- ...
GSOC
I'm not deeply familiar with the GSOC program or processes that it contains, so let me know if I'm missing something or need to formalize this idea somehow...
If a student sees potential in (parts of) this idea, I would love to personally dedicate all the time that is needed to mentor and guide him / her, while actively participating in the creation of this module. I'm furthermore in contact with a bunch of people that really want to put their shoulders behind this project, so from that side you could surely expect mentoring, guidance and feedback as well.
If you need any additional information on this idea, or want to brainstorm some more about it, feel free to contact me!
Sven