News aus der Entwicklung - Dezember 2019

News aus Gajims Entwicklung

News aus der Entwicklung - Dezember 2019

News aus Gajims Entwicklung

Dies ist der dritte Artikel einer Reihe von News über die Entwicklung von Gajim. In diesen Artikeln werde ich (wurstsalat) versuchen, das Geschehen aus einem Monat der Entwicklung an Gajim zusammenzufassen. Gelegentlich wird es in den Artikeln auch um python-nbxmpp und XMPP generell gehen. Der Dezember hat Verbesserungen für HTTP-Übertragungen, Tooltips in der Kontaktliste und einiges mehr gebracht. Tritt gajim@conference.gajim.org bei und diskutiere mit uns!

Änderungen in Gajim

Der Austausch von Gajims altem Dialogsystem (siehe November News) wurde diesen Monat abgeschlossen. Wir sind zwar noch immer dabei, Dialoge zu entfernen wo sie nicht notwendig sind, aber der aktuelle Stand ist bereits ein guter Schritt nach Vorn. Um ein Beispiel für einen nicht notwendigen Dialog zu nennen: Wenn ein Kontakt eine ausstehende Kontaktanfrage bestätigt, erscheint für den Nutzer ein Dialog mit einem einzigen OK-Button, der über das Ereignis benachrichtigen soll und bestätigt werden muss. Stattdessen wird Gajim nun eine einfache Benachrichtigung im Infobereich herausgeben (was weniger störend ist).

Seit einiger Zeit ist es in Gajim möglich, mit dem Cursor in der Kontaktliste über einen Gruppenchat zu fahren, um einen Tooltip mit Basisinformationen zu dem Gruppenchat zu zeigen. Bisher hat der Tooltip auch das Thema des Gruppenchats angezeigt (und hat dabei den Text nicht gekürzt). Wir haben uns dazu entschieden, das Thema des Gruppenchats mit der Beschreibung zu tauschen, falls diese vorhanden ist. Das Thema kann weiterhin auf der Informationsseite des Gruppenchats angezeigt werden. Zusätzlich wurden Grenzen für die Textlänge der angezeigten Informationen festgelegt, was zu einem kompakteren Tooltip führt.

Für einige Aufgaben benötigt Gajim einen Assistenten, um Nutzer effizient durch einen Prozess führen zu können, der mehrere Nutzereingaben benötigt. Gajim verfügt nun über einen solchen Assistenten. Zwei Aufgaben wurden schon in diesem neuen Assistenten implementiert: Passwortwechsel und Kontoentfernung. Wenn Nutzer z.B. ein Konto entfernen möchten, können sie entscheiden, ob sie das Konto lokal oder komplett, also sowohl lokal aus auch auf dem Server löschen wollen. Dies ist ein dynamischer Prozess, bei dem einzelne Schritte fehlschlagen können (z.B. wenn der Server das Entfernen des Kontos nicht unterstützt, wenn die Verbindung beim Versuch abbricht, …) oder weitere Nutzereingaben benötigt werden. Der neue Assistent ermöglicht es Gajim Optionen, Fortschritt, Fehler usw. innerhalb eines einzelnen Fensters anzeigen zu können, ohne zusätzliche Dialoge nutzen zu müssen. Die nächste Aufgabe die implementiert wird ist der Assistent zur Kontoerstellung, für neue Nutzer ein entscheidender Bestandteil von Gajim.

Sowohl für Dateiübertragungen per HTTP File Upload (XEP-0363) als auch für andere HTTP-Downloads und -Uploads verwendet Gajim seit einer Weile python-Threads. Es hat sich herausgestellt, dass dieser Ansatz nicht in allen Fällen funktioniert, was sich gelegentlich in einer eingefrorenen Nutzeroberfläche gezeigt hat. Um asynchrone HTTP-Übertragungen zu ermöglichen nutzt Gajim nun die “libsoup”-Bibliothek. Während der Arbeiten wurde der Code rund um Dateiübertragungen ebenfalls vereinfacht. In Zukunft sollte dieser Wechsel es Nutzern auch möglich machen, Proxies für HTTP-Verbindungen (z.B. Url image preview, Plugin installer) zu nutzen.

Was außerdem passiert ist

  • Fehlerbehebung für das Nachrichteneingabefeld, in dem lange Nachrichten ohne Zeilenumbruch nicht vollständig sichtbar waren (#8980, #9574)
  • Fehlerbehebung für das Chatten ohne Server (#9926)
  • “Chat starten” und “Gruppenchat erstellen” Menüeinträge sind nun deaktiviert, wenn der Nutzer nicht verbunden ist
  • Das Schließen eines Chats mit ungelesenen Nachrichten zeigt nun eine dynamisch angepasste Dialognachricht, je nach Speichereinstellungen des Unterhaltungsverlaufs
  • Verbesserungen bei der Auswahl der Audio-/Video-Quelle in den Einstellungen

In andauernden Anstrengungen durch das Verschärfen von pylint-Regeln die Code-Qualität zu verbessern wurden einige Linting-Warnungen und Fehler behoben.

Plugin-Aktualisierungen

Gajims URL image preview Plugin wurde an die internen Änderungen der HTTP-Übertragungen angepasst. In diesem Zuge wurde das Plugin komplett überarbeitet, was auch #456 und #320 behoben hat. In der Vergangenheit konnte das Plugin geo:-URIs (Links zu Standorten) unter Zuhilfenahme von Google Maps bzw. OpenStreetMap via Map Quest auf einer Karte darstellen. Heute sind beide Dienste entweder rate-limited oder benötigen eine bezahlte Mitgliedschaft, was beide Dienste für das Plugin ausscheiden lässt. Wenn eine geo:-URI empfangen wird, stellt das Vorschau-Plugin nun ein klickbares Kartensymbol dar, das den Webbrowser öffnet. Die meisten Webbrowser unterstützen diese Links und öffnen einen Kartendienst mit den Koordinaten aus dem Standort.

Gajims OMEMO-Plugin wurde an die internen Änderungen für HTTP-Dateiübertragungen angepasst, was unter anderem #467 und #419 behoben hat.

Darüber hinaus wurden zwei Plugins komplett überarbeitet: Clickable Nicknames (#454) und Message Box Size.

Änderungen in python-nbxmpp

Unterstütztung für HTTP File Upload (XEP-0363) wurde in python-nbxmpp implementiert.