6 Punkte von GN⁺ 2024-03-28 | 3 Kommentare | Auf WhatsApp teilen
  • Swift eignet sich dank seiner sauberen Syntax, statischen Typisierung und spezieller Funktionen, die das Schreiben von Code erleichtern, gut für die Erstellung von Benutzeroberflächen
  • Adwaita for Swift nutzt diese Swift-Funktionen und bietet eine intuitive Schnittstelle für die Entwicklung von Anwendungen für die GNOME-Plattform
  • GNOME ist eine beliebte Open-Source-Desktop-Umgebung für Linux, die auf Einfachheit und Barrierefreiheit ausgerichtet ist

Codebeispiel

  • Im Codebeispiel mit Adwaita for Swift wird eine View namens Counter definiert, die den Teil der Benutzeroberfläche innerhalb eines Fensters anzeigt
  • Views können in andere Views verschachtelt oder als Kind eines Fensters hinzugefügt werden; je nach Position in der View-Hierarchie kann ihr Inhalt von außen verändert werden
  • Dadurch wird es einfacher, Views zu kombinieren, um verschiedene Ergebnisse zu erzeugen

Motivation

  • Ziel ist es, das Schreiben von GNOME-Apps mit Swift zu ermöglichen
  • Bestehende libadwaita- und GTK-Bindings folgen einem imperativen Codierstil, bei dem die Benutzeroberfläche mit einer Reihe von Befehlen aufgebaut wird
  • Adwaita for Swift ist datenorientiert aufgebaut; wenn zum Beispiel durch einen Tastendruck die Variable count geändert wird, aktualisiert sich die Benutzeroberfläche automatisch

Benutzerfreundlichkeit

  • Bei traditionellen Bindings muss bei jeder Wertänderung eine Funktion auf einem Objekt aufgerufen werden, damit ein Widget seinen Inhalt aktualisiert
  • Bei Adwaita for Swift muss einer zu speichernden Variable lediglich eine eindeutige Kennung hinzugefügt werden; den Rest übernimmt das Framework

Lesbarkeit

  • Der datenorientierte Ansatz wirkt sich positiv auf die Lesbarkeit aus
  • Durch die deklarative Definition der Benutzeroberfläche kann man sich stärker auf Aussehen und Verhalten der App konzentrieren als auf die Art und Weise, wie das Ergebnis erreicht wird

Entwicklung plattformübergreifender Apps

  • Adwaita for Swift ermöglicht das Schreiben von Apps, die mit einer einzigen Codebasis unter Linux, macOS und Windows laufen
  • Backend-Swift-Code kann zwischen SwiftUI-Apps und GNOME-Apps gemeinsam genutzt werden
  • Mit Swift lassen sich neue GNOME-Apps erstellen und dabei eine hohe Code-Lesbarkeit sowie Speichersicherheit erreichen

Veröffentlichung von Apps

  • Adwaita for Swift arbeitet gut mit Flathub zusammen und vereinfacht so Installation und Veröffentlichung von Apps für Desktop-Linux
  • Es gibt eine Freedesktop-SDK-Erweiterung für Swift 5 sowie ein Werkzeug, das Swift-Package-Manager-Abhängigkeiten in Flatpak-Quellen umwandelt

Meinung von GN⁺

  • Die Kombination von Swift und GNOME eröffnet Entwicklerinnen und Entwicklern neue Möglichkeiten zur App-Entwicklung auf einer neuen Plattform; insbesondere die Verbindung von Swifts starken Sprachfunktionen mit der benutzerfreundlichen GNOME-Umgebung ermöglicht eine effiziente Entwicklungserfahrung.
  • Der Artikel präsentiert einen neuen Ansatz für die Linux-Desktop-Umgebung und betont gegenüber bisherigen Entwicklungsweisen den Komfort und die Lesbarkeit eines deklarativen Stils.
  • Er hebt die Vorteile plattformübergreifender Entwicklung hervor und unterstreicht, wie wichtig es ist, auf verschiedenen Betriebssystemen dieselbe Nutzererfahrung zu bieten
  • Aus technischer Sicht können Swifts statische Typisierung und Speichersicherheit zur Leistung und Stabilität von Apps beitragen
  • Aus kritischer Perspektive sollte die Möglichkeit von Kompatibilitäts- oder Leistungsproblemen in anderen Desktop-Umgebungen als GNOME berücksichtigt werden

3 Kommentare

 
bbulbum 2024-03-30

https://stuff.mit.edu/afs/athena/…

Die offizielle Aussprache von Gnome ist nicht „Nohm“, sondern „Gnom“.

 
neoroman 2024-03-29

