Fredo's Blog

Humanities, Social Sciences and Free Software

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 NetzDie Evolution der PIM-Synchronisierung

Comments

Anonymous Monday, May 24, 2010 2:58:45 PM

PhotonX writes: Danke, klingt sehr interessant, werd ich mir unbedingt angucken!

Anonymous Monday, May 24, 2010 5:19:39 PM

Immanuel writes: Das finde ich auch sehr interessant, danke für den Hinweis!

Anonymous Tuesday, May 25, 2010 6:26:21 AM

Anonym writes: Auch als "erfahrener" Entwickler finde ich das Quickly-Prinzip ganz gut, da der ganze Boilerplate Code automatisch erzeugt wird. Allerdings ist das Default-Template doch ziemlich bevormundend. Außerdem braucht man bei dem Template bestimmt genauso lange, alle Befehle zu können ;). Ich hab mir deshalb selbst eins geschrieben, das aber sehr auf dem Default-Template basiert. Das nimmt einem vielleicht nicht ganz so viel Arbeit ab, ist aber auch flexibler. http://github.com/elbersb/quickly-simple-gnome-template

Anonymous Tuesday, May 25, 2010 10:36:27 AM

Martin writes: Wie ist das denn mit glade? Ich meinte irgendwo gelesen zu haben, dass libglade zu den Bibliotheken gehört, die aus Gnome 3.0 entfernt werden sollen. Oder hat das mit dem genannten Glade gar nix zu tun?

Anonymous Tuesday, May 25, 2010 12:28:20 PM

burli writes: Ich habe gerade gesehen, dass es im Ubuntu Developer Channel drei Videos zu Quickly gibt http://www.youtube.com/ubuntudevelopers

Anonymous Tuesday, May 25, 2010 12:41:57 PM

Lukas-Chr writes: Hab dich mal auf meinem Blog erwähnt, super Artikel! liebe grüße meiruhm.de

Frederik Elwertfreedo Tuesday, May 25, 2010 1:54:28 PM

Originally posted by anonymous:

Auch als "erfahrener" Entwickler finde ich das Quickly-Prinzip ganz gut, da der ganze Boilerplate Code automatisch erzeugt wird. Allerdings ist das Default-Template doch ziemlich bevormundend. Außerdem braucht man bei dem Template bestimmt genauso lange, alle Befehle zu können wink. Ich hab mir deshalb selbst eins geschrieben, das aber sehr auf dem Default-Template basiert. Das nimmt einem vielleicht nicht ganz so viel Arbeit ab, ist aber auch flexibler.



Schön, danke für den Hinweis! Gerade schreibe ich ein Programm mit Quickly, und schmeiße dabei ca. die Hälfte des vorhandenen Template-Codes weg. Da ist so ein schlankeres Template natürlich eine Erleichterung. Werde ich mir bei Gelegenheit einmal genauer ansehen.

Originally posted by Martin:

Wie ist das denn mit glade? Ich meinte irgendwo gelesen zu haben, dass libglade zu den Bibliotheken gehört, die aus Gnome 3.0 entfernt werden sollen. Oder hat das mit dem genannten Glade gar nix zu tun?



Glade ist erst einmal das Programm, mit dem Oberflächen gestaltet werden können. Früher hat Glade ein eigenes Dateiformat gehabt (.glade), und libglade war für die Einbindung in den Programmcode zuständig. Mittlerweile hat GTK über den GTK-Builder eine sehr ähnliche Funktion schon eingebaut, so dass libglade überflüssig geworden ist. Glade als Designer braucht man nach wie vor, aber es kann seine Oberflächen jetzt als GTK-Builder-Dateien (.ui) abspeichern.

libglade soll aus GNOME 3.0 entfernt werden, und bis dahin sollen alle Programme nur noch GTK-Builder benutzen. Das Quickly-Template berücksichtigt das schon.

Originally posted by burli:

Ich habe gerade gesehen, dass es im Ubuntu Developer Channel drei Videos zu Quickly gibt



Ah, kannte ich noch nicht, muss ich mir mal ansehen! Danke für den Hinweis!

Originally posted by Lukas-Chr:

Hab dich mal auf meinem Blog erwähnt, super Artikel!



Danke für das Lob und die Erwähnung!

Anonymous Tuesday, May 25, 2010 4:05:19 PM

burli writes: btw: ein Template für PyQt gibt es nicht zufällig schon irgendwo?

Anonymous Tuesday, May 25, 2010 6:17:17 PM

Markus writes: Klingt interessant. Ansonsten habe ich die gleiche Frage wie burli. Qt wäre für mich schon besser... ;-)

Frederik Elwertfreedo Tuesday, May 25, 2010 8:49:27 PM

Ich kenne bisher kein Qt-Template, aber das muss nicht heißen, dass es keins gibt.

Anonymous Wednesday, May 26, 2010 1:53:09 PM

produnis writes: Geil, genau so was hab ich gesucht... vielen Dank für den Hinweis!

Anonymous Wednesday, May 26, 2010 6:38:56 PM

lineak writes: Schöner Eintrag. Gibts das auch für Fedora?

Frederik Elwertfreedo Wednesday, May 26, 2010 8:39:59 PM

Ich denke, es sollte nichts dagegen sprechen, quickly auch unter Fedora zu verwenden. Das ubuntu-application-Template macht Gebrauch von einigen Features, die Ubuntu besonders pusht (z.B. DesktopCouch als Speicher für die Programmeinstellungen). Aber die lassen sich entweder auch unter Fedora installieren, oder man kann sie leicht durch andere Techniken (etwa ConfigParser) ersetzen.

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies