Klaas Freitag
CTO ownCloud.com
die neue Private Cloud für Dich
Chemnitzer Linux-Tage 2022
Klaas Freitag, Tobias Baader
Klaas Freitag
CTO ownCloud.com
Tobias Baader
Product Management
ownCloud Community aktiv seit 2010?
N Releases des PHP basierten Servers mit
vielen Applikationen (Apps)
Integrationen
Enterprise Anwendungen
Aktiv maintainte Clients
Mobil-Clients für Android und iOS
dem Desktop Client für Linux, MacOS und Windows
Virtual Filesystem für Windows
Seit zehn Jahren aktiv und nie weg gewesen
ownCloud Company mit Sitz in Nürnberg
Heute etwa 60 MitarbeiterInnen
Kunden aus den verschiedensten Bereichen
Services und Projekte um und mit ownCloud
Anspruch: private Cloud auf Enterprise Niveau
im Detail
ist ownCloud Infinite Scale?
open source Software
EFSS Server-Neuimplementierung
komplett neue Webapplikation
kompatible Desktop- und Mobilclients
released als Technical Preview, GA im Laufe 2022
Deine neue private cloud?
Die Motivation, eine radikale Erneuerung unserer Serverimplementierung anzugehen:
In zehn Jahren ownCloud haben wir viel gelernt.
Architektonische Schwächen überwinden
Reduzierung
Kollaboration statt Eigengewächs
Integrationsfähigkeit
Resourcensparsamkeit
Skalierbarkeit
Einfachheit
"Infinite Scale is a design principle"
und nicht (nur) Marketing
Golang
Microservices Architecture mit GRPC (intern)
"Cloud Native" Deployment Modelle
Strenge Trennung von Clients und Server
Höchste Integrierbarkeit
Testdriven, agile development
Eine neue Epoche für ownCloud!
Resourcen sparen:
Energie
Geld
Adminstrationsaufwand
Entwicklungsaufwand
More "Cloud Native"
Lösung des "Split-Brain" Problems:
Information ist verteilt zwischen Filesystem und Datenbank
Daten müssen so eng wie möglich zusammengehalten werden
ownCloud Infinite Scale ist nicht ownCloud allein.
CERN als Entwicklungspartner
oCIS baut auf dem CS3 Projekt Reva auf
CS3 und European Science Mesh https://cs3mesh4eosc.eu/
LibreGraph initiative mit Kopano: https://owncloud.com/de/news/libregraph-initiative-kopano/
Golang Community
"Early Adopters"
Ein paar Beispiele
"Infinite" funktioniert nicht mit einem einzigen Dateibaum.
oCIS File-Spaces sind eine weitere Organisationseinheit, die einen Datei-Teilbaum kapselt.
Indizierungen, Suche, ETag Propagation wird auf Space-Ebene abgehandelt und ist gut parallelisierbar.
oCIS identifiziert Dateien entweder per ID oder anhand einer SpaceID und eines relativen Pfades.
Scalierbares Datenkonzept
Metadaten sind "Zusatzinformationen" zu Dateien. Beispiele: Uploadtime, Zugriffsrechte, …
Wie werden Metadaten gespeichert ohne Datenbank?
Extended file attributes
Metadaten files in speziellem Metadaten-Storage
Schnelle Suche durch Indizierung unterstützt
Metadaten werden in den extended file attributes abgelegt:
[:~/.ocis>] $ getfattr -d nodes/12/38/b8/a0/-b4f5-485b-b504-37eaf8ad9ab3
# file: nodes/12/38/b8/a0/-b4f5-485b-b504-37eaf8ad9ab3
user.ocis.blobid="495d3afd-4b5a-416e-9ad8-a3a1234ffa10"
user.ocis.blobsize="1149628"
user.ocis.cs.adler32=0se4qZjQ==
user.ocis.cs.md5=0sFtBopic4u9/n2C2D6NVTeA==
user.ocis.cs.sha1=0s8yHNXLt87IvxhNqynnXatU1OeKg=
user.ocis.name="ksnip_20210127-123506.png"
user.ocis.parentid="220ca77b-3a9f-47ce-a934-a48c0f4409d4"
Speichert größere Mengen an Metadaten in JSON files.
Diese files lassen sich auf Space-Ebene indizieren (blieve-Index) und werden dadurch extrem schnell durchsuchbar.
Wie kann eine Datei in einem Tree schnell anhand einer ID finden?
Alle Shares sind ID basiert
Links verwenden auch besser eine ID
Das Decomposed FS ist eine dafür optimierte Filesystem-Struktur:
Lookup einer Datei oder eines dir-listings anhand einer ID
Separation von Binärdaten und Ordnungsstruktur
Struktur im Posix Filesystem:
Beispiel: Datei files/ksnip*.png
im Personal Space eines Benutzers
oCIS abstrahiert verschiedene Storage Technologien.
Für jedes Filesystem kann ein eigener Treiber geschrieben werden, der dessen Stärken ausnutzt
Beispiele: SMB oder S3ng
Der neue Webclient
ownCloud Web ist im Screenshot als der "Rahmen" zu sehen
D.h. ownCloud Web ist als Plattform konzipiert, um Apps / Extentions zu integrieren
Der File Explorer ist die erste App, die in ownCloud Web integriert wird
API driven | Alle Daten und Aktionen werden via APIs angesprochen |
Technologie | VUE / TypeScript |
Kompatibilität | Entwickelt für oCIS, kompatibel zur oc10 |
Design Baukasten | Offenes Designsystem → Community Baukasten für Extention Entwickler; einheitliches look and feel |
Barrierefrei | Für nicht-Maus User, blinde Menschen mit Screenreader oder anderweitig Eingeschränkte wie z.B. Eltern mit Kind auf dem Arm etc. |
Offiziell: Nein
Betaphase startet Anfang Mai 2022
Stabile "Version 1.0" ab Sommer / Q3 2022 geplant
Europäische Organisation für Kernforschung (CERN), wir selbst und Andere nutzen ownCloud Web aber bereits produktiv
Probierts gerne mal aus - User können risikofrei zwischen classic und dem neuen UI wechseln (ownCloud 10)
"Joy of use" sowohl für Expert*innen als auch für unerfahrene user
Es folgt: Einblick in unser Usability-Nähkästchen
Gebrauchstauglichkeit (Usability) bezeichnet nach DIN EN ISO 9241-11 das Ausmaß, in dem ein System, ein Produkt oder eine Dienstleistung durch bestimmte Benutzer in einem bestimmten Nutzungskontext genutzt werden kann, um bestimmte Ziele effektiv, effizient und zufriedenstellend zu erreichen.
🥱 … ziemlich trocken. Wenn ich erklären will, was Usability ist, halte ich es lieber mit den Worten von Steve Krug:
"Usability bedeutet, dass ein normaler Mensch in der Lage sein sollte, Ihre Produkte zu benutzen, ohne den Vorgang als frustrierend oder lästig zu empfinden. Die Dinge müssen also gut funktionieren und einfach zu benutzen sein. Löffel, zum Beispiel, sind unglaublich ‘gebrauchstauglich’."
(Verstehen des Nutzungskontextes)
Was sind die 10 wichtigsten Aktionen, die user mit meiner Software tun?
(z.B. login, upload files, share files public, via user and via private link, receive files and / or add it to your oc, create folders or files, move files, rename a file, view metadata of files, view specific files online like video, image, document, audio and edit textfiles online.)
Formuliere aus diesen Aktionen die Aufgaben für einen Usability-Test
“Flurtest” in der eigenen Organisation
Freunde und Bekannte fragen
Remote: Screensharing mit externen Personen
Platformen: UX Testing Platform (nimmt einem die Suche nach Testpersonen ab)
Testessen: usability-testessen.org (nimmt einem die Suche nach Testpersonen ab)
Profi UX Lab (nimmt einem die Suche nach Testpersonen ab) 💸
uvm…
4-6 Testpersonen reichen
Qualitative vs. Quantitative Tests
Falls es internen Widerstand gegen Usability-Verbesserungen gibt, lasst diese Personen live beim Test zusehen – wirkt Wunder! (dürfen aber nicht reinquatschen)
Das Wichtigste: Jeder Usability-Test ist besser als kein Test!
(Nutzungsanforderungen spezifizieren)
Aufzeichnungen: Text / Screenrecording
Kümmere dich zuerst um das Schlimmste!
Kritisch: Der Fehler betrifft kritische Funktionen oder kritische Daten. Es gibt keine Umgehungsmöglichkeit. Beispiel: Fehlgeschlagene Installation, kompletter Ausfall einer Funktion.
Schwerwiegend: Der Fehler betrifft wichtige Funktionen oder wichtige Daten. Es gibt eine Abhilfe, aber sie ist nicht offensichtlich und schwierig. Beispiel: Eine Funktion ist in einem Modul nicht funktionsfähig, aber die Aufgabe ist machbar, wenn 10 komplizierte indirekte Schritte in anderen Modulen befolgt werden.
Geringfügig: Der Fehler betrifft eine geringfügige Funktionalität oder unkritische Daten. Es gibt eine einfache Umgehung. Beispiel: Eine unbedeutende Funktion, die in einem Modul nicht funktioniert, aber dieselbe Aufgabe ist von einem anderen Modul aus leicht machbar.
Trivial: Der Fehler beeinträchtigt weder Funktionalität noch Daten. Es ist nicht einmal eine Umgehung erforderlich. Er hat keine Auswirkungen auf die Produktivität oder Effizienz. Er stellt lediglich eine Unannehmlichkeit dar. Beispiel: Geringfügige Unstimmigkeiten im Layout, Rechtschreib-/Grammatikfehler
Immer Userstories schreiben!
Schema: Als [Rolle] möchte ich [Funktion] um [Nutzen].
„Als ownCloud user die eine Datei via Link teilen will möchte ich verstehen, wer durch den Link Zugriff erhält, damit ich klarheit habe wer wie die Datei abrufen kann.“
(Konzept)
Recherche bevor ich mit den Scribbles anfange:
Welche Bedienungsmuster kennen die Benutzer bereits von ähnlichen Anwendungen?
Gibt es einen Quasi-Standard?
Nur selten muss und sollte man das Rad neu erfinden („Ich hasse Veränderung“)
Grundsatz: „Don’t make me think“
Ca. 10x mal schneller als Feindesign
Höhere Änderungsbereitschaft von meiner Seite (weil ich ja relativ wenig Zeit investiert habe)
Meist völlig ausreichend, um das Konzept im Team oder mit Usern zu diskutieren
… sind wir nicht so gut drin und haben uns daher Unterstützung von einer Agentur geholt.
Ergebnis: Design Baukasten in Figma
Könnt ihr gerne auch benutzen unter: https://www.figma.com/file/EqAiB1wY7cYaMaitjyzup3/Current-oC-Web-UI-Kit-(WIP)?node-id=0%3A1
Zuletzt: Iteration zu Schritt 1 (Testing), ggf. Implementierung nach SCRUM
ownCloud Web ist von Grund auf als Plattform zur Integration von Apps konzipiert
Technik: API driven, VUE
Funktioniert mit oCIS und ownCloud 10
Barrierefrei
Fokus auf Usability mit Hilfe der 4 Schritte: 1) Testing 2) Anforderuungsspezifikation 3) Konzept 4) Feindesign.
Demotime!
What you see is what you get!
oCIS Single Binary starten:
Herunterladen von https://download.owncloud.com/ocis/ocis/
Ausführungsrechte setzen
Starten!
Browser öffnen auf https://localhost:9200
$ wget https://download.owncloud.com/ocis/ocis/1.18.0/ocis-1.18.0-linux-amd64
$ chmod 755 ./ocis-1.18.0-linux-amd64
$ OCIS_LOG_LEVEL=debug OCIS_INSECURE=true PROXY_HTTP_ADDR=0.0.0.0:9200 \
OCIS_URL=https://hostname:9200 ./ocis-1.18.0-linux-amd64 server
ownCloud Web
Dokumentation unter
Beispiele:
Deployment: https://owncloud.dev/ocis/deployment/
Download: https://download.owncloud.com/ocis/ocis/
ownCloud Infinite Scale wartet auf Euch!