Wenn Sie von Darktable kommen, sind Sie vielleicht an dies im Dunkelkammer-Modus gewöhnt:

während Ansel Ihnen dies bietet:

Dies ist kein Unfall, und es ist an der Zeit zu erklären warum, und warum dies nicht mit Anpassungsoptionen erweitert wird.
Bilder entstehen aus Pipelines
Eine Pixel-Pipeline ist eine Abfolge von Filtern, in denen Pixel verarbeitet werden, um auf einem Medium zu enden. Photoshop nennt diese Filter Ebenen , nach einer Metapher, die vom Papier und der matten Malerei stammt. Da Vinci Resolve, Blender, Natron usw. nennen sie Knoten , nach einer Metapher, die auf gerichteten Graphen und Flussdiagrammen basiert, am besten bekannt bei Ingenieuren. Beide haben eine Möglichkeit, zu zeigen, wie diese Filter organisiert sind, entweder mit einem Ebenenstapel oder mit dem Knotengraph (alias Flussdiagramm).
Der wichtige Teil ist, die Reihenfolge spielt eine Rolle.
Eine kurze Geschichte des schlechten Designs
Darktable nennt diese Filter Module. Aber “Module” stehen für die Logik der modularen Programmierung : Jedes Modul wird separat entwickelt, mit einer einheitlichen API, und weiß nichts über die anderen Module. Die Pipeline selbst weiß nichts über die Interna von Modulen, sie verdrahtet nur die Eingaben und Ausgaben. Es ist eine saubere Art zu entwickeln, aber für den Endanwender völlig irrelevant.
Das Problem ist, dass Darktable 2 Arten von Modulen hat:
- Die Leuchttisch-Module (und die Module im linken Bereich der Dunkelkammer), die willkürliche Werkzeugkästen sind und daher rein GUI-Elemente/rahmen sind,
- die Dunkelkammer-Module, die sowohl ein Pixel-Filter an einem bestimmten Punkt in der Pipeline sind als auch ein GUI-Werkzeugkasten. (genau wie die vorherigen Module).
Und diese verschiedenen Module sehen genauso aus aufgesammelt und benannt…

