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
* My drupal experience: media, corporate, NGOs
* Catalyst: NZ-based, AKL, WLG, CHC, DUN
* Australia: MEL, SYD, BNE
* UK: Brighton, Ireland: Dublin
* VYR maybe
Since 1998
NZ, AUS, UK, Ireland
Koha, Moodle, Drupal, Islandora, etc.
Catalyst Cloud (OpenStack)
PHP, Python, Java, Perl, etc.
QuakeStudies2
* How did I get involved in Islandora?
* Canterbury earthquake sequence in 2010/2011
* Arts Digital Lab at University of Canterbury
* looked at Islandora in Drupal 6, ended up on own solution
QuakeStudies -> QuakeStudies2
Responsive theme, in-page viewers
Simplified data model (RDF, linked data)
>150,000 objects, 1.3TB, transcoding, etc.
Community code
Automated deployment
https://quakestudies.canterbury.ac.nz
* https://quakestudies.canterbury.ac.nz/
* ~150,000 objects (photos, PDFs, videos, audio, text, zip)
* Migration to Islandora (presented at DrupalSouth 2017) via Drupal nodes
* Just updated to Islandora 7.x-1.13
* Working on citations and maps
* Christchurch City Libraries team at Christchurch City Library
* Digital Heritage Repository, part Kete replacement (community archive)
* In production, public launch early December.
* Screenshot is from UAT (work in progress)
CCC DHR
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
* CKEditor embed widget to embed Islandora Objects into narrative.
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
* Content primary, metadata secondary, branding tertiary?
* Private fields, indexed by Solr, staff can search not public.
* dhr_oembed_provider
* csp=Content Security Policy
* Share widgets incl. email.
* Purchase this image -> puts id into existing web form
* PDF (Digital Document model), pdf.js
* TIFF
* Zoomable via Cantaloupe IIIF
Search
Search API, Search API Solr, Facets, Views
Collapsible facets for Format, Resource Type, Tags, Collection
ascii-folding for macrons, e.g. TÅ«ranga
* Overrides for private fields, exclude for visitors.
Generate IIIF tiles action
Poor UX on large TIFF if first viewer
Action to request tiles via Drupal batch
* Poor UX on large tiff if first viewer.
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
* OpenStack Swift (like S3) file staging, URIs
* Delimiter Separated Value plugin for Linked Agent
** | for value, = for relation, e.g. cre=Alice|pht=Unknown
* migrate_devel, migrate_source_csv, migrate_source_ui, etc.
Security
* RCE=Remote Code Execution
Hosting
Catalyst Cloud (OpenStack)
Config via Puppet; deploy via fabric
idora1 = c4r8
cantaloupe1 = c8r16
solr1 = c1r2
proxy1 = c1r2
nfs1 = c1r4
db1 = c2r4
* build-agent checks out repo, runs composer, builds tagged release, pushes release to destination,
** destination switches to maintenance mode, backs up db, switches code, switches in config + environmental overrides e.g. solr, runs db updates,
* Working on shelve/un-shelve on demand.
< Islandora 8.x-1.0
Building on a moving platform
Renamed modules, disappearing repositories breaking composer, build agents
* With live content, can no longer blow away VM, build anew...
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 )
* 2GB+ file, ~15minutes of HD video
* default Drupal filesize in database is signed integer, changed to unsigned
* Homarus ffmpeg output too large, ActiveMQ & Camel crash.
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
* Use published/unpublished for workflow
* Don't want derivatives public if possible.
* But private files are not cached (by varnish)
Paged content!
Paged Content via #143
Internet Archive book viewer v2?
* Want to try latest patches to PR #143.
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. opentracing.io , Jaeger (HotROD )
Layout builder for exhibitions?
graph search, visualisation
OpenStack Swift
* Want to improve ingest
* track ingests, validation & error reporting
* content manually added doesn't have uuid in migration map tables
* Audit: esp. if failure of messaging, don't know if item has been ingested ok, indexed...
Thanks
Thanks to Danny Lamb & Islandora 8 committers & contributors
Questions/discussion: jhunt@catalyst.net.nz or @kayakr