Großartig.

 
GN⁺ 2024-03-28
Hacker-News-Kommentare
  • Diskussion über einen SwiftUI-ähnlichen Wrapper

    • Es wird ein Ansatz erwähnt, der einen deklarativen Wrapper ähnlich SwiftUI bereitstellt. Die zentrale Annahme ist, einen Wrapper im SwiftUI-Stil für GNOME-Funktionen bereitzustellen.
    • SwiftUI selbst hat mit Wachstumsschmerzen zu kämpfen, wenn es darum geht, Verarbeitung/Aktualisierungen auf dem richtigen Thread auszuführen und Datenbindung korrekt umzusetzen.
    • Beiträge auf swift.org oder im Apple-Blog sind meist nur kleine Demos, die einen Pfad zeigen, der weitgehend funktioniert. Wenn neue Frameworks oder Plattformen diskutiert werden, möchte man mehr Belege dafür sehen, dass die Autoren die zentralen Probleme verstehen, lösen und die Entwicklung fortsetzen werden.
    • Cross-Platform-UI-Frameworks werden schnell komplex und haben langfristige Probleme, die für Nutzer oder Kunden zu Hindernissen werden können, wie etwa bei Flutter oder Java/Eclipse.
    • Im Fall von Swift hilft das nicht gerade, da es mehrere Concurrency-Modelle gibt und sich das Verhalten auf Apple-Plattformen und unter Linux unterscheidet (UI wird offiziell nicht getestet).
  • Erwähnung anderer Projekte und Tools

    • Es werden Links zu einem SwiftUI-ähnlichen Wrapper, Tokamak und FlutterSwift für Embedded-Anwendungsfälle bereitgestellt.
  • Teilen persönlicher Projekterfahrungen

    • Es wird die Erfahrung geteilt, ein kleines Side-Project mit Vala und gtk4 geschrieben zu haben.
    • Das Format von Blueprint gefiel, aber es gab Schwierigkeiten wegen fehlender Dokumentation dazu, wie man fortgeschrittenere Funktionen umsetzt.
    • Die Sprache Vala gefällt sehr, aber man denkt, es wäre gut, die gesamte Logik und die Modelle in Vala zu schreiben und dann für die UI diese Swift-Bibliothek zu verwenden.
  • Vergleich mit früheren Erfahrungen

    • Es fühlt sich ähnlich an wie die Erfahrung, vor etwa 20 Jahren GNOME-Apps mit C# unter Verwendung von Mono geschrieben zu haben.
  • Probleme bei der Ausführung auf dem Mac

    • Es wurde versucht, die App auf dem Mac auszuführen, dabei trat jedoch das Problem auf, dass adwaita.h fehlte.
  • Meinung zum persönlichen „Traum-Framework“

    • Etwas Open-Source-iges, das wie SwiftUI ist und GTK4 als Ziel hat, kommt dem Traum eines Cross-Platform-Desktop-UI-Frameworks nahe.
    • An die Swift-Syntax muss man sich erst gewöhnen, aber sobald man mit allen Konzepten vertraut ist, ist es eine sehr angenehme Sprache.
    • Der einzige Grund, Swift nicht zu verwenden, ist, dass die Unterstützung unter Linux nicht so gut ist wie auf Apple-Plattformen.
  • Frage zur 3D-Unterstützung in gtk4

    • Es wird gefragt, ob man bei 3D in gtk4 weiterhin auf einen OpenGL-Kontext beschränkt ist.
  • Meinung zur Verwendung von Schlüsseln in Funktionsparametern

    • Es wird die Ansicht geäußert, dass die Einführung von Schlüsseln in Funktionsparametern ein Fehler war.
  • Diskussion über das Testen von Swift-Codebasen

    • Es wird darüber diskutiert, wie man eine Swift-Codebasis testet. Es fehlt an Dokumentation zum Testen, und es werden keine Strategien für Mock-Objekte, Stubs, Reporting, Code Coverage usw. bereitgestellt.
    • Bei Apps mit Network Extensions muss wegen Signaturbeschränkungen auf physischen Geräten getestet werden.
    • Es wird gefragt, ob jemand einen guten CI-Service mit physischen Geräten kennt, der sowohl iOS- als auch macOS-Geräte unterstützt.
  • Feststellung, dass Swift eine interessante Option für Desktop-Entwicklung wird

    • Kürzlich wurde entdeckt, dass Swift zu einer interessanten Option für die Desktop-Entwicklung wird. Zusätzlich zu diesem Beispiel wurde Arc für macOS und Windows ergänzt.