Das sind 3 Fehler hier:
- ein GUI-Objekt nach seinem technischen Implementierungsnamen und nicht nach seinem funktionalen Zweck zu benennen,
- zwei konzeptionell unterschiedliche Objekte gleich zu benennen und darzustellen,
- nicht zu schaffen, die Reihenfolge der Module auf eine klare, hierarchische Weise darzustellen.
Infolgedessen betrachten viele Nutzer immer noch alle Module als willkürliche Werkzeugkästen und haben jahrelang nach Wegen gefragt, sie willkürlich im Fenster neu anzuordnen, was eine rückgratlose (fehlende) technische Führung ihnen gegeben hat, in Form einer schrecklich programmierten (3500 Zeilen Code, subtil gebrochenen) und überkomplexen Modulsammlung, die selbst dann 3% Ihrer CPU frisst, wenn Sie nicht mit der Anwendung interagieren, solange Ihre Dunkelkammer im Leerlauf ist.
Das Sahnehäubchen auf dem Eisdessert ist, dass die Gruppen für den Zweck der Kompaktheit durch Symbole gekennzeichnet sind, aber diese Symbole sind absolut kryptisch und nur die langjährigen Nutzer vorgeben, zu wissen, was sie darstellen (Ich habe dasjenige gezeichnet, das Lichtstrahlen durch eine dünne Linse darstellt, das Leute für ein UFO halten - ich habe aus diesem Fehler gelernt).
Gute Arbeitsabläufe sind pipeline-bewusst
Es sind 3 Jahre vergangen, seit ich von Nutzern bezahlt werde, um ihnen die Feinheiten der Software zu erklären und immer wieder dieselbe Frage zu beantworten: Wo beginnt man einen Arbeitsablauf und wie rollt man ihn aus? Was mich immer noch überrascht, ist, dass Menschen mit einem Master-Abschluss, die die Dokumentation gelesen und die meisten meiner Videos gesehen haben, immer noch nicht in der Lage sind, selbstständig einen Bildbearbeitungsarbeitsablauf zu beginnen. Entweder schreit das nach schlechtem Design oder die meisten Menschen mit höherer Bildung sind Idioten. Tatsächlich, selbst wenn Menschen Idioten wären, ist es einfacher, das Design idiotensicher1 zu gestalten, als zu erwarten, dass sie über Nacht ein Gehirn entwickeln, also ist das Design entweder in Bezug auf die Zielgruppe schlecht.
Wenn Sie Photoshop öffnen, stapeln sich die Ebenen ziemlich intuitiv aufeinander. Wir haben alle mit Ebenen für Kunstprojekte in der Grundschule gearbeitet. Sie würde nicht darauf kommen, auf der untersten Ebene zu arbeiten, nachdem Sie neuen Kram oben draufgelegt haben. Nun, die 70-irgendwas Module von Darktable, organisiert in themenbezogene Registerkarten, in einer Weise, die weder die Pipeline noch den Arbeitsablauf berücksichtigt, sind garantiert, die Neulinge zu entmutigen und schlechte Angewohnheiten unter den alten Nutzern zu fördern.
Gesunde Arbeitsabläufe sind sich der Pipeline bewusst, was bedeutet, dass die Reihenfolge, in der Sie die Filter anpassen, durch den Ort definiert sein sollte, an dem diese Filter in der Pipeline sitzen. Aber ich sage, pipeline-bewusst, nicht pipeline-definiert, weil der Anfang und das Ende der Pipeline (Eigenschaften der Szene und des Displays) zuerst eingestellt werden sollten, um einen guten Überblick über das zu bekommen, was wir dazwischen machen. Besonders, wenn Sie HDR-Signale auf einem SDR-Display manipulieren wollen, müssen Sie zuerst Ihre HDR-Sonnenbrille aufsetzen, um Ihr Signal in SDR zu sehen. Aber was du siehst, ist nicht das, was in deiner Pipeline ist. Deshalb folgt der Arbeitsablauf nicht 1:1 der Pipeline, ist dafür aber immer noch ziemlich nah dran.
Stellen Sie sich vor, Sie legen einen Farbstich im Modul Farbabgleich fest, indem Sie über die Einstellung Betrag die Lichter anvisieren. Dann finden Sie, dass das Bild zu dunkel ist, und erhellen es mit dem Modul Belichtung. Aber Belichtung kommt (weit) vor Farbabgleich in Ihrer Bearbeitungspipeline, sodass Sie die Einstellung des Farbstichs aktualisieren müssen, da er wahrscheinlich zu stark auf den Mitteltönen liegt. Nun, kombinieren Sie das mit einem anderen Zwischenmodul (oder mehreren), das eine parametrische Maske auf einer beliebigen Licht- oder Helligkeitsmetrik verwendet… Sie betreiben kreisförmige Bearbeitung, eine besonders ineffiziente und frustrierende Bearbeitungserfahrung, bei der jede neue Einstellung die vorherige ungültig macht. Natürlich gibt es Menschen, die denken, dass Fotografie eine Kunst ist und dass alles eine Frage von Meinung und Vorlieben ist, sodass letztendlich nichts davon wichtig ist. Kunst oder nicht, ein Kartenhaus wird vollständig einstürzen, sobald Sie anfangen, an den unteren Stockwerken zu rütteln, also geht es letztendlich darum, wie viel Zeit Sie bereit sind zu verschwenden, und das hat nichts mit Meinungen oder Vorlieben zu tun. Ich würde auch behaupten, dass Wochenend-Hobbyisten ebenso zeitlich eingeschränkt sind wie professionelle Fotografen: Letztere aus wirtschaftlichen Gründen, Erstere, weil Wochenenden nur 2 Tage haben und sie am Montagmorgen mit genug Spaß im System zurück ins Büro müssen, um eine weitere Woche zu überstehen.
Wie wissen Sie also, wann Sie von der Pipeline-Reihenfolge abweichen sollten? Nun, Sie buchen eine Sitzung mit mir für die Demo. Aber es gibt eine andere Lösung (mehr dazu weiter unten)…
In jedem Fall wird es das Problem nicht lösen, den Benutzern mehr Optionen zur Anpassung der Benutzeroberfläche zu bieten (und möglicherweise das anfängliche Missverständnis zu verstärken, dass Module nur GUI-Boxen sind). Es gibt den Leuten tatsächlich mehr Möglichkeiten, sich selbst zu schaden. Was Sie wollen und was für Sie gut ist…
Erneute Untersuchung des Problems
Während sich Darktable in einen Spielplatz für Geeks verwandelt hat, auf dem neu gleich besser ist und jedes Problem nach mehr lustigem Code verlangt, geht es bei Ansel darum, einfache Probleme auf einfache Weise zu lösen, um ein zuverlässiges Arbeitstier zu produzieren. Fangen wir also von vorne an.
Wir haben 70 Module. Obwohl Ansel einen Großteil davon als veraltet eingestuft hat, gibt es immer noch „zu viele“, im Sinne davon, dass sie alle für einen bestimmten Zweck nützlich sind, aber man braucht sie nicht immer und nicht alle gleichzeitig. Außerdem ist der Bildschirmplatz begrenzt, und wir können definitiv nicht alle gleichzeitig anzeigen. Und selbst wenn wir es könnten, wäre es nicht nett, einem durchschnittlichen Fotografen ein Cockpit-Dashboard zu präsentieren.
Also müssen wir entscheiden, welche Module zu welcher Zeit angezeigt werden sollen. Der Schwerpunkt liegt auf Zeit.
Die Zeitachse entrollen
Dem Gedanken des just in time folgend, scheint es nur natürlich, die Zeitachse in Arbeitsablaufschritte zu unterteilen. Die Auswahl aller sichtbaren Module zu einem bestimmten Zeitpunkt entspricht denen, die Sie jetzt und in den nächsten Minuten benötigen werden. Bei jedem Schritt im Arbeitsablauf wechseln Sie die Ansicht in der GUI. Es wird eine Diashow genannt.
Dies zeichnet einen linearen Pfad, dem man folgen kann, um aus der scheinbaren Unordnung Struktur und Anleitung zu gewinnen. GUIs sollen nicht nur Steuerelemente bereitstellen, sondern auch lehren, kommunizieren und die verfügbaren Möglichkeiten aufzeigen.
Jeder Tab ist jetzt eine Folie unserer Workflow-Diashow, die eng an die Pipeline-Reihenfolge gebunden ist. Und aus dem Chaos entstand Struktur.
Mit einigen Ausnahmen. Beispielsweise müssen Rauschunterdrückungsmodule früh in der Pipeline erfolgen, um Signalbeständigkeit zu gewährleisten, während sie in der Arbeitsabfolge später erscheinen als etwa die Farbenkalibrierung, da sie auf Pixelebene arbeiten und im Allgemeinen den globalen Farbstich nicht ändern (es sei denn, es gibt ernsthafte Rauschschäden, die die Grün/Magenta-Achse verschieben könnten, was typisch über 8000 ISO liegt). Ähnlich verhält es sich mit Schärfungsalgorithmen: Keines dieser Verfahren wird Lichtstärke, Farbton oder Farbintensität dramatisch verändern, so dass vorherige globale Farb- und Belichtungseinstellungen (arbeitsablauftechnisch) ungültig werden, und die korrekten Einstellungen werden auch davon abhängen, wie stark Sie die Bildbelichtung erhöht haben (wodurch die visuelle Stärke des Rauschens zusätzlich verstärkt wird). Diese Ausnahmen von der Regel werden durch eine numerische Analyse der Pixel-Filter verdeutlicht, was bedeutet, dass Menschen, die den Quellcode ohne vorheriges Wissen in der Signalverarbeitung nicht gelesen haben, keine Ahnung haben werden.
Implementierung
Prinzip
- Workflow-Schritte == Modul-Tabs.
- Diese Tabs haben Textnamen, die zwar mehr GUI-Platz beanspruchen können, aber man muss keine Doku lesen und/oder raten, was sie bedeuten: Es steht auf dem Etikett.
- Die ersten und letzten Tabs sind speziell
- Sie zeigen die Liste der aktivierten Module (Pipeline) bzw. die vollständige Liste der verfügbaren Module (alle).
- Nicht alle Tabs sind sofort sichtbar
- Je nach Seitenbreite werden einige Tabs ausgeblendet, was in Ordnung ist, denn Sie werden sie der Reihe nach von links nach rechts durchlaufen, sodass Sie nicht wirklich wissen müssen, was danach kommt
- Innerhalb der Tabs sind die Module in der Reihenfolge der Pipeline als Schichten organisiert
- Das ist von unten nach oben. So sollten Sie sie einstellen. Der Modulstapel stellt den Stapel der Effekte/Filter/Schichten über dem Raw-Bild dar.
Zusammengefasst: Folgen Sie der GUI-Reihenfolge von links nach rechts und von unten nach oben (denn es sind Schichten), und Sie haben Ihren Workflow ohne ermüdendes Lesen von Dokumentationen.
Die Module im Dunkelkammer-Modul können in jedem Tab durch Halten von Strg+Umschalt2 beim Ziehen und Ablegen über den Modulkopfzeilen sortiert werden. Seien Sie sich bewusst, dass dies auch die Reihenfolge der Module in der Pipeline neu ordnet und nicht als GUI-Komfort verwendet werden sollte. Es ist am besten, dies in den Tabs „Pipeline“ oder „Alle“ zu tun, wo Sie einen vollständigen Überblick über den Pipeline-Inhalt haben.
Favoritenmodule ersetzen
Das aktuelle Design hat keine Möglichkeit, Favoritenmodule in einem speziellen Tab zu definieren. Ich sehe keinen Sinn darin, mehr Ballast hinzuzufügen, um das Problem des ursprünglichen Ballasts zu lösen.
Für diese speziellen Module können Sie Verknüpfungen den „Anzeigen“ (also öffnen, anzeigen, entfalten) oder „Aktivieren“-Ereignissen (also aktivieren) zuweisen. Gehen Sie zum Bearbeiten-Menü, klicken Sie unten auf Tastaturkürzel, dann mit dem besonderen Cursor, den Sie erhalten haben, klicken Sie auf Ihr Bordbald-Lieblingsmodul (auf seinen Namen). Beispiel hier mit dem Belichtungsmodul:

