IslandoraCon 2019

Islandora in NZ


Presented by Jonathan Hunt
@kayakr on Twitter, Github, Gitlab

Islandora in NZ

  • QuakeStudies (Islandora 7)
  • CCC DHR (Islandora 8)
  • Challenges & Solutions
  • Islandora as Community Archive
  • Next steps

About me

  • Web dev since 14.4KB
  • Drupal dev from 4.6
  • Last five years at Catalyst IT
  • Since 1998
  • NZ, AUS, UK, Ireland
  • Koha, Moodle, Drupal, Islandora, etc.
  • Catalyst Cloud (OpenStack)
  • PHP, Python, Java, Perl, etc.


QuakeStudies -> QuakeStudies2

  • Responsive theme, in-page viewers
  • Simplified data model (RDF, linked data)
  • >150,000 objects, 1.3TB, transcoding, etc.
  • Community code
  • Automated deployment

What we did


  • Procurement vs open source & agile
  • Islandora 7 Islandora 8
  • Photographs, scanned maps and books, video, audio, PDF, zip, text
  • Browse, Sets, Exhibitions, Search, OAI-PMH
  • Licence entity, referenced from (new) Rights field

Islandora 8.x

  • Theme via Bootstrap 4, Bootstrap Barrio
  • Digital content is primary
  • Exhibitions via Drupal book module
  • CCL custom fields, incl. private fields
  • oembed, csp, allow_iframed_site for external sites, e.g. Wordpress


  • Search API, Search API Solr, Facets, Views
  • Collapsible facets for Format, Resource Type, Tags, Collection
  • ascii-folding for macrons, e.g. TÅ«ranga

Generate IIIF tiles action

  • Poor UX on large TIFF if first viewer
  • Action to request tiles via Drupal batch

Ingest from CSV via migrate

  • started with Danny Lamb's CSV example
  • CSV via UI, tab-delimited, uuid, multiple-value fields via |
  • DsvRelator plugin for Linked Agent; cre=Alice|pht=Unknown
  • mimetype (application/pdf) mapping to Model (Digital Document)
  • CSV export via Views Data Export



  • Catalyst Cloud (OpenStack)
  • Config via Puppet; deploy via fabric
idora1 = c4r8
cantaloupe1 = c8r16
solr1 = c1r2
proxy1 = c1r2
nfs1 = c1r4
db1 = c2r4


< Islandora 8.x-1.0

  • Building on a moving platform
  • Renamed modules, disappearing repositories breaking composer, build agents

Number of HTTP Headers

Large videos

  • Default drupal db filesize signed integer
    media__field_file_size.field_file_size_value field is int11 by default, max value=2,147,483,648, and the 2.2GB video is 2,283,947,492 bytes
  • Crayfish; Homarus/ffmpeg STDOUT and STDERR ('w' to 'a')
  • ActiveMQ message size vs Camel (#1278)

Exhibitions via Drupal Book

  • Drupal Book module lacking love
  • numerous patches
  • Embed object, align, size, caption
  • Embed slideshow, carousel from set

and more...

  • Workflow (private files) vs caching
  • Drupal 8 development, config mgmt, upstream

Paged content!

  • Paged Content via #143
  • Internet Archive book viewer v2?

Newspaper contact sheets

  • Awkward shape; use IIIF Presentation API?

From tags to authorities

  • Tags vs Person, Family, Corporate Body, Geographic Location, Iwi/Hapu, etc.

Public engagement

  • Comments via Drupal core incl. moderation
  • Annotations on images, etc.
  • Public tags
  • Bookmarks, incl. named lists, plus export

and more...

  • Move to Drupal 8.7.x
  • Islandora Breadcrumbs (we used entity_hierarchy)
  • Migration vs Ingest (via Entity Importer?)
  • Audit Drupal vs fcrepo vs blazegraph etc.
  • Tracing e.g., Jaeger (HotROD)
  • Layout builder for exhibitions?
  • graph search, visualisation
  • OpenStack Swift


  • Thanks to Danny Lamb & Islandora 8 committers & contributors
  • Questions/discussion: or @kayakr