Fredo's Blog

Humanities, Social Sciences and Free Software

Subscribe to RSS feed

Zeit für die Kontaktlinse: Von der Idee zum Projekt mit unity-lens-contacts

, , , ...

In Ubuntus (nicht mehr ganz so) neuem Unity-Desktop steht die Suche im Mittelpunkt: Anstatt sich durch verschachtelte Menüs zu wühlen, sollen Inhalte jetzt über eine zentrale Suchmöglichkeit gefunden werden können. Und um verschiedenen Arten von Gefunden-werden-Wollendem abzudecken, bietet Unity die Möglichkeit, spezialisierte Plugins zu schreiben, die sogenannten Lenses. Jeder Unity-Nutzer kennt die Linsen für Anwendungen, Dateien und (neuerdings) Musik, aber die Idee ist, auch neue Funktionen auf diese Weise zu ergänzen.

Das Interface ist zwar neu, die Idee ist es nicht unbedingt: Vor einigen Jahren trat das Deskbar-Applet an, um eine zentrale Anlaufstelle für die Desktop-Suche zu werden, mit Plugins für Tracker (als Dateisuche), Anwendungen (als Programmstarter) und vieles anderes. Auch wenn die Deskbar nicht ohne Probleme war, die Idee leuchtete mir gleich ein. Eine Funktion fehlte mir aber, nämlich die Suche in meinem Adressbuch und die schnelle Anzeige von Kontaktinformationen, ohne dass ich immer gleich Evolution aufrufen muss. Problem erkannt, Problem gebannt, so wurde mein Deskbook-Plugin geboren, das ich bis heute gerne benutze.

Andere sind jetzt auf die einleuchtende Idee gekommen, diese Funktion jetzt in die Unity-Dash einzubauen. So findet sich ein entsprechender Eintrag auf Ubuntu Brainstorm. Auch OMG! Ubuntu! hat schon einmal einen frühen Prototyp vorgestellt. Die Idee ist bis zum Ubuntu Technical Board vorgedrungen und wurde einem Review unterzogen. Zwar wird das Kern-Team in absehbarer Zeit keine solche Lens erstellen, aber Allison Randal gibt ein paar Hinweise, wie ein leidlich erfahrener Python- oder Vala-Programmierer ein solches Unterfangen beginnen könnte.

Mir gefällt die Idee, und anderen offenbar auch. Pablo Saavedra hat (aufbauend auf der Music Lens) schon mal ersten Code geschrieben. Aber um vom ersten Proof-of-Concept zu einer billant geschliffenen Kontakt-Linse zu kommen, ist noch einiges zu tun. Um für Interessierte eine Anlaufstelle zu bieten, habe ich einmal ein Projekt auf Launchpad erstellt und ein Team gegründet.

Ich denke, dass eine solche Lens eine überschaubare Aufgabe ist, und ein guter Einstieg in die Entwicklung für Unity. Alle, die die Idee einer Kontaktsuche in der Dash überzeugen kann, und die Lust haben, sich in ein solches Projekt einzubringen, sind herzlich eingeladen, dem Team beizutreten und auf der Team-Mailingliste über die nächsten Schritte zu diskutieren. Noch ist nicht einmal die Wahl der Programmiersprache (Python oder Vala) endgültig gefallen, ihr habt also die großartige Gelegenheit, das Projekt von Anfang an mitzugestalten.

Es würde mich freuen, den einen oder die andere Interessierte im Team begrüßen zu können.

Auf einen Blick: Informationspolitik auf dem Desktop

, , , ...

Microsoft hat einen ersten Blick auf Windows 8 veröffentlicht. Falls man bisher meinte, Unity oder GNOME 3 würden mit bisherigen Desktop-Gewohnheiten brechen, zeigt die Windows-8-Preview, dass es noch drastischer geht. Der Windows-8-Desktop hat viel mehr mit Windows Phone 7 als mit einem bisherigen Windows-System zu tun. Und das System ist gleichermaßen auf Touch- wie auf Maus- oder Tastaturbedienung ausgelegt.



Besonders interessant finde ich die Idee der Kacheln, die gleichzeitig Programmstarter darstellen und live Informationen aus den Programmen anzeigen. Ganz allein ist Microsoft aber nicht mit der Idee: Opera bringt in der nächsten Version Speeddial-Extensions. Damit dienen die Schnellwahl-Kacheln nicht nur als Bookmarks mit Vorschau auf die Seite, sondern können selbst Informationen komprimiert auf einen Blick zeigen. Beispiele können das Wetter (das irgendwie immer als Beispiel herhalten muss), die neuesten Fotos oder Artikelüberschriften sein.

Die Idee ist nicht ganz neu: Verschiedene Desktops haben verschiedene Ansätze ausprobiert, Informationen schnell zugänglich zu machen. MacOS X hat einen Widget-Layer. Verschiedene Widget-Engines für verschiedene Betriebssysteme (wie etwa Yahoo! Widgets, Screenlets und andere) bringen die Widgets direkt auf den Desktop, und Windows Vista hat die Widgets in eine Sidebar gepackt. Der klassische GNOME-2-Desktop hatte Panel-Applets, die weniger Raum bieten, dafür aber immer sichtbar sind.

