Archiv für die Kategorie „ubuntuusers“

Ist Phoronix eine verlässliche Quelle?

Dienstag, 9. März 2010

Sowohl Heise als auch pro-Linux berichten heute über einen Ressourcen Test verschiedener Desktopumgebungen auf Phoronix. Während pro-Linux Teile des Tests anzweifelt, stellt Heise den Test überhaupt nicht in Frage und fragt nur ob KDE ein Ressourcenfresser ist. Diese Frage kann der Test nicht beantworten.

Bevor man mich hier gleich mit Kommentaren bombardiert: ja ich bin davon überzeugt, dass der KDE Workspace mehr Speicher verbraucht als andere Desktopumgebungen. Ich denke dass das auch OK ist und den Anforderungen gerecht wird.

Lese ich den Test so stelle ich mir einige Fragen:

  • Wie oft wurden die Tests wiederholt? Nach dem Artikel sieht es so aus, als ob jeder Test nur einmal durchgeführt wurde
  • Warum wurde eine Testversion einer Distribution verwendet?
  • Warum wurde nur eine Distribution verwendet?
  • Warum wurde nur ein System getestet?
  • Warum hat man nicht für jede Desktopumgebung ein eigene Installation aufgesetzt?

Jede Frage einzeln betrachtet, stellt die Testergebnisse komplett in Frage. Aber gerade die letzte Frage sollte doch einiges aufzeigen. Liest man den Test so hat man ein Ubuntu verwendet und kubuntu-desktop nachinstalliert. Nun ist Ubuntu + kubuntu-desktop nicht das gleiche wie Kubuntu. In dieser Situation wird zuerst GDM geladen (und somit große Teile von GNOME) und anschließend der KDE Desktop. Hier stellt sich nun die Frage, ob GDM nach dem Anmelden beendet wird. Wenn nicht, dann sind die Messergebnisse komplett verfälscht. Kennt man sich ein bißchen mit dem Speichermanagement aus, so weiß man, dass der Kernel selbst wenn GDM beendet wird, den Speicher nicht unbedingt freigibt. Leerer Speicher ist unnützer Speicher. Wie auch immer das mit GDM aussieht, ist es ziemlich egal, denn die Test-Suite scheint in GTK+ geschrieben zu sein. Man sieht also: traue keiner Statistik, die du nicht selbst gefälscht hast.

Noch amüsanter ist die Betrachtung des Stromverbrauchs. Der Artikel erwähnt nicht, dass mit einem externen Tool getestet wird, sondern es klingt eher danach, dass mit Software gemessen wird. Auch wird nicht erwähnt ob das Netzkabel angeschlossen ist oder nicht. Hier sei erwähnt, dass KDE zum Beispiel bei Batterienutzung die Indizierung der Dateien ausschaltet. Was natürlich gleich zum nächsten Punkt führt: Nepomuk. KDE liefert eine komplette Desktopsuche mit, welche bei mir nach dem Start anspringt. Kein Wunder also, dass nach dem Start der Ressourcenverbrauch höher ist als bei anderen Systemen.

Auch ist die Wahl der Distribution sehr merkwürdig. Die Ubuntu GNOME Variante als GNOME zu bezeichnen, grenzt schon an Frechheit. Meines Wissens nach verwendet Ubuntu z.B. Compiz anstatt Metacity, Notify-OSD anstatt GNOME Benachrichtigungen, Ubuntu GTK Theme anstatt Clearlooks. Ähnlich schlimm ist es die Ubuntu+KDE Variante als KDE zu bezeichnen. Von Kubuntu ist ja bekannt, dass die Python Hintergrundprogramme ärger bereiten. Diese sind in Kubuntu zum Glück am Abnehmen, aber das System ist ja ein Ubuntu+KDE, also müsste man davon ausgehen, dass die von Ubuntu im Autostart hängenden Anwendungen (z.B. Apport) auch in KDE ihr Unwesen treiben und Speicher verschwenden.

Ich könnte jetzt eigentlich hier noch viel mehr aufzählen, jedoch denke ich, dass es reicht um zu zeigen, dass der Test nicht seriös ist. Von Phoronix bin ich hier eigentlich nicht enttäuscht – dass die Tests nichts aussagen ist eigentlich bekannt. Wovon ich enttäuscht bin, ist die schlechte Recherche unserer sogenannten Redakteure bei Heise. Selbst wenn sie den Test nicht selbst durchgeführt haben, hätten die systematischen Testfehler auffallen müssen und ein kurzer Blick in das Phoronix Forum hätte gezeigt, dass viele begründet die Testergebnisse anzweifeln. Ich möchte hier einfach nur mal an Ziffer 2 des Pressekodex erinnern: Sorgfalt

Recherche ist unverzichtbares Instrument journalistischer Sorgfalt. Zur Veröffentlichung bestimmter Informationen in Wort, Bild und Grafik sind mit der nach den Umständen gebotenen Sorgfalt auf ihren Wahrheitsgehalt zu prüfen und wahrheitsgetreu wiederzugeben. Ihr Sinn darf durch Bearbeitung, Überschrift oder Bildbeschriftung weder entstellt noch verfälscht werden. Unbestätigte Meldungen, Gerüchte und Vermutungen sind als solche erkennbar zu machen.

=-=-=-=-=
Powered by Blogilo

Die Welt der Fensterdekorationen

Sonntag, 7. März 2010

Eine der wichtigsten Aufgaben eines Fenstermanagers ist die Darstellung der Dekorationen. Die Dekoration erlaubt das Minimieren und Schließen des Fensters, zeigt wichtige Informationen wie Icon und Titel an und ist der „Container“ für ein eingerolltes (shade) Fenster. Je nachdem was der Fenstermanager unterstützt, kann die Fensterdeko auch Schalflächen für (vertikales/horizontales) Maximieren/Wiederherstellen, Fenster auf alle Desktops, Über/Unter anderen Fenstern halten anbieten. Jeder Fenstermanager, der NetWM unterstützt, sollte diese Aktionen bereitstellen.

Eigentlich müsste die Fensterdekoration nicht vom Fenstermanager bereitgestellt werden, das könnte auch die Anwendung machen, hat aber einige Nachteile. Die Aufgabe eines Fenstermanagers ist es Fenster zu managen. Er macht in der Regel nicht mehr und nicht weniger. Er ist ein absoluter Spezialist auf seinem Gebiet. Die Anwendung ist aber kein Spezialist im Bereich Fenstermanagement. Das bedeutet, dass Fehler, die in einem Fenstermanager schon längst behoben wurden, in einer Anwendung leicht reprdoduziert werden. Einfaches Beispiel: KWin hat vor dem Verschieben eines Fensters eine Verzögerung um Versehentliches Verschieben zu verhindern. Eine Anwendung würde das sehr leicht vergessen. So haben wir in KWin aktuell bei Quick Maximization ein „Problem“ weil Google Chrome einen Klick auf die Fensterdeko als Start von Verschieben interpretiert und somit wird das maximierte Fenster wiederhergestellt.

Die Fensterdekoration vom Fenstermanager bereitstellen zu lassen bietet uns auch andere Vorteile. So ist das Aussehen und Verhalten einheitlich. Hier auch mal ein Beispiel: In Ubuntu Lucid werden die Schaltflächen einheitlich links sein, Anwendungen, die selbst die Dekoration zeichnen, wie Google Chrome, haben es aber an ihrer eigenen Position – nämlich rechts. Das ist für den Nutzer sehr unschön. Möglichkeiten wie Window Tabbing wird natürlich auch erst möglich wenn der Fenstermanager das übernimmt und bereiten auch ernsthafte Probleme, wenn eine Anwendung meint eigene Dekorationen zu verwenden.

Ein ganz wichtiger Punkt ist auch die Barrierefreiheit. Der Fenstermanager kann global anbieten, dass alle Fensterdekorationen vergrößerte Elemente anbieten. KWin hat dafür z.B. global eine konfigurierbare Randgröße, unsere Standarddeko bietet zusätzlich noch konfigurierbare Größen der Schaltflächen an. Eine Idee, die ich für Aurorae übernehmen will. Würden Anwendungen die Fensterdekorationen selber zeichnen, müsste man entweder in jeder Anwendung oder für jedes Toolkit (GTK/Qt/$anderestoolkit) dies manuell einstellen und darauf hoffen, dass die Anwendung es unterstützt. Der Fenstermanager kann hier weiterhelfen auch wenn der Anwendungsentwickler nicht daran dachte.

Wir sehen also, dass Fensterdekorationen in den Aufgabenbereich des Fenstermanagers und nicht in die Anwendung gehören. Leider gibt es aktuell eine Tendenz aus der Browserwelt, dass Anwendungen selber zeichnen. Chrome hat damit angefangen und Firefox will es vielleicht auch übernehmen. Ich kann nur hoffen, dass die Erkenntniss einsetzt, dass es eine schlechte Idee ist. Die Idee kommt hauptsächlich aus der Windowswelt, wo viele Firmen Fensterdekos als Bestandteil ihres Brandings ansehen. Leider dient hier Microsoft als sehr schlechtes Vorbild. Hier ist Mac OS ein bedeutend schöneres Vorbild, da es die Fensterdeko erzwingt.

Aber in einem anderen Punkt kann Mac OS nicht als Vorbild dienen bei Fensterdekorationen: der Konfigurierbarkeit. Die Fenstermanager bieten einen unterschiedlichen Grad an Möglichkeiten die Fensterdekorationen anzupassen. Hier gehe ich jetzt selbst gar nicht weiter darauf ein, sondern verweise auf den Metacity Blog, der eine gute Zusammenfassung hat.

Leider hat sich die freie Softwaregemeinschaft noch nicht durchringen können einen gemeinsamen Standard für Fensterdekorationen zu schaffen. Hier köchelt jeder noch sein eigenes Süppchen und als Autor einer der Themeformate bin ich da selbst nicht ganz unschuldig ;-) Aber wieso kam ich auf die Idee ein neues Format zu erstellen? Ich hab mir natürlich die verschiedenen bestehenden Formate angeschaut. Am liebsten hätte ich die Metacity Themes unterstützt, jedoch ist das ein äußerst komplexes XML Themeformat und hat dabei nicht in meine Anforderungen gepasst (ich wollte eine Theme Engine, die es Designern ermöglicht leicht Themes zu erstellen). Das Human Theme von Ubuntu ist eine 33 KB große XML Datei mit 760 Zeilen und ist damit nur minimal kleiner als der komplette Quellcode der Aurorae Theme Engine.

Ein anderer guter Kandidat für eine einheitliche Theme Engine wäre Emerald gewesen. Emerald wurde aber faktisch von den Compiz Entwicklern aufgegeben und wird wohl nicht mehr Bestandteil der nächsten Compiz Version. Damit ist leider Emerald eigentlich schon ausgeschieden, es gab aber auch noch andere Punkte die dagegensprachen, wie die hohe Anzahl verschiedener Engines.

KWin selbst kann auch nicht mit einem Standard für Dekos ankommen. KWin hat eine C++ Programmierschnittstelle, was im Prinzip alles andere überbietet. Es gibt dem Entwickler der Fensterdekoration einen unglaublichen Gestaltungsspielraum. So konnten wir Window Tabbing zum Bestandteil der einzelnen Fensterdekorationen machen. Jedoch ist die Schnittstelle auch zum großen Teil KWin spezifisch und auf das Qt/KDE Programmiermodell zurechtgeschnitten und somit für z.B. Metacity nicht verwendbar. Compiz hat die Schnittstelle nachprogrammiert und es bereitet immer wieder Probleme, wenn wir Veränderungen vornehmen.

Eine Programmierschnittstelle ist auch nicht wirklich eine gute Lösung. Programmierer haben meistens keine Ahnung von Design und Designer keine Ahnung vom Programmieren. Nur wenige Designer halten es aus mit den Programmierern zusammen eine Deko zu erarbeiten. Daher ist der Anteil der Dekorationen für KWin auch eher gering. Würde ich versuchen eine Dekoration zu erstellen, würde ein katastrophales Ergebnis dabei herauskommen.

Die Lösung ist eine Theme Engine. Auf Basis der KWin Schnittstelle wurden mehrere Engines erstellt. Zum Beispiel QtCurve, deKorator und Aurorae. Keines der Formate eignet sich als einheitlicher Standard. Ich möchte es mal am Beispiel Aurorae aufzeigen, da ich mich da am Besten auskenne. Aurorae wurde geschrieben um die neuen Möglichkeiten in KDE SC 4.3 voll auszuschöpfen. Das Format ist daher sehr spezifisch zum Verhalten von KWin: Schatten sind Bestandteil der Dekoration. Im Unterschied zu z.B. Oxygen ist es nicht möglich und nicht erwünscht diese zu deaktivieren. Jeder andere Fenstermanager müsste also unser Verhalten nachimplementieren um Aurorae Themes korrekt anzuzeigen.

Die Metacity Entwickler entwickeln gerade auch ein neues Theme Format, welches auf CSS basiert. Ob Cowbell ein Kandidat für ein einheitliches Format wird, wage ich auch zu bezweifeln. Es wird zwar so entwickelt, dass andere Fenstermanager darauf aufbauen können und zumindest KWin könnte über die Schnittstelle eine Theme Engine erstellen, aber ich vermisse bisher noch einige Möglichkeiten und bin mir nicht sicher ob CSS eine angemessene Sprache zum Erstellen von Fensterdekos ist. Auch KWin spezifische Erweiterungen wie Window Tabs könnten schwer umsetzbar werden in einer Theme Engine, die für einen Fenstermanager entwickelt wurde, die keine Tabs unterstützt.

In diesem Blogpost wollte ich aufzeigen warum es die Aufgabe des Fenstermanagers ist Fensterdekos zu malen und warum es leider noch keinen einheitlichen Dekorationsstandard gibt und warum es nicht danach aussieht, dass es demnächst dazu kommen könnte, obwohl im letzten Jahr beide großen Fenstermanager (KWin und Metacity) angefangen haben ein neues Theme Format zu entwickeln.

=-=-=-=-=
Powered by Blogilo

Ubuntus neue Fensterdekoration

Donnerstag, 4. März 2010

[Update]Es hat sich herausgestellt, dass die Screenshots auf denen meine Kritik aufbaute, nicht die endgültige Fassung darstellte. Die Kritik in diesem Post ist damit überholt. Dennoch vielleicht ein lesenswerter Post zur Anordnung von Fensterdekorationsschaltflächen.[/Update]

Gestern wurde das neue Design für Ubuntu Lucid Lynx angekündigt. Ich hab einen Blick darauf geworfen und sofort die Hände über dem Kopf zusammengeschlagen, weil es einen schwerwiegenden Fehler enthält. Onli hat den eigentlich schon gut auf den Punkt gebracht.

Jedoch schreibt Onli, dass er die Kritik zurückzieht, wenn sich herausstellen sollte, dass Canonical Benutzertests gemacht hat. Das würde ich nicht, da ich leider aus Erfahrung sprechen kann. Die Tatsache, dass die Kontrollen von rechts nach links verschoben wurden, sehe ich gar nicht als so schwerwiegend an. In KWin erlauben wir den Dekorationen die Positionen selbst zu bestimmen und sehen es als Bestandteil des Designs an und spiegeln die Position zum Beispiel in einer RTL Umgebung nicht. An die neue Position gewöhnt man sich vermute ich recht schnell.

Das Problem ist die Position des Schließen Knopfs. Dieser ist in der Benutzung eines Fensters eigentlich der wichtigste und gravierendste. Die Maximieren Schaltfläche braucht man nicht so häufig und es gibt auch andere Möglichkeiten wie den Doppelklick auf die Fensterdeko um ein Fenster zu maximieren/wiederherzustellen. Gleiches gilt für die minimier Schaltfläche, die durch Klick auf den Eintrag in der Fensterleiste ersetzt werden kann.

Die Schließen Schaltfläche ist schwerwiegender. Ihre Aktion ist im Gegensatz zu allen anderen nicht umkehrbar. Ein geschlossenes Fenster kann idR nicht wiederhergestellt werden. Bei KWin ist daher in der Standarddekoration die Schließen Schaltfläche durch zwei explizite Spacer von den anderen Schaltflächen getrennt. Auch bei Aurorae hab ich mich für diesen großen Abstand entschieden. Es wurde übrigens auch schon darüber diskutiert die Schließen Schaltfläche komplett aus der Gruppe zu entfernen und auf die andere Seite zu platzieren. Leider sind solche Diskussionen ähm meistens suboptimal.

Andererseits scheint die Schließen Schaltfläche auch die zu sein, die die Nutzer am schnellsten erreichen wollen. Ich kann hier leider keine statistische Auswertung vorlegen und nur aus meiner Erfahrung sprechen. Wenn ein Fenster maximiert wird, so werden in Oxygen sämtliche Abstände zwischen den Schaltflächen und dem Bildschirmrand entfernt. Um ein Fenster zu Schließen muss man also nur mit der Maus in die rechte obere Ecke des Bildschirms klicken. Aurorae unterstützt aktuell dies noch nicht und es ist der häufigst gemeldete Bug, dass im maximierten Zustand Aurorae nicht Fitts’s Law respektiert. Jedes mal wenn mir das gemeldet wurde, ging es ausschließlich um den Schließen Knopf.

Nun was hat das mit der Ubuntu Fensterdeko zu tun? Die Schaltflächen wurden nach Links verschoben in der Anordnung: Minimieren, Maximieren, Schließen. Dies erinnert an Apple, dort ist jedoch die Schließen Schaltfläche ganz links. Was bedeutet das nun für den Nutzer? Das was man bei Aurorae am Stärksten kritisiert ist schlicht nicht möglich. Jedes mal wenn der Nutzer ein Fenster schließen will, muss er mit der Maus direkt auf die Schaltfläche fahren. Auch ist kein Sicherheitsabstand eingehalten was die Gefahr gibt, dass man die Schaltfläche aus Versehen auslöst.

