This afternoon, rather quietly, I posted the first release candidate for Evergreen 1.2.0 on the Open-ILS.org download page. This is a big milestone for the project and for the developers. It’s also a big milestone for those interested in adopting Evergreen outside of PINES. The 1.0 series was pretty heavily skinned for PINES, with the images, rules, and default configuration, and new backend features were slow to be incorporated due to the pain of updating the database schema. The shiny new 1.2 series removes almost all traces of PINES-specific images and default rules, and contains many new backend improvements. It is also the first non-experimental release to include a significant amount of code not created directly by GPLS and PINES.
Running the gauntlet: Volume 1
I began work on open-ils.supercat this weekend, and things are going swimmingly so far. I created the open-ils.supercat.record.marcxml.retrieve and open-ils.supercat.metarecord.mods.retrieve methods with no problem, and added open-ils.supercat.record.mods.retrieve as well. The metarecord building code is mostly a big pile of DOM, but you can see the code here in the sub called retrieve_metarecord_mods if you are so inclined. The record methods, both marcxml and MODS, are much leaner, so I’ll show those inline:
sub retrieve_record_marcxml { my $self = shift; my $client = shift; my $rid = shift; return entityize( $_storage ->request( 'open-ils.storage.direct.biblio.record_entry.retrieve' => $rid ) ->gather(1) ->marc ); } __PACKAGE__->register_method( method => 'retrieve_record_marcxml', api_name => 'open-ils.supercat.record.marcxml.retrieve', api_level => 1, argc => 1, signature => { desc => < <" DESC", Returns the MARCXML representation of the requested bibliographic record DESC params => [ { name => 'bibId', desc => 'An OpenILS biblio::record_entry id', type => 'number' }, ], 'return' => { desc => 'The bib record in MARCXML', type => 'string' } } ); sub retrieve_record_mods { my $self = shift; my $client = shift; my $rid = shift; my $marc = $_storage->request( 'open-ils.storage.direct.biblio.record_entry.retrieve', $rid )->gather(1)->marc; return entityize($_mods_sheet->transform( $_parser->parse_string( $marc ) )->toString); } __PACKAGE__->register_method( method => 'retrieve_record_mods', api_name => 'open-ils.supercat.record.mods.retrieve', api_level => 1, argc => 1, signature => { desc => < <" DESC", Returns the MODS representation of the requested bibliographic record DESC params => [ { name => 'bibId', desc => 'An OpenILS biblio::record_entry id', type => 'number' }, ], 'return' => { desc => 'The bib record in MODS', type => 'string' } } );
As you can see, in both cases the method registration call containing the method signature is larger than the actual sub even with a great deal of whitespace in the code. I will take that as a good sign, since that signature allows scripted API documentation, basic argument checking (that I don’t have to handle inside the method) and quick-glance documentation inline in the code.
It Takes a Village
Lyrasis with the support of an IMLS grant hosted a forum for open source software in libraries called “It Takes a Village.” Lyrasis brought together a variety of leaders in open source projects to discuss issues related to the creation, management, and sustainability of open source systems. The open source projects included but were not limited to document and image repositories, integrated library systems, course management software, archival description applications, and electronic resource management systems used in cultural institutions.
I attended as chair of the Oversight Board to represent the Evergreen community. The goal of the forum was to identify tools and approaches which would assist organizations in starting up open source projects and managing them long term.
The discussion began with representatives evaluating their stage of their project. Lyrasis provided the following stages.
- New/Starting Up
- Growing
- Self Sustaining
- Maintenance
- End of Life
The discussion focused on what does the above categories meant. Are they related to the community, organization or technology? Does the cycle apply to individual versions of the software or the life cycle of the project? Is there a difference between self sustaining and maintenance? Some of the attendees seemed to want to focus on the development cycle but not the life cycle of the project. Others focused on the life cycle of the project.
The forum also discussed and identified the top level issues for open source projects. The participants identified:
- Governance
- Resources
- Technology
- Community
Each project identified where they were on a scale of 1-10 for each category. The groups who rated themselves similarly then discussed their issues in each category. We then discussed what was needed to advance a project in these areas especially if it seemed to be a stand out issue for the individual’s project. We also discussed what tools might assist a project to advance their project in these areas.
The forum was strongly represented by large academic research institutions even though Lyrasis was looking for open source projects across all cultural institutions. Most of the projects coming out of academia had a top down approach to management which is contrary to the bottom up approach Evergreen, Wikipedia, and Koha have taken. There are a variety of reasons for this. Some of the projects were developed and promoted by one or two individuals and or institutions and the end users of these applications were looking for leadership from these individuals so the projects naturally evolved this way. Others, were deliberately structured this way from the beginning. With top down control, there are gatekeepers who strictly control feature development and manage the project. All the projects were at various stages.
Lyrasis will be writing a report that will come out next year with the goal of identifying a process for developing and possibly managing open source projects.
Projects Attending
- Archivematica
- ArchivesSpace
- Avalon Media System
- BitCurator
- Blacklight
- Collective Access
- ConservationSpace
- Coral
- DSpace
- Duraspace
- Fedora
- Islandora
- Knowledge Project
- Koha
- Library Simplified
- LOCKSS
- MetaArchive
- OLE/Folio
- Omeka
- Public Knowledge Project
- Sakai
- Samvera
- Specify Software Project
- Vega
- VuFind
- Wikimedia (Wikipedia)