Islandora Online: Islandora and Migration

Dit jaar wordt er vanwege de corona crisis ook door Islandora een Online event gehouden, of eigenlijk zijn het 4 events van elk 5 uur.
Hieronder het verslag van het derde event, gehouden op 4 augustus. Het verslag van het eerste event is hier te vinden. Het verslag van het tweede event is hier te vinden.

Helaas kon ik niet “live” aanwezig zijn bij dit event vanwege vakantie, maar gelukkig is het hele event opgenomen. Hierbij een verslag gebaseerd op het opgenomen event.

Uitdagingen

Het onderwerp van dit event is het migreren van content naar Islandora 8 vanaf Islandora 7 of een ander systeem. Migreren levert altijd vragen en problemen op, tenzij de data die gemigreerd wordt al perfect is. En dat is eigenlijk nooit het geval. Migreren levert altijd uitdagingen op: Omdat de metadata niet perfect is. Omdat lastige keuzes gemaakt moeten worden. Omdat bepaalde delen van de data niet passen in het nieuwe systeem. Omdat het nieuwe systeem (een nieuw soort) data verwacht of kan bieden die nog niet in het oude systeem zat. Omdat de metadata op een ander precisie niveau ingevoerd moet worden.

Soms moeten er lastige keuzes gemaakt worden tijdens de migratie, die er later voor zorgen dat er meer mogelijk wordt. Zo heeft in de metadata een persoon vaak een rol. Ook kan een persoon identifiers hebben en/of een of meerdere namen. De manier waarop deze data gemigreerd wordt, bepaalt voor een groot deel wat er daarna in Drupal (mee) gedaan kan worden.

Drupal Migrate

Drupal Migrate is de manier om veel migraties te doen. Natuurlijk zijn ook andere manieren mogelijk, maar bij alle zijn twee technieken te onderscheiden: ETL en ELT. ETL staat voor Extract data, Transform data en Load data. Dus eigenlijk haal je de data eerst uit het oorspronkelijke systeem, daarna vorm je de data zo dat het ingelezen kan worden in het nieuwe systeem en dan lees je het in. De letters van ELT staan ook voor Extract, Transform en Load. Alleen wordt de data nu eerst ingelezen waarna het wordt omgevormd.

Drupal Migrate gebruikt ETL, waarbij deze fases duidelijk te onderkennen zijn binnen het proces. Een migratie wordt uitgedrukt als een YAML document. Drupal Migrate maakt ook gebruik van de Drupal Plugin API waardoor het mogelijk is om eigen acties tijdens de migratie te definiëren. Natuurlijk bestaan er al veel van dit soort plugins in de Drupal community en worden ze ook gebruikt binnen Islandora 8. Zo is er een plugin om data te “extracten” uit Islandora 7, maar ook data van bestanden of data via een web API kan gebruikt worden. Maar ook zelf een plugin ontwikkelen is relatief simpel.

Drupal Migrate ondersteunt ook high water marks, wat betekent dat bij een migratie die niet helemaal goed gaat alleen het stuk wat misgaat opnieuw gedaan hoeft te worden. Mocht het helemaal misgaan, dan kan ook een rollback (terug naar een punt waar het nog wel goed was) gedaan worden.

Hulpmiddelen en tutorials

migrate_islandora_csv is een online begeleiding (tutorial) over hoe men Drupal Migrate kan gebruiken. Als bron gebruikt men een CSV bestand, maar er wordt uitgebreid stilgestaan bij het opschonen en vormen van de data (de T van ETL) en hoe men relaties tussen data aanlegt tijdens de migratie. Bovendien wordt dit alles stap-voor-stap uitgelegd.

migrate_7x_claw is een module bedoeld om te migreren vanaf Islandora 7 naar Islandora 8. Alle datastreams worden hiermee gemigreerd, inclusief “audit trail“. De metadata wordt gemigreerd vanuit Solr of een willekeurige XML datastream. Maar migrate_7x_claw is vooral een startpunt voor de migratie en nog geen volledige oplossing. Het is iets wat nog verder ingevuld en ontwikkeld moet worden voor de specifieke situatie. Om migrate_7x_claw goed te kunnen gebruiken en begrijpen, is migrate_islandora_csv een goed startpunt. Ook is het belangrijk om de Drupal Migrate API goed te begrijpen, maar ook Drupal config synchronization en Drupal features.

Andere migratie methodes

Migratie kan natuurlijk ook op een andere manier. Islandora 7 content wordt opgeslagen in Fedora 3.x. Islandora 8 content wordt (deels) opgeslagen in Fedora 5. Fedora 5 en 6 verschillen niet veel van elkaar, in elk geval veel minder dan Fedora 3 verschilt van Fedora 5. Islandora 8 of 9 gaat op een gegeven moment ook draaien op Fedora 6. Vanuit de Fedora community is er een project om de overgang van Fedora 3 naar Fedora 6 wat betreft migratie zo simpel mogelijk te houden. Ze zijn hier ook druk mee bezig dus het is interessant om te kijken of dit ook een manier is om van Islandora 7 naar Islandora 8 over te gaan.