So weit ich weiß erlaubt Metacity es dem User nicht die Positionen der Schaltflächen zu verändern (KWin erlaubt dies). Ubuntu will also eine LTS Version mit einem komplett geänderten Anordnung der Schaltflächen ausliefern. Eine Anordnung wie sie so in keiner größeren Umgebung genutzt wird (Windows, GNOME, XFCE und KDE setzen die Schließen Schaltfläche ganz nach rechts, Apple nach links). Es ist ja gut, dass am Design gespielt wird, jedoch sollte Design immer der Nutzbarkeit untergeordnet werden. Ich hoffe für Ubuntu, dass der Fehler erkannt und behoben wird, ansonsten fürchte ich werden die Supporter auf Ubuntuusers viel Arbeit haben. Ich bin bei solchen Aktionen immer wieder überrascht wie spät im Release Zyklus solch eine gravierende Änderung noch eingebaut wird.

=-=-=-=-=
Powered by Blogilo

KDE Software Compilation 4.4 aka “Caikaku” veröffentlicht

Dienstag, 9. Februar 2010

Das Release Team hat gerade KDE SC 4.4 freigegeben und die Neuerungen des letzten halben Jahrs stehen nun allen Nutzern zur Verfügung. Ich selbst nutze die 4.4.0 seit Samstag Abend (durch die heutigen Änderungen in letzter Minute muss ich noch einmal neu bauen) und den 4.4 Entwicklungzweig schon seit einigen Wochen. Ich kann nur sagen, dass es ein richtig tolles Release ist und ich bin stolz, dass ich bei solch einer tollen Community mitarbeiten darf.

4.4 hat so viele umwerfende Neuerungen, dass ich hier gar nicht alles aufzählen kann. Daher schaut in die Release Note und den Visual Guide. Schaut euch die tollen Videos an, die ein paar der Neuerungen aufzeigen.

Meine persönlichen Highlights sind natürlich Aurorae und Alt+Tab. Aber auch andere Bereiche sind für mich eine echte Verbesserung, wie Blogilo, in dem ich gerade diesen Blogpost schreibe, oder die automatische Rechtschreibkorrektur in jeder auf Kate aufbauenden Anwendung – ein Segen, wenn man gerade eine Thesis schreibt. Aber auch Akonadi, der technischen Grundlage der Implementierung der Thesis, und nicht zu vergessen Nepomuk, mit dem ich endlich die gespeicherte Literatur durch Stichworte finden kann ;-)

Und nun heißt es nach vorne schauen. Keine Zeit sich auf dem Zenit auszuruhen, sondern weiterarbeiten. In einem halben Jahr steht KDE SC 4.5 vor der Tür und wir wollen ja wieder ein tolles Release schaffen. Dafür steht in zwei Wochen Tokamak IV an – der nächste Plasma Entwickler Sprint auf den ich mich schon richtig freue (auch wenn ich eigentlich keine Zeit dafür habe). Wenn ich alleine auf meine TODO Liste schaue mit den Ideen für Integration zwischen KWin und Plasma, so wird 4.5 sicherlich auch wieder ein toller Nachfolger für 4.4 :-D

Und nicht vergessen den Buzz zu 4.4 zu verfolgen ;-)

=-=-=-=-=
Powered by Blogilo

Neues KDE Fensterdekorationen Einrichtungsmodul

Dienstag, 19. Januar 2010

Es gibt wenige Bestandteile in KDE’s Desktop Shell, die sich seit langer Zeit nicht verändert haben. So erinnere ich mich, dass die erste KDE Version, die ich nutzte (das war ein 3.x mit x << 5), das gleiche Einrichtungsmodul für Fensterdekorationen verwendete wie aktuell in der KDE Software Compilation 4.4. Die Benutzeroberfläche besteht aus einem Auswahlfeld mit den Namen der verfügbaren Dekorationen, einem Konfigurationsabschnitt für die ausgewählte Dekoration und einer Vorschau. Dies führt zu so wunderbaren Oberflächen mit Unterfenstern in Unterfenstern – werft einfach mal einen Blick auf die Oxygen Konfiguration in 4.4.

Mit KDE SC 4.5 wird es ein neues Konfigurationsmodul geben, das man auch als Qt 4 Portierung bezeichnen könnte. Das Auswahlfeld wird durch eine Liste ersetzt welche eine Vorschau für jede Dekoration enthält. Der Konfigurationsabschnitt ist in ein Dialogfenster verschoben welches man durch eine Konfigurationsschaltfläche neben der Vorschau erreicht.

Neues Dekorationen KCM

Da ich der Meinung bin, dass man ehren sollte wem Ehre gebührt, wurde eine Informationsschaltfläche zum Anzeigen der Autorinformationen hinzugefügt. Hier müssen die Entwickler und Künstler noch die Informationen nachtragen – aktuell fehlen sie noch.

Aurorae Designs sind in der Liste wie „normale“ Dekorationen aufgeführt. Die Tatsache, dass Aurorae eine Theme Engine ist, ist eigentlich für den Nutzer ein unbedeutendes Implementierungsdetail und sollte verborgen sein. Und damit erhält KWin endlich Unterstützung für Get Hot New Stuff bei Fensterdekorationen (für die Nicht-KDE-Nutzer: GHNS bietet die Möglichkeit Themes und ähnliches direkt von kde-look.org herunterzuladen und zu installieren oder mit anderen Worten „die beste Erfindung für Moddingkinder seit Reis in Beuteln“) – und das ist einfach umwerfend. Ich hoffe, dass wir deKorator Themes in der gleichen Art und Weise integrieren können.

Leider habe ich das nicht mehr für KDE SC 4.4 fertigstellen können und wird erst in 4.5 integriert sein, also z.B. in Kubuntu 10.10 enthalten sein. (Ja Vorfreude auf neue Versionen ist immer wichtig)