GNOME hat sich bislang, abgesehen von den sehr eingeschränkten Panel-Applets, keines dieser Konzepte zu eigen gemacht. Und mich überzeugt das klassische Widget-Konzept auch noch nicht restlos: letztlich sind die Widgets wieder eigenständige Programme, die alle ihr eigenes Look-and-Feel mitbringen. Und der Desktop ist nunmal in der Regel von laufenden Programmen verdeckt. Compiz bietet zwar auch einen Mac-OS-X-artigen Widget-Layer, den man mit Screenlets bestücken kann, aber auch das Konzept ist nicht wirklich in den Desktop integriert.

Unity hat einen anderen Ansatz gewählt, mit denen Programme laufend Informationen anzeigen können: Neben den bekannten, wenn auch variierten Mechanismen von temporären Benachrichtigungen (über libnotify) und Indicator-Icons (via libappindicator) können sich Programme (via libunity) auch in ihren Programm-Starter einklinken und dort aktuelle Informationen anzeigen. Die Möglichkeiten halten sich mit einem Zähler (etwa für ungelesene Nachrichten) und einem Fortschrittsbalken (etwa für laufende Downloads) allerdings eher in Grenzen. (Daneben sind noch Quicklists und ein Urgency-Hint implementiert, die aber nicht im engeren Sinne zur Darstellung von Informationen dienen.) Dafür haben alle Anwendungen eine einheitliche API, mit der sie sich in den Desktop einklinken können.

Ich persönlich finde den Ansatz von Windows 8 und Opera, Starter/Bookmarks als „Fenster“ in die Anwendung/Website zu sehen und dort schon die wichtigsten Informationen anzuzeigen, sehr interessant. Und mir fehlt auch eine gute Lösung dafür unter Ubuntu. Das Wetter ist mir dabei eher unwichtig, aber eine gute Übersicht über die nächsten Termine würde mir schon sehr weiterhelfen. (Die Integration in die Panel-Uhr ist zwar auch hübsch, aber eben gerade nicht sehr sichtbar.) Mir würde auch schon ein Ort einfallen, wo Unity den Anwendungen Raum für solche Informationen bieten könnte: Das Unity-Dash.



Die dort derzeit angelegten Icons sind ohnehin weitgehend redundant (die wichtigsten Anwendungen sowie die Lenses für Anwendungen und Dateien findet man auch im Launcher), und dort ist auch hinreichend Platz.

Das ist natürlich nur eine kleine Idee, und vermutlich hat man beim Ayatana-Projekt schon andere Pläne. Aber ich würde mich freuen, wenn auch der Ubuntu-Desktop eine schöne Lösung finden würde, Anwendungsinformationen auf einen Blick anzuzeigen. Windows 8 und Opera haben auf jeden Fall schon mal etwas vorgelegt.

Goodbye GNOME 2, hello Xfce?

, , , ...

Gerade las ich die Nachricht, dass Ubuntu Studio bald auf Xfce statt Unity oder GNOME3 setzt. Für mich ist das eine interessante, aber auch nicht sehr überraschende Entwicklung. Und es passt für mich auf eine gewisse Weise zu der Meldung, dass Lubuntu nun ein offizielles Ubuntu-Derivat wird. Damit ergibt sich nach meinem Dafürhalten so langsam ein interessantes Bild.

Die Zukunft des GNOME-Desktop liegt bei GNOME 3 Shell und Unity. Es ist mittlerweile klar, dass Ubuntu 11.10 ohne den klassischen GNOME-(2-)Desktop kommen wird. Es gab an der einen oder anderen Stelle Aufregung darüber, aber für mich ist das nur konsequent: GNOME 2 wird nicht ewig gewartet werden, und Upstream setzt man auf GNOME 3 mit der Shell. Für wichtiger halte ich, dass die GNOME Shell in 11.10 wieder aus den Ubuntu-Quellen installierbar sein wird, und danach sieht es derzeit aus. Dass Ubuntu auf eigene Faust einen veralteten Desktop weiterentwickelt, scheint mir nicht gerade naheliegend.

Was machen aber die Anwender, die sich mit den neuen Konzepten von GNOME 3 Shell und Unity nicht anfreunden können? Nicht einmal „dann suche ich mir eben eine andere Distribution“ ist in dieser Situation eine dauerhafte Lösung, denn keine Distribution wird, soweit ich sehe, GNOME 2 auf eigene Faust weiter pflegen. Vielleicht ist liegt die Zukunft des klassischen GNOME-Desktop-Feelings aber ja in Xfce.

Mit LXDE/Lubuntu hat so langsam ein neuer Desktop den Platz als leichtgewichtiges System für schwache/alte Rechner eingenommen, auf dem lange Xfce/Xubuntu zu Hause war. Xfce ist immer komfortabler, aber damit auf gewisse Weise auch fetter geworden. Ich hatte schon länger den Eindruck, dass Xfce das Unterscheidungsmerkmal zu GNOME verloren geht. Was sich im Vergleich zu LXDE als Nachteil darstellte, könnte aber auch ein Vorteil sein: Nun, wo sich der GNOME-Desktop mit Shell und Unity nach oben absetzt, ist auf dem Platz von GNOME 2 auf einmal eine Lücke entstanden, die Xfce hervorragend füllen könnte. Die Entscheidung von Ubuntu Studio scheint genau das zu bestätigen.

