Wir werfen wie jeden Monat einen Blick auf aktuelle Linux-Entwicklungen und hoffen, den Freaks und Geeks ein paar interessante Anregungen liefern zu können. Schwerpunkt ist diesmal die neunte Python-Konferenz in Long Beach, Kalifornien.
Was bedeutet eigentlich der Name Schwaller? Viele Leser und Leserinnen glaubten tatsächlich lange, dass es sich um ein Pseudonym handelt. Dem ist natürlich nicht so! Angeblich leitet sich dieser Name von der Tätigkeit des Schwallens ab, dass heißt des Flössens von Baumstämmen mit Hilfe von Stauwehren und Wasserfluten. Als Erster wird Hantz (Hans) oder Haintz (Heinz) Schwaller im Jahre 1381 erwähnt. Die Schwaller waren also Leute, die an schnellen Flüssen lebten (diese Erklärung findet sich übrigens beim Amerikanischen “Historical Research Center”). In der Neuzeit verwandelten sich die Flüsse allmählich in News-Ströme und die Baumstämme in einzelne News-Brocken, die es zu zähmen gilt.
Doch kommen wir nun zum aktuellen Geschehen in der Linux- und Open-Source-Gemeinde. Da ich letzten Monat zwei Wochen im Urlaub war und danach vier Tage bei der Python9-Konferenz in Long Beach, Kalifornien (bei Los Angeles), werde ich mich auf dieses Ereignis konzentrieren, da ich hierzu am meisten zu erzählen habe und viele der dort vorgestellten Projekte von allgemeinem Interesse sein dürften.
Python – it fits your brain
Dies war das Motto der diesjährigen neunten Python-Konferenz, die vom 5.-8. März 2001 im noblen Hilton-Hotel von Long Beach stattfand, und traf den Nagel ziemlich genau auf den Kopf. Mit zirka 330 Teilnehmern handelte es sich um eine kleine, aber feine Konferenz, die wie schon letztes Jahr von Foretec Seminars organisiert wurde. Leider waren die Preise für hiesige Verhältnisse recht gesalzen. Zumindest erhielt aber jeder Teilnehmer, der sich für den Tutorial-Tag angemeldet hatte, die ausgedruckten Vortragsfolien (immerhin 350 Seiten) aller Tutorials ausgehändigt.
Die Proceedings-Unterlagen mit über 250 Seiten waren ebenfalls ein willkommenes Geschenk, mit dem sich die Tage sehr gut planen ließen, wenn man denn heil im Hotel ankam. Ich saß nämlich zufälligerweise mit Bernhard Herzog, dem Autor des in Python geschriebenen Vektorgrafik-Programms Sketch (neuerdings als GTK-Version verfügbar), im gleichen Sammeltaxi, welches zweimal bei Rot über die Ampel fuhr und einmal auf dem Highway fast die Leitplanke rammte, weil sich die Fahrerin bückte, um irgendeine Einstellung an ihrem Sprechfunk-Gerät vorzunehmen. Zudem musste ihr eine andere Fahrzeug-Insassin den Weg zum Hotel weisen, weil sie nicht wusste, wo das Hilton war. Aber hey, in LA sieht man das alles etwas lockerer und wir haben’s ja schließlich überlebt.:-)
Am Montag gab es jeweils morgens und nachmittags fünf parallel stattfindende Tutorials, die Themen wie Web-Client-Programmierung mit Python (etwas schludrig von Moshe Zadka präsentiert, der nach der Hälfte der Zeit bereits fertig war), das Erstellen von GUI-Anwendungen mit GLADE, Zope, CORBA mit omniORBpy, Jython (die Neu-Implementierung von Python in Java), Thread-Programmierung und Python für wissenschaftliches Rechnen (NumPy) behandelten. Insgesamt ein bunt gemischtes Programm, welches aber nur ansatzweise illustrieren konnte, wo Python heute überall eingesetzt wird. Die nächsten beiden Tage waren dafür umso eindrucksvoller mit Beispielen quer durch alle Anwendungsbereiche vollgepackt.
Das Python-Jahr im Rückblick
Den Dienstag eröffnete Guido van Rossum (Pythons wohlwollender Diktator) mit einem Rückblick auf das turbulente letzte Jahr. Das von ihm geleitete Webportal “PythonLabs” zog mit seinen Leuten vom CNRI zu BeOpen und danach zu Digital Creations (Digicool), der Heimat des Python-basierten Web-Applikations-Servers und Content-Management-Systems Zope. Damit wird Digicool quasi zum Zentrum der Python-Welt. Im Gegensatz zu BeOpen handelt es sich hier um eine harmonischere Ehe, da dort unter anderem eines der Python-Urgesteine, nämlich Jim Fulton, beheimatet ist, der hinter sehr vielen neuen Python-Entwicklungen steckt. Bleibt noch anzumerken, dass Guido nicht viel Gutes an BeOpen übrig ließ, wie er mir auch in einem persönlichen Gespräch mitteilte.
Außer diesen Umzügen berichtete van Rossum über das Problem der GPL-inkompatiblen Python-Lizenz, das möglichst schnell behoben werden soll. Hierzu wurde unter anderem die Python Software Foundation (PSF) gegründet, an welche die Rechte übergehen sollen. Bis es soweit ist, wird es allerdings noch eine Weile dauern und auch zu seltsamen Zwischenversionen wie Python 1.6.1 und 2.0.1 nebst 2.1 kommen, die sich gerade in der Beta-Phase befindet. Präsident der PSF, die der Apache Software Foundation nachempfunden wurde und in Zukunft auch für die Python-Homepage Python.org zuständig sein wird, ist Dick Hardt, CEO und Gründer der kanadischen Firma ActiveState. Unterstützt wird er von so prominenten Python-Namen wie David Ascher, Paul Everitt, Fredrik Lundh, Tim Peters, Greg Stein, Guido van Rossum und Thomas Wouters. Ich bin sicher, dass der PSF mehr Erfolg als dem Python Consortium (das mehr oder weniger ein Misserfolg war) beschieden sein wird.
Umzug auf Sourceforge
In seinen weiteren Ausführungen bewertete Guido den Umzug des Python-Quellcodes zu Sourceforge als sehr positiv, da sich jetzt viel mehr Leute aktiv an der Weiterentwicklung beteiligen können. Ebenfalls sehr wichtig schätzt er die Einführung der Python Enhancement Proposals (PEPs) ein, welche die Leute zwingen, ihre Ideen für Erweiterungen schriftlich zu notieren und eventuell auch schon Beispiel-Implementierungen vorzulegen. Durch diese Art der Dokumentation läßt sich leicht nachvollziehen, welche Idee schon einmal diskutiert und unter Umständen verworfen wurde. Alle Neuerungen in Python 2.1 wie schwache Referenzen, Funktionsattribute, Nested Scopes, Rich Comparisons, Distutils als neuer Python Build-Mechanismus, Warnmechanismen und Übergangslösungen bis zur Einführung neuer Features (from __future__ import nested_scopes) wurden so diskutiert. Was einigen Leuten in der Python-Szene allerdings Kopfschmerzen bereitet, ist das Tempo mit dem derzeit neue Vorschläge übernommen werden. Da Guido bei allen Entscheidungen das letzte Wort hat und ein sehr besonnener Mensch ist, mache ich mir da allerdings keine Sorgen.
PEPs and more
Einige der heißen Themen, die vor allem am letzten Tag der Konferenz, dem Developers Day, besprochen wurden, sind Iteratoren, Interfaces, Pythons Numerisches Modell und ganzzahlige Division. Vor allem bei der Frage ob 1/2 = 0 oder 1/2 = 0.5 sein soll, gehen die Meinungen weit auseinander. Die Numeriker wollen ganz klar die Zahlenbereiche nicht automatisch und transparent erweitern, weil sie damit ihres Lebens nicht mehr froh würden. Wer mehr will, muss auch mehr dafür tun, ist ihre Devise: Bei 1/3 ist nämlich schon nicht mehr klar, ob man rationale Zahlen einführen soll oder nicht (1/Rational(3) würde dies mit einer expliziten Schreibweise bei Bedarf erzwingen) und bei sqrt(-1) könnte man eventuelle Programmierfehler nicht mehr abfangen, wenn man automatisch zwei komplexe Zahlen zurückliefern (i und -i) würde.
Die andere Gruppe um Moshe Zadka möchte den Programmier-Neulingen, die eher Taschenrechner-Semantik ( 1/2 = 0.5) gewöhnt sind, das Leben nicht unnötig erschweren und auch gleich diverse Vereinheitlichungen bei Pythons Zahlenmodell vornehmen. Da in PEP 228 allerdings zu viele Änderungsvorschläge auf einmal gemacht wurden, hat Moshe auf Bitte von Guido van Rossum vier weitere PEPS (237-240) aus dem Boden gestampft, um die Bereiche klarer zu trennen und eine bessere Entscheidungsgrundlage zu schaffen. Wir werden ja sehen was daraus wird.
Bei den Iteratoren scheint die Ausgangslage nicht so kontrovers zu sein, und ich fände sie eine echte Bereicherung für Python. Ruby aber auch Java zeigen sehr deutlich, welche Probleme man damit auf sehr elegante Weise lösen kann. Ebenfalls sehr an Java angelehnt sind die Ideen zu Interfaces, die vor allem aus der Zope-Ecke stammen, da Digital Creations eingesehen hat, dass das Programmieren von Zope-Produkten nicht gerade entwicklerfreundlich ist (hat man auch wirklich nichts vergessen?). In Zope-2.3.* sind sie bereits mit Python-Bordmitteln realisert worden und in Zukunft werden sie das Design-Fundament von Zope sein, das sich in Richtung Python-Komponenten hinbewegt, die durch Interfaces beschreiben und durch Adapter mit Publiziermechanismen (HTML, XML, XML-RPC, SOAP, FTP, WebDAV, …) verbunden werden. Bewährt sich dieses Konzept, so sollten Zope-Komponenten auch in anderen Web-Frameworks wie Webware verwendbar sein. Gerade dieser Ansatz interessiert mich persönlich sehr, da ich mittlerweile offizieller Webware-Entwickler bin (siehe dazu das TaskKit-Paper auf python.de) und auf die vielen guten Zope-Projekte nicht verzichten möchte. So wie es aussieht, könnte die Zope Objekt-Datenbank ZODB irgendwann mal sogar zum offiziellen clusterbaren Persistenzmechanismus für Python-Objekte werden. Andrew Kuchling, der an der Python-Konferenz vertreten war, hat in seinem sehr lesenswerten ZODB/ ZEO Programming Guide vorgeführt, wie sich diese Technologie unabhängig von Zope einsetzen lässt.
Webware von Chuck Esterbrook hat übrigens an der Python9-Konferenz das Interesse sehr vieler Entwickler geweckt, da es ein sehr gutes Design besitzt und die Stärken von Python voll und ganz zur Geltung bringt. Einer davon ist der durch seine Java- und C++-Bücher bekannt gewordene Bruce Eckel, der auch die äußerst amüsante Abschlussrede mit dem Titel “Why I love Python” hielt. Seine Produktivität verdoppelte sich durch Java im Vergleich zu C++, aber seit er Python einsetzt, ist er 10 Mal produktiver! Zudem zeigte er sich sehr beeindruckt von der Atmosphäre der Konferenz, die für alle Beteiligten sehr motivierend und kaum in Worte zu fassen sei. Wo sonst wird über Sprach-Features öffentlich abgestimmt (Guido bezieht diese Zahlen immer in seine Erwägungen ein)?
Probleme lösen mit Python
Anhänger von Skriptsprachen wie Python, Perl, Tcl, PHP, Lua oder Ruby sind für die schnelle Lösung von Problemen bekannt. Dies zeigte sich auch auf der Konferenz, wo der Einsatz von Python in sehr unterschiedlichen Bereichen vorgeführt wurde. Brent Burley und Rajesh Sharma von Walt Disney stellten etwa ihr internes Modellier- und Animimations-Werkzeug vor, welches eine Python-Shell enthält, mit der sich alles skripten lässt. Dabei ist es egal ob in Python oder in C++ implementiert wird, da die Kommunikation mit den Klassen über ein Messaging Framework zustande kommt.
Man kann also schnelle Prototypen in Python entwerfen und später durch C++ austauschen, ohne dass dies die Anwender bemerken. Interessant ist auch, dass es die Walt Disney Entwickler geschafft haben, sowohl Motif als auch Tk in die gleiche grafische Benutzeroberfläche zu integrieren. Dazu mussten sie die beiden Event-Loops zusammenführen und dafür sorgen, dass die unterschiedlichen Frameworks nicht zwei blinkende Cursor erzeugen. Die beiden Entwickler zeigten sich jedenfalls von den Fähigkeiten und der leichten Integrierbarkeit von Python angetan.
Weitere interessante Vorträge gab es über den Einsatz von Python in Wissenschaft und Technik. So war bei den Poster-Sessions eine Python-basierten Klosteuerung zu bewundern und drei Forscher an der Florida Atlantic University stellten als “seriösere” Variante ein autonomes Unterwasserfahrzeug mit Python-Steuerung vor. ELLIPT2D ist ein Finite-Elemente-Programm, das zeigt was man mit Python-Wrappern um Fortran-Code alles anstellen kann.
Schlangenbeschwörer
Meister seines Fachs ist auch Travis Oliphant, der in seiner Doktorarbeit Numerical Python einsetzt und besonders auf die neue Scientific Python Website scipy.org hinwies, sowie David Beazley (unter anderem bekannt für SWIG und seine Python-Referenz, die in deutscher Übersetzung bei Markt und Technik erschienen ist), der seinen Wrapped Application Debugger (WAD) vorstellte und dafür verdientermaßen eine Auszeichnung erhielt (bestes Paper). WAD konvertiert Coredumps in C-Erweiterungen in Python-Ausnahmen und knackt damit wirklich eine harte Nuss. Ebenfalls sehr großes Lob (vom Meister Guido van Rossum himself) erhielt der witzige Ka-Ping Yee für sein PyDoc-Framework, welches in Zukunft standardmäßig bei Python dabei sein wird und den Zugriff auf jede nur erdenkliche Art und Weise auf Python Doc-Strings ermöglicht.
Großes Interesse weckten auch die drei auf der Konferenz vorgestellten (allerdings kommerziellen) Entwicklungsumgebungen PythonWorks von Secret Labs AB, Komodo von ActiveState und Wing IDE von Archaeopteryx Software. Das erste Produkt basiert auf Tk, das zweite auf Mozillas Komponententechnologie und das dritte auf GTK+.
Weiterentwicklung
Man kann also von durchaus orthogonalen Ansätzen sprechen, wobei Komodo der radikalste und modernste Ansatz ist, da er auf Mozillas Crossplattform XPCOM-Komponententechnologie aufsetzt und zu einem großen Teil mit XUL und dem Python-Wrapper PyXPCom programmiert wurde. Mit ihm kann man Perl-, Python-, JavaScript- und XUL-Programme debuggen und wenn die Versprechungen von ActiveState wahr werden, dann ist in zirka einem halben Jahr Python (später auch Perl) als gleichberechtigte Skriptsprache neben JavaScript in Mozilla integriert. Endlich, denn JavaScript kann ich als Programmiersprache so rein gar nichts abgewinnen.
Marc Hammond (bekannt für seine Python Win32-Erweiterungen) stellte weitere ActiveState-Entwicklungen wie “Python for .NET” vor, das später mit “Perl for .NET” erweitert werden soll. Obwohl auf der Java Virtual Machine (JVM) nicht nur Java läuft, vermarktet sie Sun als einzig selig machende Programmiersprache. .NET von Microsoft ist zwar stark auf C# und den .NET-Nachfolger von VBA fokussiert, bietet aber explizit eine sprachunabhängige Plattform an. Wie aus den Ausführungen von Marc zu entnehmen war, ist die Unterstützung von schwach typisierten Sprachen wie Python aber noch verbesserungswürdig. Für Windows-Entwickler ist jedenfalls die Aussicht einer zu C# gleichwertigen Programmiersprache wie Python, die den Zugriff auf sämtliche Windows- und sonstigen Komponenten ermöglicht, höchst attraktiv, zumal das Ganze mit COM schon heute sehr gut funktioniert.
Das angekündigte .NET für Linux ist nicht wirklich des Rätsels Lösung, aber dass jede Skriptsprache Wrapper zu den immer gleichen Bibliotheken erstellt, ist längerfristig einfach Unfug und vor allem Zeitverschwendung. Die Komponentenmodelle von KDE, GNOME und Mozilla sind alle auf dem richtigen Weg, aber Microsoft hat hier durchaus einen nicht zu vernachlässigenden Vorsprung und ist mit seiner Sprachunabhängigkeit durchaus auf dem “richtigen Weg”. Windows als einzige derzeit unterstützte Plattform für das Installieren der Komponten ist natürlich der Pferdefuß an der ganzen Geschichte.
Hier sollte die Open-Source-Gemeinde zeigen, dass sie es mit einer Virtualisierung nicht nur der Hardware (Plex86 zum Beispiel macht sehr gute Fortschritte), sondern auch der Laufzeitumgebung für Komponenten mit Sun und Microsoft aufnehmen kann. Ein interessanter Vorschlag eines Red Hat Mitarbeiters in eine ähnliche Richtung war für ein paar Stunden online verfügbar. Doch leider wurde das Paper wieder entfernt, was ich nicht ganz verstehe, denn den ersten Teil konnte ich gerade noch lesen und fand ihn sehr gut.
Ein Pfund gemischtes, bitte
Nach diesem kleinen Abstecher zu diversen Komponententechnologien noch ein paar letzte Anmerkungen und Anekdoten zur neunten Python Konferenz. Erstens war Zope letztes Jahr der Shooting-Star, konnte aber im Jahr 2000 einige seiner Versprechungen nicht einhalten. Dieses Jahr war Zope war sehr etabliert und man will bei Digital Creations in den nächsten Monaten viele Fehler der Vergangenheit beheben, um diese Applikation noch attraktiver für Entwickler zu gestalten (dazu gehören die neuen Webeditor-freundlichen Zope Presentation Templates, die eine strikte Trennung von Applikationslogik und Präsentation ermöglichen). Eines ist nämlich klar: Im Vergleich zu Perl/PHP ist die Durchdringung des Open-Source-Web-Entwickler-Camps bei Zope noch relativ gering, weil die Technologie (wie auch bei J2EE) komplex und an vielen Stellen zu integriert ist. ZEO (Zope Enterprise Objects) sollte man aber in Zukunft standardmäßig mit installieren, denn sie ermöglichen das Debuggen einer laufenden Zope-Instanz (z.B. mit pdb), wie Jim Fulton einem erstaunten Publikum live vorführte. So wurde unter anderem der klassische zope.org-Userfolder in einen BTree-basierten Userfolder transformiert. Paul Everitt, CEO von Digital Creations, wurde ganz bleich als er das hörte. :-)
Zweitens gewinnen die Kanadier (und Australier) von ActiveState alle Saufwettbewerbe und verteilen auch die coolsten Python-Tattoos. Drittens lief mir Michael Gorlick von Endeavors Technology per Zufall über den Weg, als er Pippy-Promotion-Material verteilte. Bei Pippy handelt es sich um eine Python-Portierung auf das PalmOS-Betriebssystem und da ich sie ein paar Tage vor der Python-Konferenz ausprobiert hatte, dauerte unser Gespräch länger als erwartet.
Einer geht noch
Viertens ist Uche Ogbuji nach wie vor der ungeschlagene König der Python/XML-Applikationen. Das beweist sein Artikel über den 4Suite Server bei Unixinsider oder sein Paper über “Python Web Services” auf IBMs DeveloperWork. Fünftens können Verrückte nun auch Perl-Module unter Python verwenden. ActiveState macht’s möglich. Sechstens findet auch Tim Berners-Lee, dass Python eine coole Sprache ist: “I was happy to find that Python is a language you can get into on one battery! I have been happily hacking ever since.”
Siebtens ist Sylpheed ein umwerfender Mail- und Newsreader, Midori eine interessante und vor allem grün angehauchte Linux-Distribution, LVA ein Perl/TK-basiertes Programm zur Administration von Logical Volume Manager Systemen, eXist ein neues MySQL-basiertes XML Document Repository, AFC eine Portierung der Amiga Foundation Classes auf Linux, MLVIEW-DXPC eine neue Möglichkeit X-Applikationen auf entfernten Rechnern mittels eines komprimierten X-Protokolls anzuzeigen und MyLUA ein Patch, der es erlaubt MySQL Stored Procedures in Lua zu schreiben.
Und at last – ist endlich Schluss mit diesem Readme. ( tfr/jk)
Infos |
|
[1] Tom’s Readme online: https://www.linux-community.de/Themen/index_html?category=007002 |