=-=-=-=-=
Powered by Blogilo

Wie man Entwicklern bei Bugs helfen kann

Mittwoch, 13. Januar 2010

Gestern hab ich ja darüber geschrieben wie der Weg von Bug zu Fix ist. Nun hab ich einen wichtigen Punkt vergessen: Du, ja genau Du, kannst den Entwicklern dabei nämlich helfen. Du brauchst dazu nicht mal programmieren zu können.

Ich hatte ja erwähnt, dass etwa 40 % aller Bugs die für KWin gemeldet werden, bereits gemeldet sind. D.h. ich gehe hin suche den korrekten und markiere ihn als Duplicate. Ein Beispiel aus der Beta 1: KWin crashed after a Konqueror crash Uns ist kurz vor Beta 1 eine Regression in den Code gekommen und wie man an meinem Commit (erster Kommentar) sieht, war es eine Trivialität. Dieser Crash hat uns durch die ganze Beta 1 verfolgt und er hat entsprechend viele Duplicates. Aber alle Duplicate Markierungen sind von Entwicklern gesetzt und das muss eigentlich nicht sein. Das könnten die Nutzer übernehmen. In so einem Fall ist es wirklich einfach: der Backtrace ist immer gleich und DrKonqui hängt die möglichen Duplikate sogar an (einfach auf einen der Duplikate klicken).

Ein anderer Fall sind normale Bugs – auch hier kann uns jeder Nutzer eigentlich helfen. Wenn ein Bug aufgemacht wird, steht er zuerst auf "UNCONFIRMED". Hier könnte nun ein Nutzer eigentlich schauen ob das überhaupt stimmt. Ist die Beschreibung korrekt, lässt sich der Bug reproduzieren, etc. Also den Bug soweit aufbereiten, dass der Entwickler damit etwas anfangen kann. Typischer Fall eines Bugs: KWin is slow – please improve. Toll hilft nichts. Hier müsste nachgefragt werden, welche Hardware er benutzt, welche Anwendungen, ob Compositing aktiviert ist, etc. Für mich als Entwickler ist so eine allgemeine Beschreibung natürlich wertlos und in der Zeit die ich nachfrage, könnte ich Entwicklungsarbeit leisten.

Und selbst bei Crashes kann der Nutzer sehr einfach mithelfen. Viele Crashes werden ohne die Debug Pakete installiert zu haben gepostet. Da können wir dann gar nichts machen. Hier gibt es die Möglichkeit nachzufragen oder wenn ein Weg angegeben ist, wie man KWin crashen lassen kann, einfach reproduzieren und einen guten Crash anhängen.

Dennoch muss ich nachfragen um meine Bugliste sauber zu halten. KWin hat aktuell etwa 360 offene Bugs. Wenn ich die Liste durchgehe und manuell Duplicates suche dann bekomme ich idR in einer Stunde 10 Bugs weg. Nicht gerade viel. Viele Bugs haben einen Kommentar wie "Is this still an issue in KDE SC 4.3.3?" und danach ein halbes Jahr keine Antwort mehr. In so einem Fall kann der Bug zugemacht werden – scheint niemanden zu interessieren und war entweder nie ein Bug oder ist behoben. Auch das ist etwas was Nutzer übernehmen können.

Wenn ein Bug überprüft ist, dann kann er von "UNCONFIRMED" auf "NEW" geändert werden. Dies könnte von den Entwicklern nun genutzt werden um zuverlässig nach Bugs zu suchen. Die unnützen Bugs erscheinen gar nicht und der Entwickler kann sich einen Bug schnappen und ihn beheben ohne großen Verwaltungsaufwand. Ja das wäre die ideale Welt :-)

Nun muss man natürlich nicht alleine als Nutzer plötzlich anfangen hier die Bugs zu durchforsten, sondern es gibt den KDE Bug Squad, der genau das macht. Regelmäßig veranstaltet die Gruppe Bug Days und aktuell gibt es auf forum.kde.org Bug Weeks. Der Bug Squad braucht übrigens immer Nachwuchs da viele Bug Jäger plötzlich abtrifften in die Entwicklung. So wurde die Überarbeitung von DrKonqui von einem Bug Squad Mitglied durchgeführt – Dario hatte einfach gesehen was nötig ist. Das Team beißt nicht und hilft immer weiter und Entwickler sind wirklich dankbar für die Arbeit. Also nichts wie los nach #kde-bugs.

Ach und natürlich braucht nicht nur KDE Nutzer, die bei Bugs helfen, sondern jedes Projekt.

=-=-=-=-=
Powered by Blogilo

Vom Bug zum Fix

Dienstag, 12. Januar 2010

Angesichts der aktuellen Vorbereitung auf das Release der KDE Software Compilation in Version 4.4 hab ich gedacht ich beschreibe mal die Schritte, die ich gehen muss um einen gemeldeten Bug in KWin zu beheben. Denke das könnte ganz interessant sein, vor allem wenn man nicht so vertraut mit der Entwicklung ist ;-)

Am Anfang steht der Bugreport. Im IRC channel #kwin gibt es einen kleinen bot, der neue Bug reports meldet. Da ich auch ein highlight auf das Wort "kwin" habe und dieses zufälligerweise in jeder Bug Meldung enthalten ist, erhalte ich eine schöne Benachrichtigung. Im Channel ist dann auch gleich die URL zum draufklicken enthalten. Wenn ich nicht am Rechner sitze, dann bekomme ich neue Bugs trotzdem mit: alle Bugzilla Mails werden auch an die kwin Mailingliste gesendet und zusätzlich hab ich in Akregator einen RSS feeds für neue Bugs (eigentlich überflüssig).

Ein Bug fällt in eine von drei Kategorien:

  • Wishlist
  • Bug
  • Crash

Wishlist ist ein Wunsch und so etwas wird idR erst einmal ignoriert. Gerade in der Zeit, in der man sich auf das Beheben von Bugs konzentriert, dürfen neue Wünsche eh nicht implementiert werden. Viele der Wünsche sind auch einfach nun ja Traumkonzert und lassen sich zwischen schwer bis gar nicht umsetzen.