Standardmäßig wird Ihnen das „Anzeigen“-Ereignis in der Elementspalte (ein weiteres Label, das ich ändern sollte) angezeigt. Sie können es für das „Aktivieren“- oder „Instanzieren“-Ereignis ändern. Der Effekt spielt dabei keine Rolle für diesen Rahmen, ich habe nicht getestet, in welchem Fall es verwendet wird und das gesamte Ding ist ohnehin ein verknotetes Durcheinander.
In jedem Fall bringen Sie diese Verknüpfungen sofort zu Ihren Lieblingsmodulen, ohne dabei zusätzliches GUI-Immobilien zu beanspruchen.
Schlussfolgerung
Dies löst das Problem der Module nicht, die von Benutzern als unattraktiv angesehen werden, und der Tatsache, dass Bildverarbeitungsmodule genauso wie Nicht-Bildverarbeitungsmodule aussehen. Ich habe dazu einige Ideen, das wird aber für ein anderes Mal sein.
Randbemerkungen
Viele andere Werkzeuge, die zuvor in kryptischen Symbol-Buttons versteckt wurden, wurden in das globale Menü integriert. Dieses Menü kann entfaltet werden, indem man Alt drückt, gefolgt von dem mnemotechnischen Buchstaben des Menüs (der unterstrichen wird, sobald Alt gedrückt wird). Einmal entfaltet, können die Menüs mit den Pfeiltasten navigiert werden.
Die Rückkehr zur Leuchtplatte ist jetzt der Escape/Return–Taste zugeordnet. In der Leuchtplatte wird die Bildtextsuche auch mit Strg+F gemappt (wie erwartet). Das Durchblättern der Bilder kann mit den Pfeiltasten erfolgen, die Auswahl mit der Leertaste und das Öffnen eines Bildes in der Dunkelkammer kann durch Drücken der Eingabetaste erfolgen.
Dies bedeutet, dass die Anwendung jetzt fast vollständig mit der Tastatur navigierbar ist, ohne sich Verknüpfungen merken zu müssen. Diese Verknüpfungen werden sowieso im Menü rechts von den Einträgen angezeigt.
Die Tabelle aller Verknüpfungen kann jetzt im Hilfemenü gefunden werden, vorher war sie nur … durch eine Verknüpfung zugänglich.
Translated from English by : ChatGPT. In case of conflict, inconsistency or error, the English version shall prevail.
And I mean “idiot-proof” in a “prevent pouring water into the acid” way, not in a “cancel chemistry labs because acid can burn” way. It’s not idiot-proof if the idiot is not allowed to do anything. ↩︎
It’s shitty but that’s because Gtk’s way of handling drag and drop events sucks. ↩︎