Opera als Netbook-Browser

, ,

Eigentlich nutze ich überall Opera als Webbrowser. Auf meinem Netbook habe ich aber bislang Chromium eingesetzt. Der Browser ist sehr schlank, die Oberfläche sparsam, so dass man viel Platz für die eigentlichen Inhalte hat – und der Browser gilt als sehr schnell. Gerade auf einem Netbook mit begrenztem Platz und begrenzten Ressourcen vorteilhafte Eigenschaften.

Irgendwie bin ich aber mit Chromium doch nicht warm geworden. Das Design spricht mich persönlich irgendwie nicht an, aber vor allem hat mich ausgerechnet die Geschwindigkeit gestört: Während Chromium in Benchmarks seine Geschwindigkeit voll ausspielt, hat mich vor allem die Wartesekunde beim Aufruf jeder Seite gestört. Das Surfen fühlte sich einfach träge an.

Also doch wieder zurück zu Opera. Aber im Vergleich zu Chromium fällt dann doch auf, dass Opera vergleichsweise verschwenderisch mit dem Platz umgeht. Aber mit ein paar Tricks und Kniffen kann man Opera zu einem recht gediegenen Netbook-Browser machen. Kernzutat: Erweiterungen, die Opera seit Version 11 unterstützt. War man früher bei Opera der Meinung, dass Extensions nur Defizite des Kernbrowsers kompensieren, hat man in Oslo seine Meinung jüngst offenbar geändert. Ich halte das Argument zwar immer noch für zutreffend, aber immerhin kann man mit Extensions einige Änderungen im Browser ausprobieren, ohne dass sie gleich im Kern implementiert werden.

Erster Schritt: Statusleiste weg. Chromium hat es vorgemacht, Firefox ist nachgezogen, Opera kann man es (zumindest rudimentär) beibringen. Die Popup-Statusbar zeigt ein kleines Overlay mit der Zieladresse in der linken unteren Ecke, wenn man mit dem Mauszeiger über einem Link ist. Da Opera-Erweiterungen selbst keine Einstellungen des Kern-Browsers ändern können, ist man selbst dafür verantwortlich, die alte Statusleiste in Rente zu schicken. Das geht über Erscheinungsbild (Umschalt+F12) → Symbolleisten → Statusleiste deaktivieren.

Aber man kann noch einen Schritt weiter gehen. Um auch horizontal noch etwas Platz zu gewinnen, kann man auch die Scrollbalken ersetzen. Da ich ohnehin immer über die Scrollleiste am Touchpad (oder die Leertaste) scrolle, kann ich auch gut darauf verzichten. Über Einstellungen → Erweitert → Browser → Bildlaufleisten zeigen deaktivieren kann man die Platzfresserchen loswerden. Um trotzdem noch einen visuellen Eindruck von der Position auf der Seite zu bekommen, bietet sich die Erweiterung Slim ScrollBar an. Das Ganze erinnert etwas an die Ideen hinter Ubuntus Overlay Scrollbars.

Unter Ubuntu kriegt man mit dem Ambiance-Theme auch noch optisch den richtigen Dreh. So fügt sich Opera schön in das Unity-Netbook-Design ein:



Und noch als Tipp zum Schluss: Opera nutzt bisher noch nicht GNOMEs neuen Mechanismus zur Registrierung in den „Bevorzugten Anwendungen“. Wer Opera unter Ubuntu 11.04 „Natty Narwhal“ zum Standardbrowser machen will, muss also noch etwas tricksen. Diese zwei Schritte führen zum Ziel:

  1. Die Datei /usr/share/applications/opera-browser.desktop bearbeiten und dem Eintrag „MimeType” folgendes hinzufügen: „;x-scheme-handler/http;x-scheme-handler/https“.
  2. Folgenden Befehl ausführen: „sudo update-desktop-database /usr/share/applications“


Nun taucht Opera auch im Einstellungsdialog zu den „Bevorzugten Anwendungen“ auf.

Wer will Rollen spielen?

, , , ...

Früher habe ich gerne ab und zu mal Pen&Paper-Rollenspiele gespielt, und auch PC-Rollenspiele wie Neverwinter Nights oder Drakensang machen mir durchaus gelegentlich Spaß. Während Neverwinter Nights wenigstens noch als Linux-Version herausgegeben wurde (der Nachfolger aber leider schon nicht mehr), habe ich ansonsten leider kaum halbwegs grafisch ansprechende Rollenspiele für Linux gefunden – von OpenSource-Projekten ganz zu schweigen. Mit dem vorläufigen Aus von Rastullahs Lockenpracht ist wohl leider auch ein weiterer viel versprechender Kandidat ausgeschieden.

Bliebe noch die Online-Variante, die sogenannten MMORPGs. Bisher eigentlich ein Genre, das mich nicht so richtig gereizt hat – meine Zeit ist mir dann doch zu schade, um meinen Tagesablauf auf die Zeitplanung von Gildenpartnern abzustimmen. Und auch die latente Suchtwirkung dieser Spiele hat mich bisher immer zurückgehalten. Nicht zuletzt spiele ich dann doch nicht so viel, dass ich Lust hätte, auch noch monatliche Abo-Gebühren zu zahlen.