Zowel Islandora 7 als Fedora 3 hebben een REST API. Ook Islandora 8 bevat een REST API. Dus in principe is het mogelijk om data uit het oude systeem te halen via de REST API. Daarna deze data omzetten in een ander formaat met welke methode/programmeertaal dan ook. Vervolgens de data inlezen via de Islandora 8 REST API. Voordeel is dat je volledige controle hebt over de data en het proces, maar dat is ook meteen het nadeel. Dit betekent namelijk dat je alles zelf moet doen.

Islandora Workbench is een ander hulpmiddel om te gebruiken bij migraties. Het gebruikt de REST API en gebruikt als bron een CSV bestand. Dit bestand moet al wel het juiste formaat hebben. De export en transform moet dus eigenlijk buiten Workbench om gedaan worden. Hierdoor is de configuratie en gebruik van Workbench vrij simpel, maar het werk ervoor kan complex(er) zijn. Workbench heeft allerlei manieren om de data voor ingesten te checken, zodat bij ingest er geen verrassingen zijn.

Migratie naar Islandora 8 kan dus op veel manieren, maar zal altijd (in meer of mindere mate) werk en hoofdbrekers opleveren. Al met al een erg interessant event, waarbij ik veel geleerd heb. Migratie naar Islandora 8 is veel verder dan ik gedacht had. Het verslag van het vierde en laatste event is hier te vinden.

Islandora Online: Islandora 8

Dit jaar wordt vanwege de corona crisis ook door Islandora een Online event gehouden. Eigenlijk zijn het 4 events van elk 5 uur. Hieronder een verslag van het eerste event, gehouden op 21 juli en alleen online (dus geen mooie plaatjes van exotische oorden).
De events hebben allemaal een soortgelijke opbouw: steeds ongeveer 1 uur praatjes en daarna korte pauze, met in het midden een langere pauze van een uur waarvan een half uur “social” is: je kan praten met de anderen (business or pleasure) of een spelletje spelen (vooral kruiswoordraadsels in het Engels zijn een uitdaging).

Verschil tussen Islandora 7 en Islandora 8

Het eerste event had als onderwerp Islandora 8. Islandora 8 verschilt van Islandora 7 nog meer dan Drupal 7 verschilt van Drupal 8. Maar dat is zeker niet slecht. Waar Islandora 7 Drupal 7 gebruikt om Islandora content te tonen, is in Islandora 8 deze content eigenlijk gewoon al Drupal 8 content. Dit houdt in dat Islandora 8 veel dichter bij Drupal 8 blijft en daardoor allemaal technieken maar vooral ook modules van Drupal 8 (een soort plug-ins voor extra functionaliteit) zonder enige aanpassing meteen kan gebruiken. Dit maakt Islandora 8 flexibeler en makkelijker uitbreidbaar.

Taken en microservices

Taken worden ook veel beter gescheiden van andere zaken: microservices voeren precies 1 bepaalde taak uit, los van de rest van het systeem. Bijvoorbeeld het aanmaken van afgeleiden of “optische tekenherkenning” (OCR) wordt geheel los van Drupal uitgevoerd, eventueel op hele andere servers. Een bepaalde actie start de microservice vanuit code door een en met een bepaalde context. De microservice wordt echter niet meteen gestart. De vraag en context worden in een wachtrij gezet totdat de microservice vrij is om de vraag te beantwoorden. Als de microservice klaar is, komt het antwoord (bijvoorbeeld een afgeleide of een OCR bestand) terug naar Drupal.

Digitale preservatie en opslaan

De taak van het opslaan van de data wordt uitbesteed aan Flysystem. Flysystem zorgt ervoor dat de plek waar de data opgeslagen wordt en de manier waarop opgeslagen wordt abstract is voor Drupal. Flysystem koppelt Fedora aan Drupal, waardoor de belangrijke data in een Digital Asset Management system wordt opgeslagen. Aangezien dit allemaal in te stellen is, kan gekozen worden wat nu eigenlijk belangrijke data is die dus opgeslagen wordt in Fedora, zodat Fedora de digitale preservatie kan regelen. Maar als de data naar een andere plek moet, kan dit ook. Opties hierbij zijn ondere andere local disk, (s)ftp, dropbox, AWS S3 of andere Cloud storage (via OpenStack swift).

Integraties en community

Islandora 8 heeft inmiddels een grote groep mensen die eraan werken en ook integraties met andere systemen maken. Zo is er al een integratie met ArchivesSpace. Voor statistieken wordt Matomo gebruikt, maar dit staat nog in de kinderschoenen. Islandora 8 biedt ook OAI-PMH. Zoals bij alles in Drupal 8 is ook dit een view, die helemaal is in te stellen zoals je wilt. Ook is Islandora 8 uit de box IIIF compatible. Cantaloupe implementeert de IIIF image API. Drupal 8 genereert de IIIF manifests (ook een view). Islandora 8 kan een manifest interpreteren en via een ingebouwde IIIF viewer afbeelden.

Support en updates

Drupal 7 support is uitgebreid tot november 2022. Islandora 7 houdt vast aan de eerdere datums. Dit betekent features tot november 2020, bug fixes tot november 2021 en security updates tot april 2022. Drupal 8 support loopt (gek genoeg) tot november 2021, maar de overstap naar Drupal 9 is relatief klein. Wanneer Islandora 9 uitkomt en de support voor Islandora 8 eindigt, is nu nog niet bekend.

Het was een hele interessante middag en avond. Over de andere 3 events verschijnt binnenkort ook een blog. Hier staat de blog van de tweede dag en hier die van de derde dag.