Ein Bug ist ein Fehlvehalten der Anwendung. Im Falle von KWin beziehen sich die Meisten auf irgendwelche Probleme mit den Desktop Effekten. Viele der Meldungen sind sehr ungenau und nur unter bestimmten Fällen zu reproduzieren. Für einen Bug gilt eigentlich, dass er nicht besonders priorisiert ist. Außer es ist wirklich ein gravierender Bug.

Crash ist nun eine Sonderform eines Bugs: die Anwendung hat einen Nullpointer dereferenziert und ist abgestürzt. Bei KWin nicht so schlimm, da es sich automatisch neustartet, aber trotzdem unangenehm. Zum Glück sind mittlerweile die Anzahl der Crashes zurückgegangen, so dass im Normalfall keiner auftritt.

Bei allen drei Arten gilt, dass wir zuerst überprüfen müssen, ob der Bug schon existiert. In etwa 40 % der Fälle ist das so. Bei Crashreports ist das am Einfachsten: DrKonqui findet die automatisch und hängt die Nummer des Duplikats gleich dran. Leider reporten die User häufig trotzdem. In so einem Fall ist der Bug schnell weg: Nummer rein, und abschicken. Ansonsten wird die Suchmaschine im Hirn eingeschaltet und überlegt, ob man so einen Crash nicht schon mal gelesen hatte und wenn ja dann wird geschickt über die Suche von Bugzilla den passenden gefunden.

Natürlich ist es hilfreich den Bug reproduzieren zu können. Leider ist das nicht immer möglich, weil ganz bestimmte Bedingungen vorliegen müssen. Hatte aktuell so einen Fall, dass es nur crashed, wenn man Present Windows als Alt+Tab Effekt verwendet, während er aktiviert ist die Anzahl der Fenster auf 0 geht und man dann im richtigen Augenblick mit der Maus klickt. In dem Fall war dann zum Glück der Quellcode eindeutig und konnte sehr leicht auch ohne Reproduzierung behoben werden ;-)

Die Crash Reports enthalten einen automatisch generierten Stacktrace, der Aufschluss darüber gibt an welcher Stelle im Code der Crash auftrat. Dabei werden die Code Zeilen sogar genannt und manchmal sogar die Werte übergebener Variablen. Für die Datenschutzfanatiker: nein daraus lassen sich keine privaten Daten rückverfolgen. Im Falle von KWin ist das maximal, dass man erfährt auf welchen Desktop der User gerade wechselte. Komplizierte Daten werden als Zeiger auf eine Datenstruktur übergeben – aus der Adresse kann man nichts rauslesen außer, dass sie vllt. 0 war. Ist der Bug gegen KDE SC 4.3 reportet worden so stimmen sehr häufig die Zeilennummern nicht mehr. Hier ist es dann hilfreich, wenn man den Crash selbst reproduzieren kann, weil man dann die passenden Zeilennummern erhält.

Mit der Zeilennummer bewaffnet, geht es dann in die Entwicklungsumgebung und man schaut sich den Quellcode an. In den meisten Fällen macht es schlicht und ergreifend "Aha" und der Crash ist offensichtlich. Nun die berechtigte Frage: Warum trat er dann auf? Nehmen wir das Beispiel von oben mit Present Windows: es wurde nicht daran gedacht, dass es vorkommen kann, dass man mit der Maus klickt, wenn kein Fenster da ist. Der Code ist ja gedacht ein Fenster auszuwählen. Ja eine falsche Annahme. Über den Stacktrace und den übergebenen Werten ist dann erkennbar welcher Zeiger auf 0 zeigt und man kann den Code anpassen, so dass dieser Fall entweder nicht mehr auftritt oder abgefangen wird.

Der nächste Schritt ist das neubauen von KWin (zum Glück direkt aus der IDE) und testen ob der Crash behoben ist. Wenn dem so ist, dann kann der veränderte Code in das Quellcodeverwaltungssystem eingespielt werden. KDE verwendet eigentlich SVN, was aber für mich eher unpraktisch ist, deswegen nutze ich selbst git und habe einen über git-svn verwalteten Checkout von kwin. Zuerst überprüfe ich die veränderten Code Zeilen mittels git diff – das zeigt mir in der Konsole an, was sich genau verändert hat. Eine wichtige Überprüfung um nicht irgendwelchen Müll durch das Testen (debug Ausgaben u.ä.) ausversehen einzuspielen. Auch eine gute Überprüfung ob der Coding Style eingehalten wurde. Der nächste Schritt ist die Änderung mittels git add und/oder git commit (-a) als lokalen Commit einzuspielen. Hierbei gibt man eine aussagekräftige Commit Message ein und trägt mittels BUG: NUMMER den Bug ein, welcher dadurch behoben wird. Nun muss der Code mittels git svn dcommit in das KDE SVN übertragen werden. Dabei wird dank dem BUG Schlüsselwort der zugehörige Bugreport automatisch geschlossen und ein Kommentar eingefügt.

Die Änderung wurde nun aber nur in trunk eingespielt – dem Hauptentwicklungszweig und das was in mehr als einem halben Jahr mal KDE SC 4.5 werden soll. Natürlich möchte ich den Bug auch in 4.4 behoben haben und dazu muss der Patch in den branch zurückportiert werden. Würde ich nicht git verwenden, wäre das richtig einfach, denn es gibt ein Skript dafür. Würde KDE git verwenden wäre es noch einfacher. Für mich bedeutet es manuelle Arbeit. Also mittels git show den letzten Commit in eine temporäre Datei speichern und in mein Verzeichnis wechseln, in dem der 4.4 Code rumliegt. Hier kann ich mit patch -i die Änderungen lokal einspielen. Bei 4.4 geht das noch ohne irgendwelches meckern, da es im Prinzip noch der identische Code ist. Nun müsste ich eigentlich die Änderung einspielen, hab aber mein Konsolen SVN Wissen dank git verlernt und nutze nun Dolphins SVN Integration. Dolphin öffnen, an die passende Stelle navigieren, über das Kontextmenü noch mal den Diff anzeigen lassen (lieber einmal zu viel kontrolliert, als einmal zu wenig) und die Datei committen. Als Commit Message wird die gleiche Meldung wie zuvor in git verwendet, jedoch mit dem Zusatz "Backport rev SVN-Nummer" und CCBUG anstatt BUG. Dadurch wird einfach nur eine Meldung an den Bug angehängt. Und da wir ja fleißig sind, machen wir das ganze für 4.3 auch noch mal sofern der Code passt.