Aus dem Augenwinkel habe ich dabei schon länger PlaneShift beobachtet. PlaneShift ist ein quelloffenes Online-Rollenspiel, das sich derzeit zwar noch in der Entwicklung befindet, aber durchaus schon spielbar ist. Und irgendwann war dann doch die Neugier groß genug, so dass ich mir PlaneShift einmal näher angesehen habe. Hier also ein kleiner Erfahrungsbericht aus Yliakum. (Kleine Bemerkung vorweg: Da ich, wie erwähnt, bisher überhaupt keine Online-Rollenspiele kannte, kann ich auch nicht sagen, was PlaneShift von anderen MMORPGs unterscheidet. Dazu möge sich jeder ein eigenes Bild machen.)

Installation und erster Start

Um dem Spiel beitreten zu können, muss man zunächst einen Account anlegen. Das geht über die PlaneShift-Seite. Bei der Registrierung hat man die Wahl zwischen zwei Spiele-Servern: Zeroping, auf dem besonders viel Wert auf stilechtes Rollenspiel gelegt wird, und Ezpc, wo Rollenspiel weniger im Vordergrund steht. Das Rollenspiel ist einer der spannenderen Aspekte von PlaneShift, also habe ich mich für Zeroping entschieden.

PlaneShift ist für Windows, Mac OS X und Linux erhältlich. Den immerhin 430 MB großen Installer kann man einfach über BitTorrent oder einen der Mirror-Server herunterladen. Die Installation verläuft dann mit dem heruntergeladenen Installer recht problemlos. Ich habe mich der Einfachheit halber für eine Installation im Home-Verzeichnis entschieden. Wenn man den Installer aber nicht als Root laufen lässt, kann kein Starter im Anwendungsmenü erstellt werden. Mit einem kleinen Kniff kann man das aber leicht beheben: Einfach im Installer angeben, dass ein Starter auf dem Desktop erstellt werden soll. Die Datei Planeshift.desktop kann man dann einfach vom Desktop nach „.local/share/applications/“ verschieben, dann taucht auch der Starter im Menü auf.

Nach der Installation ruft man einen Launcher auf, der dem eigentlichen Spiel vorgeschaltet ist. Dieser weist einen auf neue Updates hin und installiert diese, ermöglicht einige Einstellungen wie etwa zur Auflösung und Grafikqualität, und startet letztlich das Spiel.

Charakter-Erstellung

Nach dem Login auf dem Server kann man sich einen Charakter erstellen. Insgesamt lassen sich bis zu vier Charaktere anlegen. Zur Auswahl stehen zwölf verschiedene Rassen. Insgesamt ist Yliakum, die Welt von Planeshift, in meinen Augen etwas abgefahrener als Herr der Ringe, Das Schwarze Auge, oder ähnliches. So gibt es neben den „klassischen“ Rassen wie Menschen, Elfen und Zwergen auch amphibische Wasserelfen, Katzenmenschen oder geflügelte Echsenmenschen. Leider stehen noch nicht für alle Rassen und Geschlechter die entsprechenden Charaktermodelle zur Verfügung, so dass man auf manche Rassen entweder verzichten muss, oder mit einer nicht ganz passenden Spielfigur durch die Welt zieht.

Nach der Festlegung von Rasse, Geschlecht und Aussehen fängt dann die eigentliche Charaktererstellung an. Das System zeigt den Rollenspiel-Fokus von PlaneShift und hat mir dabei sehr gut gefallen: Anstatt nun eine Beruf auszuwählen und Punkte auf bestimmte Fertigkeitswerte zu verteilen, schafft man seinem Charakter eine Geschichte: Vom Geburtstag, Eltern und Geschwistern über Kindheitsereignisse bis zu Erfahrungen in der Jugend. Am Ende hat man dann einen Charakter mit Stärken und Schwächen. Der Weg, den die Figur dann geht, ist aber völlig offen: Jeder Charakter kann im Laufe des Spiels prinzipiell alle Fähigkeiten und Berufe erlernen, selbst eine magische Ausbildung steht jedem offen.

Dem eigentlichen Spiel ist dann ein Tutorial vorgeschaltet. Dort trifft man einige Lehrmeister, die einen mit verschiedenen Aspekten des Spiels vertraut machen. Hat man dies alles durchlaufen, kann man in die Welt von Yliakum starten.

Unendliche Welten …

… warten in Yliakum nicht auf einen. Aber ein ziemlich großer Mikrokosmos. Derzeit besteht die Welt aus drei Städten und einigen kleineren Orten. Einiges mehr soll im Laufe der Entwicklung folgen. Aber auch so hat man einiges zu tun. Dabei ist man relativ frei, wie man sein Spiel gestaltet. Man kann eigentlich den Online-Charakter weitgehend ignorieren und einfach die Nicht-Spieler-Charaktere (NPCs) abklappern und nach Quests fragen. Die gestalten sich in der Regel eher unblutig und erinnern an das gute, alte Adventure-Prinzip: Man kriegt eine Aufgabe, muss jemanden fragen, der einen wieder zum dritten schickt, dem man dann drei Dinge besorgen muss, und irgendwann hat man die ursprüngliche Aufgabe gelöst.

