Der GNOME Weg

Do, 15. Juli 2021, Ralf Hersel

Tobias Bernard vom GNOME Team hat eine Blog-Serie zum Thema 'Community Power Part' geschrieben. In den ersten drei Teilen (Teil 1, Teil 2, Teil 3) hat er sich angesehen, wie die Aufgabenverteilung innerhalb von GNOME funktioniert und was das für das Erreichen von Zielen bedeutet. Ein Fazit war, dass man ein vertrauenswürdiges Mitglied der Gemeinschaft werden muss, was ein Verständnis des Ethos des Projekts erfordert, um Dinge zu erreichen.

Im vierten Teil geht Bernard auf dieses Ethos ein, sowohl in Bezug auf die übergeordneten Werte als auch darauf, was diese in praktischer Hinsicht bedeuten. Die Details könnt ihr in der Quelle nachlesen. Ich hebe hier nur die wesentlichen Punkte hervor.

Aussagen, die mir besonders interessant erschienen, habe ich fett hervorgehoben.

Warum

Als grundlegende Motivationen bestimmt Bernard diese Punkte:

  • Wir glauben an Software-Freiheit als ein inklusives, verantwortliches Modell für die Produktion von Technologie in der Allmende.
  • Unsere Software wird so entwickelt, dass sie von jedem genutzt werden kann. Wir legen grossen Wert auf Benutzerfreundlichkeit, Zugänglichkeit, Internationalisierung und Unterstützung für eine Vielzahl von Hardware.
  • Software sollte strukturell und ästhetisch elegant sein, sowohl in Bezug auf die zugrunde liegende Technologie als auch auf die Benutzeroberfläche.

Was

Welche Dinge erstrebenswert sind, und was man vermeiden sollte:

  • Anwendungen von Drittanbietern sind die beste Abstraktion, um das Kernsystem um zusätzliche Funktionen zu erweitern. Aus diesem Grund haben wir viel Arbeit in die Unterstützung von Entwicklern von Drittanbieter-Apps gesteckt, um mehr und bessere Apps zu entwickeln.
  • Jede Voreinstellung hat Kosten, und diese Kosten steigen exponentiell, wenn man mehr davon hinzufügt. Aus diesem Grund vermeiden wir Voreinstellungen so weit wie möglich und konzentrieren uns stattdessen auf die Behebung der zugrunde liegenden Probleme.
  • In ähnlicher Weise gibt es eine direkte Beziehung zwischen dem Grad der vertikalen Integration eines Produkts und dem Grad der Kohäsion, den man erreichen kann. Jede unnötige Variable, die man im gesamten Stack eliminiert, setzt Zeit und Energie frei und schafft Möglichkeiten für Funktionen, die man sonst nicht entwickeln könnte.
  • Die Aufmerksamkeit der Menschen ist kostbar. Wir sind stolz darauf, frei von Ablenkungen zu sein.

Wie

Nützliche Faustregeln, um Dinge zu entwickeln:

  • Wir machen keine Hacks. Anstatt ein Problem auf der falschen Abstraktionsebene zu umgehen, glauben wir daran, das Problem an der Wurzel zu packen und für alle zu beheben, auch wenn das bedeutet, in tiefere Schichten vorzudringen.
  • Wir sehen Design ganzheitlich und nicht als eine isolierte Sache, die das Designteam macht. Es geht nicht nur um Funktionalität und Ästhetik, sondern auch um die zugrunde liegende Technologie und darum, was überhaupt gebaut werden soll. Selbst wenn du nicht im Designteam mitarbeitest, wird die Entwicklung einer Affinität für Design dich zu einem effektiveren Mitwirkenden machen.
  • Es ist wichtig, sich relevante Kunst anzuschauen, aber einfach die Konkurrenz zu kopieren, führt in der Regel nicht zu grossartigen Ergebnissen. Wir haben eine stolze Geschichte der Erfindung neuer Paradigmen, die besser sind als der Status Quo.
  • Als allgemeine Regel gilt: Gehe von der gewünschten Benutzererfahrung aus und machen dich dann daran, die dafür notwendige Technologie zu entwickeln, nicht andersherum. Wie auch immer: Dies ist keine Entschuldigung für schlechte Technik oder das Verfolgen von Ideen, die konzeptionell unmöglich sind (z. B. Multiprotokoll-Chat-Clients).
  • Verlass dich auf den Experten. Jeder hat unterschiedliche Fachgebiete, wie z.B. Benutzererfahrung, Sicherheit, Zugänglichkeit, Leistung oder Lokalisierung. Höre auf die Leute, die am meisten Erfahrung in einem bestimmten Bereich haben.
  • Beim Design geht es immer um Kompromisse. Sei vorsichtig mit harten und schnellen Regeln, die nur einen Teil eines Problems betrachten (z. B. "Vertikaler Platz ist knapp, also..."), und versuche stattdessen, verschiedene Belange so auszubalancieren, dass es insgesamt gut funktioniert.

Praxis

Einige der oben genannten Prinzipien sind recht abstrakt, was bedeuten sie also für die tägliche Arbeit bei der Erstellung von Software? Hier sind einige Beispiele, wie sie auf reale Fragen angewendet werden:

  • App-Entwickler sollten ihr eigenes Packaging machen. Das ist der einzige Weg, es nachhaltig und in grossem Umfang zu tun.
  • Flatpak ist die Zukunft der App-Distribution.
  • Der "traditionelle Desktop" ist tot, und er wird nicht wiederkommen. Anstatt zu versuchen, alte Konzepte wie Menüleisten oder Statussymbole zurückzubringen, erfindet etwas Besseres aus den ersten Prinzipien.
  • Systemweites Theming ist eine kaputte Idee. Wenn Sie nicht mögen, wie Anwendungen aussehen, tragen Sie direkt zu ihnen bei (oder zum Stil der Plattform).
  • Shell-Erweiterungen werden immer eine Nischensache sein. Wenn du einen wirklichen Einfluss haben möchtest, ist deine Zeit besser investiert, wenn du an Anwendungen oder der GNOME-Shell selbst arbeitest.
  • "Den verfügbaren Platz zu füllen" ist selten ein gutes Ziel an sich und ein einfacher Weg, sich selbst in eine Ecke zu stellen.

Quelle: https://blogs.gnome.org/tbernard/2021/07/13/community-power-4/