So wie lange dauert so etwas? Beispiel von gestern abend: Um 20:54 Uhr hat mir ein User im IRC einen Crash gemeldet, er klang komisch und ich hab sofort ausprobiert und ihn reproduzieren können. Kdevelop war bereits mit der passenden Datei geöffnet (ist eigentlich immer offen) und ich konnte direkt an die Quellcodezeile springen. Um 21:06 konnte ich dem User melden, dass der Crash in trunk und branch behoben ist. Für den Backport in einen Branch brauche ich etwa 2 min – insgesamt alse 4 (IRC Log von CIA Bot). Zum Reproduzieren, Crashen und Testen, dass es wirklich behoben ist also gerade mal vier bis fünf Minuten. Ja der war wirklich einfach ;-) Heute saß ich an einem, bei dem ich nach etwa einer Stunde erst mal aufgehört habe, weil ich ihn nicht beheben konnte. Wird aber definitiv in 4.4 (notfalls über Würgaround) behoben sein.

=-=-=-=-=
Powered by Blogilo

Wechsel auf KDE SC 4.4

Freitag, 18. Dezember 2009

Einige werden es ja wissen, dass ich aktuell an meiner Masterthesis arbeite und dafür Akonadi aus der KDE Plattform in Version 4.4 einsetze. Es ist für meine Aufgabenstellung die perfekte Lösung. Nun nutze ich viele der Neuerungen in KDE SC 4.4 – nicht nur von Akonadi, sondern auch die neu Lösung des Systemabschnitts (Status Notifiers).

Nun hatte ich das Problem, dass ich das ganze schlecht testen konnte. Da die Status Notifier in KDE SC 4.3 nur experimentell waren und die API sich geändert hat, konnte meine 4.4 Anwendung nicht mit dem 4.3 Workspace „sprechen“ und die Funktionalität war nicht vorhanden. Meine Lösung für das Problem ist eigentlich ein zweiter X Server in dem eine reine 4.4 Sitzung läuft. Unglücklicherweise meint mein System aktuell sich aufzuhängen, wenn ich zwischen X Sessions wechsel. So auch heute als ich wieder testen wollte.

Da ich mittlerweile soweit bin, dass ich über den Einsatz im Produktivsystem nachdenke (d.h. ich vertraue meiner Implementierung so weit, dass ich sie auf meine E-Mails loslassen werde und keine Angst mehr vor Datenverlust habe) brauche ich eine 4.4 Sitzung. Also nach dem freeze bedingten Neustart hat es mir gereicht und anstatt in die 4.3 Sitzung hab ich zum ersten Mal mein Produktivsystem in das selbstkompilierte 4.4 gestartet.

Bisher hatte ich 4.4 immer nur zum Testen eingesetzt und das ist ja nicht wirklich vergleichbar. Nun sehe ich also zum ersten Mal im produktiven Einsatz die Früchte der Arbeit des letzten halben Jahres. Und ich bin wirklich begeistert. Das System fühlt sich bedeutend flüssiger an, die leichten Animationen fallen nicht störend auf, sondern machen das System angenehmer. Auch meine eigenen Implementierungen machen sich sehr gut: Alt+Tab ist eine tolle Verbesserung im Vergleich zu vorher und auch Aurorae gefällt mir gerade sehr gut – mittlerweile gibt es ja einige nette Themes. Von den anfänglichen Performance Problemen merke ich auch nichts mehr. Generell ist das Vergrößern der Fenster bedeutend angenehmer geworden.

Insgesamt fühlt sich 4.4 schon sehr rund an. Die Veränderungen sind größtenteils gering aber sehr nützlich. Hier sei bespielhaft die Verbesserungen von KRunner erwähnt: das Interface erscheint nun von KWin animiert an der oberen Bildschirmkante, die Einstellungen sind direkt in das Interface integriert und es gibt bedeutend mehr und sinnvolle Runner (auch einen von mir ;-) ).

Mit der jetzt von mir eingesetzten Version, die in etwa der Beta 2 entspricht, bin ich sehr zuversichtlich, dass 4.4 ein tolles und rundes Release wird. Wenn man mal überlegt wo die Community vor zwei Jahren stand… Nun haben wir die Säulen mit Nepomuk und Akonadi endlich integriert und der KDE Plasma Desktop ist einfach nur umwerfend. Ich war ja schon von 4.0 begeistert (vom technischen Standpunkt aus gesehen), aber dass sich das Produkt so hervorragend entwickelt, hätte ich dann doch nicht für möglich gehalten. Wer jetzt noch KDE 3.5 will, ist selber Schuld ;-)

=-=-=-=-=
Powered by Blogilo

Der Schäfer verliert seine Schafe

Montag, 14. Dezember 2009

Die aktuelle Diskussion in der GNOME Community, ob GNOME aus GNU aussteigen soll, finde ich interessant und möchte hier meine Gedanken dazu äußern. In diesem Post wird die FSF und RMS kritisiert werden. Diese Kritik betrifft aber nicht den europäischen Ableger FSFE.

Zuerst einmal die Frage: „Was würde sich durch den Austritt ändern?“ Eigentlich nichts. GNOME als GPL lizensierte Software bleibt natürlich freie Software. Auch dürfte weder die GNOME noch die GNU Community dadurch Schaden nehmen. Beide sind groß genug um sich alleine tragen zu können und GNOME scheint sowieso nicht sehr in GNU integriert zu sein. Das einzige was passieren könnte, ist dass es schlechte Presse gibt. Hier kann man nur hoffen, dass die Communities es schaffen einen Rosenkrieg zu vermeiden.