Man kann aber auch einfach mal in die Kneipe gehen, und dort mit jemandem ein Bier trinken. Und dann taucht man so langsam in die Rollenspiel-Erfahrung ein, die einem Offline-Rollenspiele am Computer eben nicht bieten können. Und dort kann es einem dann etwa passieren, dass man in das Interview mit dem Sieger eines Pferde-, ach nee, Rivnak-Rennens gerät, dass eine Reporterin für die im Spiel herausgegebene Zeitung führt.

Technisches

Das Spiel wird über Tastatur und Maus gesteuert. Dabei können viele Aktionen mit IRC-ähnlichen Commandos ausgeführt werden – einige, seltener gebrauchte, sind auch nur so und nicht über die Maussteuerung erreichbar. Will man etwa an einem Fischteich sein Glück versuchen, nimmt man die Angel in die Hand und schreitet mit /fish zur Tat. Auch für die Kommunikation mit anderen Spielercharakteren sind die Kommandos hilfreich. Neben dem vom IRC bekannten /me passes a beer to Dulrik gibt es auch /greet (was eine entsprechende Geste der Figur einleitet), /wink, /laugh und sogar /kiss.

Die Grafik des Spiels ist ziemlich nett, aber vermutlich eher obere Mittelklasse. (Und, hey, Linux-User sind Nethack gewohnt, da ist 3D ja schon ein Kracher! wink )Die Welt wirkt aber insgesamt ziemlich liebevoll gestaltet. So unterscheiden sich die Städte nach den jeweils hauptsächlich ansässigen Rassen in ihrer Architektur. Insgesamt ist das Spiel sehr spielbar, aber man merkt hin und wieder doch, dass es noch in der Entwicklung ist. So sind etwa einige der Fertigkeiten, über die ein Charakter verfügt, de facto noch nicht benutzbar. Auch kann es hin und wieder vorkommen, dass sich Quests aufgrund von Fehlern nicht beenden lassen. Dafür gibt es aber sehr aktive Gamemaster und einen Bugtracker, in dem solche Probleme besprochen werden können und, je nach Komplexität, auch relativ schnell gefixt werden.

Fazit

PlaneShift ist ein wirklich ansprechendes Online-Rollenspiel, das vor allem durch seinen starken Fokus auf lebendiges Rollenspiel besticht. Zwar ist das Spiel noch in der Entwicklung, aber „gefühlt“ ist man über das Stadium der „Tech-Demo“, als die die Entwickler PlaneShift bezeichnen, hinaus. Und irgendwie ist es ja auch reizvoll, einer ganzen Welt bei der Entstehung und Entwicklung zuzusehen. (Und immerhin haben Linux-Nutzer ja Erfahrung im Erstellen von Bug-Reports. wink )

Hinweiskästen in LaTeX

,

Mit LaTeX verbindet mich seit längerem eine Hassliebe. Ich finde das Layout von LaTeX-Dokumenten sehr ansprechend, und einige Komfortfunktionen von LaTeX sind auch den gängigen Textverarbeitungen deutlich voraus. Aber LaTeX kann auf der anderen Seite ein ganz schönes Biest sein, wenn man eigene Layout- oder Designideen umsetzen will. Wo man in Writer mal eben mit der Maus einen Kasten aufzieht, muss ich bei LaTeX immer stundenlang das Web durchsuchen, texdoc bemühen und Paketmanuals wälzen. Damit die ganze Arbeit nicht umsonst ist, teile ich meine heutigen Erfolge einfach mal.

In einem Informationsdokument sollen zusätzliche Hinweise und Tipps in abgesetzten Kästen präsentiert werden. Um verschiedene Arten von Informationen unterscheiden zu können, und um das ganze visuell etwas aufzupeppen, sollen neben den Kästen kleine Symbolbildchen platziert werden. Nach einiger Suche bin ich auf diesen Post bei mrunix gestoßen, der mich auf die hilfreiche Idee gebracht hat, nicht lange mit verschiedenen Boxen rumzufummeln, sondern einfach alles über eine Tabelle zu lösen.

Nach ein paar Experimenten ist dann dieses ganz hübsche Ergebnis herausgekommen:



Die Icons sind (mal wieder) dem großartigen Tango-Projekt entnommen. Leider kommt poppler nicht ganz mit der Darstellung klar, wenn ich die SVG-Dateien in PDF konvertiere, daher habe ich mich dann doch für PNG entschieden.

Kurz noch etwas zur Implementierung: Wenn ich LaTeX-Code sehe, der über semantische Textauszeichnung hinausgeht, will ich am liebsten einfach nur weglaufen. (Der ganze Kram ist in der Regel noch verwirrender als Perl, finde ich.) Aber wenn man es etwas in seine Bestandteile zerlegt, kann man sich (manchmal) doch ganz gut zurechtfinden. Ich habe für meine Zwecke also folgenden Weg gewählt:

\newlength{\iconwidth}
\setlength{\iconwidth}{1cm}

\definecolor{boxheadcol}{gray}{.6}
\definecolor{boxcol}{gray}{.9}

