Nachrichten

Welcome Ansel GPT !

Ankündigung

Nachdem ich endlich die gesamte Website und die Dokumentation in einen wasserdichten Übersetzungs-Workflow (unter Verwendung von po4a über Hugo) integriert hatte, der zufällig das exakt gleiche Toolset und die gleiche Logik wie die Ansel-Anwendung verwendet, kam mir die Idee, leere Übersetzungen zu automatisieren, zuerst aus den Software-Übersetzungsdateien, dann über die ChatGPT-API, die bei der Übersetzung von Markdown-Syntax durchaus einen guten Job macht.

Wenn man allein arbeitet, kann man sich nicht auf soziale Faulheit  verlassen, also muss man clever sein. Du kannst die Liste der Dinge, die ich bereits im Hintergrund für Ansel automatisiert habe, sehen.

Willkommen, Entwicklerdokumentation!

Entwicklung

Im Dezember 2019 habe ich darum gebeten, dass jemand die Erstellung von AppImages-Paketen für Darktable übernimmt. Der offensichtliche Vorteil wäre gewesen, frühe Tests zu ermöglichen, vor der Veröffentlichung, von Menschen, die den Quellcode nicht selbst erstellen können, um hoffentlich frühes Feedback zu liefern und beim Debuggen vor der Veröffentlichung zu helfen. Dies war nie eine Priorität, was bedeutet, dass es in Ordnung war, einen Vorveröffentlichungs- und eine Nachveröffentlichungsspur zu haben, um Bugs zu beheben.

Den Cache der Pipeline und 10 Jahre alte Bugs beheben

Entwicklung

Zusammenfassung der vorherigen Episoden

  1. Between 2020 and 2022, Darktable underwent a mass-destruction enterprise, by a handful of guys with more freetime and benevolence than actual skills,
  2. In 2022, I started noticing an annoying lag  between GUI interactions with sliders controls and feedback/update of said sliders. For lack of feedback stating that the value change was recorded, users could change it again, thereby starting additionnal pipeline recomputes and effectively freezing their computer because stupid GUI never said “got you, wait for a bit now”.
  3. I discovered that pipeline recomputations orders were issued twice per click (once on “button pushed”, once on “button released” events), and once again for each mouse motion, but also that the GUI states were updated seemingly after pipe recompute.
  4. I fixed that by almost rewriting the custom GUI controls (Bauhaus lib). I thought that preventing reckless recompute orders was gonna solve the lag : it didn’t. Then, I discovered that requesting a new pipeline recompute before the previous ended waited for the previous to end, despite a shutdown mechanism implemented many years ago that should have worked.
  5. I fixed that by implementing a kill-switch mechanism on pipelines, following comments in the code from the 2010’s and internal utilities that may well have never worked. This did not always work because the kill order came often with a noticeable delay. Once again, the GUI lag was not fixed.

Neuschreiben des Import-Werkzeugs

Entwicklung Redesign

Ansel erbt von Darktable seine Datenbankgrundlage: Die nicht-destruktiven Bearbeitungshistorien werden pro Bild in einer SQLite-Datenbank gespeichert, zusammen mit Metadaten und anderen benutzerdefinierten Daten. Das Bewusstmachen der Datenbank für neue Bilder erfolgt durch das „Importieren“ von Bildern von einer Festplatte oder einer Speicherkarte. Hier kommt das Importwerkzeug ins Spiel.

Leider ist der Darktable-Importer eine weitere Sache, die um das Jahr 2020 verstümmelt wurde und sich in etwas äußerst Verstörendes verwandelte, da er ein Datei-Browser ist, der keinem zuvor bekannten Datei-Browser ähnelt und grundlegende Funktionen (wie Strg+F oder EXIF-Vorschau) vermisst, während er dennoch mit nutzlosen Funktionen überladen ist (siehe unten). Hier verlieren wir viele potenzielle zukünftige Benutzer, und es ist nur der erste Schritt des Workflows. Was für ein großartiges Beispiel dafür, was eine „Workflow-App“ leisten kann!

Implementierung eines Abbruchschalters in der Pipeline

Entwicklung

Ich habe lange gedacht, dass es einen Abbruchmechanismus in der Pixel-Pipeline gibt. Der Anwendungsfall ist folgender:

  1. Sie ändern einen Modulparameter,
  2. die Vorschaubilder (die zentrale Dunkelraumvorschau und das Thumbnail im linken Bereich, das auch für Histogramm und Farbwähler verwendet wird) rechnen ihre Pipeline neu, um diese Änderung zu berücksichtigen,
  3. eines der Vorschaubilder endet mit dem Rendern vor dem anderen, und das Ergebnis ist offensichtlich nicht das, was Sie wollten,
  4. Sie ändern erneut den Modulparameter, ohne darauf zu warten, dass die Neuberechnung abgeschlossen ist.

In diesem Fall möchten Sie alle aktiven Pipelines beenden, weil deren Ausgabe nicht verwendet wird, und alles sofort mit neuen Parametern neu berechnen. Außer Darktable tut das nicht, es lässt die Pipeline beenden, bevor sie neu startet, und angesichts der Kommentare im Quellcode scheint es sich um eine relativ neue Regression zu handeln und nicht um das ursprünglich beabsichtigte Verhalten.

Das Ent-Darktable-ing der GUI-Kontrollen

Entwicklung