Persönlich bin ich von der Entwicklung nicht überrascht – auch nicht, dass auf die versuchte Einmischung von Stallman mit der Diskussion über den Austritt aus GNU diskutiert wird. Für mich ist das nun die Zuspitzung einer sich seit langem abzeichnenden Entwicklung. Man denke nur an Stallmans Mono-Bashing oder die Rede auf dem Desktop Summit (die nun wohl noch in den Köpfen derjenigen rumschwirrt, die am Ende entscheiden). Stallman versucht sich in die Belange der GNOME Community einzumischen, ja sogar Forderungen zu stellen und diese mit der GNU Zugehörigkeit zu begründen. Dass dann in der Community der Gedanke aufkommen könnte die ungewollte Einmischung los zu werden, ist nachvollziehbar.

Über die Frage, ob proprietäre Anwendungen auf planet GNOME erwähnt werden dürfen, lässt sich natürlich diskutieren. Persönlich stören mich z.B. die vielen Mono Posting auch – besonders wenn es um irgendwelche Anwendungen auf proprietären Systemen geht. Aber betrachtet man sich die Zielsetzung des Planets, so sind diese Beiträge klar erlaubt. Gerade die Posts zu VMWare (der Stein des Anstoßes) halte ich sogar für recht wichtig, da es zeigt, dass bei VMWare Leute aus der Community arbeiten, Leute, die die Firma von innen heraus öffnen können. Verbietet man ihnen über ihre Arbeit zu bloggen, zerstört man am Ende vielleicht den kleinen Pfad, um VMWare zur Open Source Community zu führen.

Nun hatte ich ja im Juli das Glück eine Rede von RMS zu hören und seine Argumentation zu sehen. Für ihn gibt es schwarz und weiß, gut und böse. Freie Software gut, nicht freie (einschließlich OpenSource, d.h. z.B. BSD) böse. Gerade beim Beispiel Mono konnte man das recht gut sehen. Die Möglichkeit, dass sich Microsoft der OpenSource Welt hin öffnet, wird nicht gesehen. Microsoft ist böse, daher darf man nichts verwenden was von Microsoft kommt (sinngemäßes Zitat). Für die meisten Open Source Entwickler ist diese Argumentation natürlich nicht haltbar. Vor 20 Jahren konnte man freie Software mit dem Argument der Freiheit vermarkten. RMS hatte damals seine Jünger und eine Rede der Art hat perfekt gepasst. Heute sieht das anders aus. Freie Software muss nicht mehr die Freiheit hervorheben um sich gegen die Wettbewerber durchzusetzen, sondern kann nun auch die bessere Qualität als Argument liefern. Ich habe für mich selbst anlässlich der aktuellen Diskussion reflektiert, ob ich freie Software schreibe, weil sie frei ist oder weil es das beste Mittel zum Ziel ist. Letzteres ist der Fall. Ich möchte gute Software schreiben, die von vielen Menschen benutzt wird. Dass sie frei ist, ist toll, aber es ist nicht die Motivation die mich antreibt. Heißt auch, dass ich zum Beispiel kein Problem damit hätte an das LGPL lizensierte Qt Code beizusteuern oder an BSD lizensierte Projekte.

RMS hat seine Schafe verloren. War er früher der Hüter einer kleinen Gemeinde, die alle mit ihm übereinstimmen, so ist heute die Gemeinde viel größer. Sie läuft immer noch in die gleiche Richtung, aber braucht eigentlich keinen Schäfer mehr, der auf sie aufpasst und sie auf dem rechten Pfad führt. Versucht der Schäfer als Heiliger der Kirche von Emacs durch den Free Software Song seine Schafe zu sammeln, so wenden sie sich nur noch beschämt ab. Der Schäfer scheint aber noch nicht gemerkt zu haben, dass seine Herde gewachsen ist und ihn nicht mehr als Schäfer braucht und sich nicht mehr von ihm zurechtweisen lassen will. Natürlich ist es wichtig, dass es den Schäfer gibt, der auch mal auf Gefahren wie die Monoschlucht hinweist, aber er muss es so machen, dass seine neuen Schafe ihn verstehen. (viele der heutigen Entwickler lebten noch nicht einmal als das GNU Projekt gegründet wurde)

Die Verdienste von RMS sind natürlich wichtig. Aber in die heutige Zeit passt seine schwarz-weiß Argumentation nicht mehr. Die Entwickler können und wollen so eine Zielsetzung nicht akzeptieren, da sie tagtäglich zum Beispiel auch mit Open Source ihr Geld verdienen. Dass RMS und somit auch die FSF nicht mehr die Entwickler vertritt, merkt man an so vielen Kleinigkeite wie dem GNU/Linux Streit, Mono oder jetzt dem Planet. Ich hoffe, dass die FSF sich langsam aber sicher in gemäßigtere Wasser begiebt, so dass sich nicht die Entwickler von ihr abwenden und das wichtige Ziel des freien Software Gedanken auf der Strecke liegen bleibt. Ich denke die FSFE ist da ein gutes Vorbild.

=-=-=-=-=
Powered by Blogilo

Fensterdekoration hinter transparenten Fenstern

Donnerstag, 26. November 2009

Gestern kurz vor dem harten Feature Freeze für KDE SC 4.4 hat KWin noch ein tolles neues Feature erhalten: die Fensterdekoration kann hinter transparenten Fenstern gezeichnet werden. Seht selbst:

Aktuell wird dies in Aurorae, der einzigen transparenten Deko, unterstützt, aber noch von keiner Anwendung. Da dies aber als Erweiterung des Standards vorgeschlagen ist, dürfte es in Zukunft Anwendungen geben, die dies nutzen. So hab ich mal gelesen, dass Mozilla für Firefox ein solches Feature nutzen möchte. Dies ist nun die Lösung auf der X11 Plattform.

=-=-=-=-=
Powered by Blogilo