\newenvironment{displaybox}[2]{%
  \begin{center}
    \setlength\arrayrulewidth{0.75pt}%
    \arrayrulecolor{white}%
    \renewcommand{\arraystretch}{1.3}%
    \begin{tabular}{p{\iconwidth}p{\linewidth-4\tabcolsep-\iconwidth}}
      \multirow{2}{*}{#2}&\cellcolor{boxheadcol}\textbf{\sffamily\color{white}#1} \\%
      \hhline{~-}%
      &\cellcolor{boxcol}%
}{%
      \\
    \end{tabular}
  \end{center}%
}

\newenvironment{Tipp}{%
\begin{displaybox}{Tipp}{\includegraphics[width=\iconwidth]{icon-tipp}}}%
{\end{displaybox}}

\newenvironment{Hinweis}{%
\begin{displaybox}{Hinweis}{\includegraphics[width=\iconwidth]{icon-hinweis}}}%
{\end{displaybox}}


Nach der Definition von ein paar Farben und Größen wird eine allgemeine Basis-Umgebung für die Kästen definiert. Letztlich werden dort auch nur die Tabellen-Parameter arrayrulewidth, arrayrulecolor und arraystretch angepasst und dann eine Tabelle mit entsprechend gefärbten Zellen erzeugt. Für die eigentlichen Kästen („Tipp“ und „Hinweis“) werden dann angepasste Umgebungen definiert, die die Überschrift und das Symbol setzen.

Das komplette Beispiel gibt es auch zum Herunterladen:
tipp.zip
Vielleicht kann ja jemand was damit anfangen.

WM 2010: Fehlentscheidung?

,

Nein, nicht die Schiedsrichterentscheidungen der heutigen Spiele sind gemeint. Sondern die Design-Änderungen bei Ubuntu.

OK, die meisten sind vermutlich froh, dass die ewige Reihe der Blogposts zum neuen Ubuntu-Design langsam mal abgebrochen ist. Warum sollte man das leidige Thema ausgerechnet jetzt wieder aufgreifen? Weil neue Fakten aufgetaucht sind:

Gerade das Erdbraun von Ubuntu hat immer viel Schelte bekommen. Aber wenn man sich einmal den FIFA-Trailer im Fernsehen ansieht, merkt man: Afrika ist in, braun ist in, Ethno-Wirbelbilder sind in. Gerade jetzt hätte Ubuntu mit seinem braunen Design endlich mal punkten können, aber nein, gerade jetzt muss ein kaltes, westlich-modernes, herzloses Lila-Orange eingeführt werden.

Wie schön hätte sich jetzt etwa das Design aus Ubuntu 8.04 Hardy Heron in die allgemeine Afrika- und WM-Euphorie eingefügt. Und hätte nicht auch Ubuntu davon profitieren können? „Das Betriebssystem zur WM in Südafrika – aus Südafrika“. Dann noch eine „Ubuntu World Cup Edition“ mit vorinstalliertem Spieleplaner und Vuvuzela-Filter. Mehr Aufmerksamkeit hätte man für Ubuntu doch kaum bekommen können.

Bald ist die WM vorbei, und damit auch diese einmalige Chance für Ubuntu. Wenn uns das nicht noch Leid tun wird …

[update]Ich befürchte, ich habe mich nicht ganz verständlich machen können: Bazinga![/update]

Die Evolution der PIM-Synchronisierung

, , , ...

Selten waren Darwin und Moses so einträchtig – SyncEvolution und Genesis sind in neuen Versionen erschienen und bringen PIM-Synchronisierung unter GNOME wieder einen Schritt voran.

SyncEvolution ist mittlerweile kein Freizeitprojekt mehr, sondern die offizielle Sync-Lösung von Moblin/MeeGo. Kein Wunder, dass die Entwicklung seit der letzten stabilen Version deutliche Schritte voran gemacht hat. Neu ist eine eigene GUI, aber auch unter der Haube hat sich einiges getan. Wer sich für die Details interessiert, dem sei die offizielle Release-Mitteilung ans Herz gelegt.

Schon zwei Tage vor dem Release von SyncEvolution 1.0 ist die darauf aufbauende Version 0.6 von Genesis, meinem leichtgewichtigen SyncEvolution-Frontend, erschienen. Die neue Version trägt dem geänderten Umfeld Rechnung, in dem Genesis steht: Der SyncEvolution-Kern bietet bessere Möglichkeiten, Frontends anzubinden und mit sync-ui bringt SyncEvolution nun selbst ein mächtiges Konfigurationswerkzeug mit. Aber auch Ubuntu hat mit dem AppIndicator das Benachrichtigungsfeld kräftig umgekrempelt und nebenbei schon wieder ein neues Icon-Thema für Panel-Icons etabliert.

All das hat dazu geführt, Genesis noch einmal (fast) von Grund auf neu zu schreiben. Es ist nur noch der Code aus den bisherigen Versionen übernommen worden, der nach wie vor gebraucht wird. Genesis setzt diesmal auf Quickly auf (über das ich ja schon einmal ausführlicher geschrieben habe). Dies soll vor allem neue Releases einfacher machen, da Quickly sich um den Paketbau und den Upload ins PPA kümmert. Auch für Quickly war dies ein guter Alltagstest, und nebenbei konnten ein paar Bugs identifiziert und behoben werden.

Viel Spaß mit der neuen Version!

Mal schnell was programmieren

, , , ...

Was bisher „Rapid Application Development“ genannt wurde, braucht unter Ubuntu jetzt einen neuen Namen: „Develop Applications Quickly!“

Wenn man mal ehrlich ist: Für viele ist der entscheidende Vorteil von OpenSource Software doch, dass sie kostenlos ist. Natürlich ist die Philosophie dahinter sympathisch, aber wer liest den tatsächlich den Code der Programme, die man benutzt? De facto teilt sich meiner Erfahrung nach die OpenSource-Gemeinschaft in die (wenigen) Programmierer, die wirklich was mit einem Quelltext anfangen können, und die (vielen) Benutzer, die einfach eine Software haben wollen, die funktioniert.

Ich persönlich finde aber das schöne an Linux als Betriebssystem, dass es tatsächlich ein dazwischen gibt: Nicht nur, dass man auf verschiedene Arten zu OpenSource beitragen kann. Auch der Einstieg in die Programmierung selbst ist einfacher, als man vielleicht denkt. Es fängt vielleicht beim einfachen Shell-Skript an, um eine Reihe von Bildern zu verarbeiten, und endet irgendwann bei einem kleinen, aber vollständigen Programm inklusive grafischer Benutzeroberfläche. In der Ubuntu-Community nimmt man so auch zunehmen die Gelegenheitsentwickler in den Blick. Diejenigen, die also nicht hauptberuflich Informatiker oder ähnliches sind und sowieso den ganzen Tag programmieren, sondern die Benutzer, die einfach gerne ab und zu mal ein kleines Programm schreiben, um ein ganz konkretes Problem zu lösen. So wurde im März die „Opportunistic Developers Week“ veranstaltet, die eben jenen Gelegenheitsprogrammierern einen Einblick in die neuen Möglichkeiten der Anwendungsentwicklung unter Ubuntu geben sollte.

In eine ähnliche Richtung geht Quickly, ein neues Framework für schnelle Anwendungsentwicklung. Das Ausgangsproblem ist schnell beschrieben: Programmieren lernen ist das eine. Hat man sich erst einmal durch die Tutorials gewühlt und verstanden, was Datentypen sind, wie man Schleifen und Bedingungen programmiert, sich vielleicht die Grundzüge von Objektorientierung erarbeitet, fangen viele Folgeprobleme erst an: Wie kriege ich jetzt eine grafische Oberfläche für mein erstes Programm? Wie baue ich Internationalisierung ein, damit man das Programm in verschiedene Sprachen übersetzen kann? Wie benutze ich ein Versionskontrollsystem, um meinen Code mit anderen zu teilen? Und wie baue ich Pakete, um anderen die Installation zu erleichtern? Jeder dieser Punkte braucht wieder Einarbeitung, wieder muss man sich durch verschiedene Tutorials wühlen, und für jeden Punkt wendet man wieder fast so viel Zeit auf wie für die eigentliche Programmierung.

Genau hier setzt Quickly an. Quickly stellt einem ein Skelett für die Programmierung bereit, also in etwa den Teil, den man ansonsten ohnehin per Copy und Paste aus diversen Tutorials übernommen hätte: Eine Basisstruktur für die Dateien in einem Projekt, die Anbindung an einen GUI-Designer, Code für die Internationalisierung und den Paketbau. Aber Quickly macht auch mehr: Quickly trifft gewisse Vorentscheidungen. Was routinierte Entwickler vielleicht als Bevormundung empfinden, ist für Einsteiger oftmals eine Hilfe: Sich nicht über zig Alternativen informieren, auswählen, Entscheidungen treffen, die man kaum einschätzen kann. Quickly macht hier gewisse Vorgaben: Python als Programmiersprache, Glade/GTKBuilder für die Oberflächengestaltung, bzr als Versionsverwaltung, Launchpad als Code-Hosting-Plattform. (All das lässt sich über sogenannte Templates festlegen. Es spricht also nichts dagegen, ein Template für KDE-Programme zu schreiben, das auf git/GitHub setzt. Es hat nur noch niemand getan.)

Von der Benutzung greift Quickly vieles auf, was Web-Frameworks bieten: Wer etwa Django kennt, und dessen Kommandozeilenhelfer django-admin, dem wird quickly bekannt vorkommen. Aber auch so versteht man das Prinzip schnell.

$ quickly create ubuntu-application myapp

erzeugt ein neues Projekt myapp auf der Basis der Vorlage ubuntu-application (derzeit stehen daneben noch ubuntu-cli und ubuntu-pygame zur Verfügung). Dabei wird ein Grundgerüst angelegt, bestehend aus GTKBuilder- und Python-Dateien für ein Programmfenster, einen Einstellungsdialog, einen About-Dialog und etwas Kleister, der das Ganze zusammenhält. Ist man mit „$ cd myapp“ in das neu erstellte Projektverzeichnis gewechselt, kann man Projektspezifische Befehle ausführen:

$ quickly tutorial

zeigt etwa ein schönes, bebildertes Tutorial im Hilfebrowser an, das einem die Funktionsweise von Quickly und die ersten Schritte bei der Programmierung erklärt.

$ quickly commands

listet alle verfügbaren Befehle auf, die man sich mit
$ quickly help <command>

erläutern lassen kann.

Richtig los geht es dann mit
$ quickly design


Damit werden alle UI-Dateien im Glade Interface-Designer geöffnet, so dass man die Oberfläche seines Programms gestalten kann. Den zugehörigen Code bearbeitet man mit
$ quickly edit

woraufhin die Python-Dateien in gedit geöffnet werden.

$ quickly run

startet dann das Programm, so dass man es ausprobieren kann. Entsprechende Befehle gibt es, um das Projekt in bzr zu speichern, auf Launchpad hochzuladen, oder ein Installationspaket daraus zu bauen (wobei gleich auch die Übersetzungsvorlagen angelegt werden). Insgesamt geht mit Quickly vieles leicht von der Hand, wofür man sich früher relativ lange einarbeiten musste.

Das ganze hat aber auch einen Preis: Man muss sich in sein eigenes Programm erst einmal einlesen. Gerade Einsteigern fällt es oft leichter (zumindest kann ich das aus eigener Erfahrung sagen), selbst Code zu schreiben, als Code von anderen zu lesen und zu verstehen. Es ist oft erst einmal mühselig, nachzuvollziehen, wie die einzelnen Komponenten miteinander zusammenhängen. Dadurch, dass ein Quickly-Programm schon viel Infrastruktur mitbringt, muss man sich erst einmal die Zeit nehmen, zu verstehen, was da schon passiert und an welchen Stellen man nun seinen eigenen Code einfügt oder Modifikationen vornimmt. Der Code ist aber gut kommentiert und das Tutorial erklärt alle Schritte, so dass sich die Mühe am Anfang durchaus lohnt.

Literaturverwaltung im Netz

, ,

← Zum vorherigen Teil der Serie

Der Nutzen von Literaturverwaltungsprogrammen hat sich so langsam herumgesprochen. Nicht jeder nutzt wirklich so ein Programm, der Einstieg ist oft aufwändig, und so eine Literaturdatenbank will dann auch kontinuierlich gepflegt werden. Aber wer zum x-ten Mal seine Literaturliste Stück für Stück an die Vorgaben des jeweiligen Verlages oder Herausgebers anpasst, der wird die Idee durchaus nachvollziehen können: Literatur einmal in allgemeiner Form zentral abzulegen, und dann je nach Bedarf fertig formatiert ausgeben zu lassen.

Wissenschaft lebt aber gerade vom Austausch. So nett es auch ist, wenn man sich selbst die Arbeit etwas leichter machen kann, so attraktiv wäre es jedoch auch, dies mit anderen zu Teilen. Trägt man gemeinsam Literatur zu einem Thema zusammen, entdeckt die Einzelne vermutlich Texte, die sie alleine übersehen hätte. Und Neuerscheinungen, die von einem Beteiligten eingetragen werden, können von allen anderen zur Kenntnis genommen werden. Auch rein praktisch nimmt es einem natürlich etwas Arbeit ab, wenn man nur einen Teil der Literatur selbst in die Datenbank einpflegen muss.

Ein Literaturverwaltungsprogramm, dass sich diesem Zweck verschrieben hat, ist Zotero. Zotero wird maßgeblich am Center for History and New Media der George Mason University entwickelt. Anders als kommerziell entwickelte Software steht es der Allgemeinheit kostenfrei und ohne Einschränkungen zur Verfügung. Zotero nutzt „die Cloud“ (was der neumodische Begriff für Daten im Netz ist) für zwei Dinge: Zum einen kann man, ein Benutzerkonto bei Zotero vorausgesetzt, seine eigene Literatursammlung online ablegen. Das ermöglicht, die Daten zwischen mehreren Computern, etwa dem Bürorechner, dem PC zu Hause und einem Laptop, synchron zu halten.

Zum anderen kann man Gruppen anlegen, in denen man gemeinsam auf Literaturangaben zugreifen kann. Diese Gruppen kann man nicht-öffentlich machen, etwa für den internen Austausch einer Arbeitsgruppe. Oder man legt öffentliche Gruppen an, wenn man etwa eine thematische Literatursammlung für die Beiträge anderer Wissenschaftler öffnen will. Am CERES nutzen wir Zotero für verschiedene Aufgaben. So zum Beispiel in der Nachwuchsforschergruppe „Religion vernetzt“, um Literatur zu den Themen der Gruppe – Religion, Migration und soziale Netzwerke – zu sammeln. Sei es die Literaturangabe eines gemeinsam besprochenen Textes, oder der Literaturhinweis, auf den man die anderen aufmerksam machen will, all dies lässt sich hier zusammentragen. Die Gruppe ist für Außenstehende einsehbar, nur eigene Einträge können sie nicht einstellen.

Es lässt sich aber auch gut vorstellen, etwa eine Gruppe zum Thema „islamische Organisationen im Europa der Gegenwart“ oder „interreligiöser Austausch in der Formationsphase des Buddhismus“ einzurichten und für Beiträge zu öffnen. So könnten sich Gruppen von Wissenschaftlern und Wissenschaftlerinnen, die zu ähnlichen Themen arbeiten, zusammenfinden und eine gemeinsame Literatursammlung aufbauen.

Wie auch immer man webbasierte Literaturverwaltungsprogramme nutzen will, sie zeigen in jedem Fall, dass sich Ideen aus der Welt des Social Web jenseits von Blogs und Microblogs auch für genuin wissenschaftliche Zwecke fruchtbar machen lassen.