Darktable hat seine eigenen GUI-Widgets-Bibliothek für Schieberegler und Kombinationsboxen (auch Drop-Down-Menüs oder Auswahllisten genannt), genannt Bauhaus (im Quellcode unter src/bauhaus/bauhaus.c). Während sie Gtk als Backend verwenden, sind Bauhaus benutzerdefinierte Objekte. Und wie vieles bei Darktable, gleich benutzerdefiniert verfault.

Im Jahr 2022 bemerkte ‍ich Parasiten-Neuzeichnungen und Lags  bei deren Nutzung, was zu einem frustrierenden Benutzererlebnis führte: Das Widget-Neuzeichnen schien darauf zu warten, dass Pipeline-Berechnungen abgeschlossen waren, was bedeutete, dass Benutzer nicht wirklich sicher waren, ob ihre Wertänderung registriert wurde, was sie dazu bringen könnte, es erneut zu versuchen, einen weiteren Zyklus teurer Neuberechnungen zu starten, und ihren Computer tatsächlich für mehrere sehr frustrierende Minuten nutzloser Zwischenpipeline-Berechnungen einfror.

Änderungen in der Verteilungsunterstützung für das Linux AppImage-Paket

Ankündigung

Rawspeed (die Bibliothek, die die Decoder für Kamera-Rohdateien bereitstellt) hat die Unterstützung für GCC < 12 eingestellt. Infolgedessen kann ich das AppImage nicht mehr auf Ubuntu 20.04 (mithilfe von Github-Runners) erstellen, sondern muss es auf 22.04 erstellen.

Das bedeutet, dass jede Linux-Distribution mit einer älteren libc als 2.35 das neue AppImage ab heute nicht mehr starten kann. Das sollte die meisten Benutzer nicht betreffen, die Distributionen verwenden, die 2021 oder neuer aktualisiert wurden. Ubuntu 20.04 und andere LTS/alte stabile Distributionen (Debian stable) könnten betroffen sein.

Erklärung des Redesigns der Ansel-Modulgruppen

Design

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

image

während Ansel Ihnen dies bietet:

image

Dies ist kein Unfall, und es ist an der Zeit zu erklären warum, und warum dies nicht mit Anpassungsoptionen erweitert wird.

Neue Build-Optionen für Linux

Entwicklung

Ich habe zufällig entdeckt, dass das Linux-Build-Skript eine „Paket“-Build verwendet, was bedeutet, dass die CPU-Optimierungen auf allgemeine beschränkt sind, um portable Binärdateien zu produzieren, die auf jeder x86-64-Plattform installiert werden können. Mit “Verwendung” meine ich, dass die Paket-Build-Option nicht explizit deaktiviert war, sodass sie standardmäßig aktiviert war.

Wie dem auch sei, dies ist nun standardmäßig deaktiviert, da die tatsächlichen Pakete (.exe und .appimage) nicht durch dieses Skript erstellt werden, das in erster Linie für Endbenutzer gedacht ist. Um das vorherige Verhalten wiederherzustellen, müssen Sie Folgendes ausführen:

Entwicklungstagebuch #2: Vorstellung von Chantal

Entwicklung

2022 war in Bezug auf Junk-Emails und Lärm so schlecht, dass ich Virtual Secretary  gestartet habe, ein Python-Framework, um intelligente E-Mail-Filter zu schreiben, indem Informationen aus mehreren Quellen kombiniert werden, um herauszufinden, was eingehende E-Mails sind und ob sie wichtig/dringend sind oder nicht. Wenn ich von Junk-Mails spreche, sind das auch Github-Benachrichtigungen, Pings auf pixls.us (Gott sei Dank habe ich mein Konto in diesem dummen Forum geschlossen), YouTube und direkte E-Mails von Menschen, die hoffen, privat Hilfe zu bekommen.

Dev-Tagebuch

Entwicklung

Es sind ungefähr 3 Monate her, dass ich “R&Darktable” (was niemand richtig zu verstehen schien) in “Ansel” umbenannt habe, dann den Domainnamen gekauft und die Website von Grund auf mit Hugo erstellt habe (ich hatte zuvor nie in Golang programmiert, aber es ist hauptsächlich Template-Code).

Dann habe ich insgesamt 70 Stunden darauf verwendet, die nächtlichen Paketbuilds für Windows und Linux für kontinuierliche Lieferung vorzunehmen, etwas, was Darktable nie richtig gemacht hat (“Sie können selbst bauen, es ist nicht schwer”), nur um zu sehen, wie der Bug-Tracker nach Veröffentlichung explodiert (nichts besseres als den Vorveröffentlichungs-Spurt mit einem Nachveröffentlichungs-Spurt zu verkürzen, um Ihre Lebenserwartung zu reduzieren).

Darktable: Im Zeitlupentempo gegen die Wand krachen

Was passiert, wenn eine Gruppe von Amateurfotografen, die zu Amateurentwicklern wurden, zusammen mit einer Reihe von Back-End-Entwicklern, die Bibliotheken für Entwickler entwickeln, entscheiden, ohne Methode oder Struktur an einer Industriessoftware für Endbenutzer zu arbeiten, deren Kernkompetenz (Kolorimetrie und Psychophysik) irgendwo zwischen einem College-Abschluss in Fotografie und einem Master-Abschluss in angewandten Wissenschaften liegt, während sie versprechen, zwei Veröffentlichungen pro Jahr ohne Projektmanagement zu liefern? Ganz zu schweigen davon, dass die Gründer und die erste Generation von Entwicklern weitergezogen und geflüchtet sind?

Search

You can also ask Chantal, the AI search engine.