August

Goobi viewer Digest für August 2021

Coming soon 🚀

  • Überarbeitung der Kommentare

  • Docker Container

  • Benutzerseite im Frontend

Ankündigung

Wie bereits mit dem letzten beiden Digests angekündigt wird Java 11 ab diesem Release verpflichtend. Sollte ein System noch nicht aktualisiert worden sein muss das spätestens mit einem Goobi viewer Update erfolgen.

Entwicklungen

Docker

Das GEI ermöglicht die Bereitstellung des Goobi viewers in Docker Containern

Gemeinsam mit dem Georg Eckert Institut, Leibniz-Institut für internationale Schulbuchforschung, entwickeln wir eine Lösung um den Goobi viewer und alle dazugehörigen Komponenten und Dienste als Docker Container zur Verfügung zu stellen.

Wir sind stolz darauf mit dem August Release die ersten Dockerfiles und Preview-Container veröffentlichen zu können. Die Arbeiten sind noch nicht abgeschlossen, für die folgenden Komponenten können aber bereits Container von Docker Hub bezogen werden:

  • Apache Solr (vorkonfiguriert für den Goobi viewer)

  • Goobi viewer Indexer

  • Goobi viewer Connector

  • Goobi viewer Reference Theme

Das Theme bindet den Core als Abhängigkeit ein, dadurch ist das Theme der eigentliche Hauptcontainer.

Im kommenden Monat werden wir noch eine zentrale docker-compose Datei veröffentlichen und eine Anleitung schreiben wie der Goobi viewer mit Docker in Betrieb genommen werden kann.

Medien

Im CMS-Bereich wird nun auch der Upload von SVG-Dateien und MP4 Videos unterstützt. Diese können anschließend zum Beispiel in CMS-Seiten oder auch im Slider eingebunden werden.

Video Dateien in Werken haben über das zusätzliche Poster-Attribut ein Platzhalterbild, dass standardmäßig einen Play-Button anzeigt.

Quality Friday

Wie in den letzten beiden Digests angekündigt war das Goobi viewer Team im August nicht durchgehend komplett. Aus diesem Grund war es schwer größere Entwicklungen durchzuführen, bei denen die Arbeiten des einen auf Vorarbeiten des anderen aufbauen. Deswegen haben wir vermehrt Arbeiten durchgeführt die bei uns unter dem Begriff "Quality Friday" fallen.

Diesen gibt es bei intranda bereits seit vielen Jahren und sagt aus, dass ein Mitarbeiter 10 % seiner Arbeitszeit für Aufgaben und Entwicklungen nutzen darf, die zum Beispiel der allgemeinen Verbesserung der Software, der Dokumentation, automatischen Tests oder der Konfiguration der Entwicklungsumgebung dienen. Diese Arbeiten sind in der Regel nicht durch Entwicklungsaufträge gedeckt, würden sie aber nicht gemacht, entstehen "technische Schulden" und die reguläre Arbeit wird mit der Zeit immer schwieriger, zäher und langwieriger.

Ausgehend von dem Spruch "Freitag ab eins macht jeder seins!" und der Berechnung, dass bei einer 40 Stunden Woche 10 % der Arbeitszeit vier Stunden, also ein halber Tag pro Woche sind, kam dann die Idee auf, den Freitag Nachmittag für diese Arbeiten zu nutzen. Dadurch wurde der Begriff "Quality Friday", kurz "QF" geboren.

Im August haben wir verschiedenste Arbeiten in diesem Kontext durchgeführt. Im Folgenden möchten wir einige davon auflisten und erklären:

Konfigurationsdatei (QF)

Über die Jahre ist die zentrale Konfigurationsdatei config_viewer.xml immer weiter gewachsen. Mit gewachsen ist zum Beispiel auch die Art- und Weise mit der Funktionalität ein oder ausgeschaltet wird. Hier ein Beispiel wie es bisher war:

<user>
<userRegistrationEnabled>true</userRegistrationEnabled>
</user>
<reCaptcha show="false" />
<calendar>
<enabled>true</enabled>
</calendar>
<sidebar>
<toc>
<visible>true</visible>
</toc>
<sidebarRssFeed display="true" />
<sidebarWidgetDownloads visible="true" />
</sidebar>

Auch ohne tiefer in die Materie einzusteigen ist sehr schnell ersichtlich, dass verschiedenste Varianten und Begriffe existierten um immer jeweils das selbe zu tun. Nach den "Quality Friday" Arbeiten ist hier eine einheitliche Terminologie und Schreibweise zu erkennen:

<user>
<registration enabled="true" />
</user>
<reCaptcha enabled="false" />
<calendar enabled="true" />
<sidebar>
<toc enabled="true" />
<sidebarRssFeed enabled="true" />
<sidebarWidgetDownloads enabled="true" />
</sidebar>

Sicherlich haben wir an dieser Stelle noch Dinge übersehen die uns erst in den kommenden Monaten auffallen und dann angepasst werden. Aber wir haben einen gutes Fundament gelegt.

Änderungen wie diese machen ein Update auch immer länger, da die lokale Konfigurationsdatei an die veränderte Standardkonfiguration angepasst und migriert werden muss. Langfristig führen sie aber zu einer deutlichen Verbesserung in vielen Arbeitsabläufen: Ein Entwickler muss sich keine Gedanken mehr machen wie er einen neuen Schalter nennt, denn er kann sich an den existierenden Orientieren. Die Lernkurve ist für alle deutlich steiler, die Übertragbarkeit von Wissen von einem Element auf das andere ist einfach gegeben und muss nicht jedes Mal nachgeschaut werden. Zu guter Letzt wird auch die Konfigurationsdatei insgesamt kürzer und dadurch übersichtlicher.

Wir haben auch die in der Konfigurationsdatei enthaltenen Kommentare zu einem großen Teil überprüft und in der Art- und Weise wie Funktionalität und Schalter formuliert werden homogenisiert.

Barrierefreiheit (QF)

Im November 2020 haben wir im Goobi viewer die Barrierefreiheit nach WCAG 2.1 AA sichergestellt. Jetzt, ein gutes halbes Jahr später, sind wir den Code erneut durchgegangen und haben an einigen Stellen nachjustiert. Dies betrifft vor allem den Slider und Karten.

Wir sind alle Seiten im Goobi viewer Core durchgegangen und haben uns angeschaut wie die Sidebar aufgebaut wird. Das war über die Jahre gewachsen und nicht mehr einheitlich. Wir haben sichergestellt, dass nun auf allen statischen Seiten einheitliche und sinnvolle Widgets angezeigt werden, auf einigen Seiten welche entfernt und auf anderen hinzugefügt.

XHTML (QF)

Die Webseiten des Goobi viewers werden in XHTML Dateien geschrieben und dort mit dem Templating Framework JSF realisiert. In den XHTML Dateien haben wir verschiedenste Dinge aufgeräumt, wie zum Beispiel die Reihenfolge von Codeblöcken innerhalb der Dateien an die Reihenfolge der Anzeige der Seite angeglichen, Einrückungen von Code angepasst und korrigiert oder die Verwendung von sogenannten Namespaces vereinheitlicht. Typisches "Housekeeping"

Browser Console (QF)

Für Entwickler ist es notwendig, dass die Console in den Entwicklertools des Browsers funktioniert und übersichtlich ist. Jegliche Art von Fehlern, Warnungen und überflüssigen Ausgaben sollten vermieden werden. Wir sind diesen Bereich noch einmal durchgegangen und haben verschiedene Änderungen durchgeführt. Als erstes haben wir überflüssige Meldungen auskommentiert. Anschließend wurden Anpassungen in Grunt für die Generierung der Goobi viewer eigenen CSS und Javascript Dateien vorgenommen um den Pfad zu den Source Maps richtig zu setzen. Am Ende haben wir noch begonnen die Verwaltung der verwendeten Javascript Bibliotheken zu überarbeiten um auch hier die Sourcemaps mit zu übernehmen.

Goobi viewer Indexer

Die Art- und Weise wie der Goobi viewer die Konfigurationsdatei einließ und verwaltet wurde modernisiert. Dadurch ist es jetzt nicht mehr notwendig Leerzeichen durch einen Platzhalter zu ersetzen, sondern sie können in regulären Ausdrücken ohne explizite Maskierung direkt verwendet werden.

Versionsnummern

Die Versionen die in der pom.xml des Themes eingetragen werden müssen um die in diesem Digest beschriebenen Funktionen zu erhalten lauten:

<dependency>
<groupId>io.goobi.viewer</groupId>
<artifactId>viewer-core</artifactId>
<version>21.08.5</version>
</dependency>
<dependency>
<groupId>io.goobi.viewer</groupId>
<artifactId>viewer-core-config</artifactId>
<version>21.08</version>
</dependency>

Der Goobi viewer Indexer hat die Versionsnummer 21.08

Der Goobi viewer Connector hat die Versionsnummer 21.08.2

Das Goobi viewer Crowdsourcing Modul hat die Versionsnummer 21.08