Geschichte

Das BeeWare-Projekt begann mit einer einfachen Frage: Warum verbessern sich die Werkzeuge, die wir als Python-Entwickler benutzen, nicht im gleichen Maße wie der Rest der Technologie, die wir täglich benutzen?

Python hat sich als eine sehr leistungsfähige Sprache erwiesen - zugänglich für Neueinsteiger, aber mächtig in den Händen von Experten. Python entwickelt sich rasch zu einem wichtigen Bestandteil der Datenanalyse, des wissenschaftlichen Computings und der Webentwicklungslandschaft. Initiativen wie Django Girls haben gezeigt, dass es mit Python möglich ist, eintägige Schulungskurse anzubieten, die auch Personen ohne Programmiererfahrung in Python einführen; und am Ende eines Tages haben die Teilnehmenden eine datenbankgestützte dynamische Website entwickelt und deployed, die auf einem öffentlich sichtbaren Server bereitgestellt wird.

Allerdings widerspiegelt die Erfahrung eines Python-Entwicklers manchmal eher die frühen 90er Jahre als das neue Jahrtausend. Die Standard-Entwicklungsumgebung für Python ist immer noch ein 80x25-Konsolenfenster. Für Benutzer, die aus einer Windows- oder Apple-Umgebung kommen, wo sie an sehr detaillierte, gut gestaltete grafische Oberflächen gewöhnt sind, kann diese Rückblende von 30 Jahren eine ziemlich befremdliche Erfahrung sein.

Und, ja, es gibt IDEs (Integrated Development Environments, integrierte Entwicklungsumgebungen), die eine native Anwendungserfahrung für das Schreiben von Code bieten. Aber diese Tools erfordern grösstenteils, dass Du die Sichtweise der IDE auf ein Projekt überträgst. Im Entwicklungsprozess verursachen sie oft so viele Kopfschmerzen wie sie lösen.

Und so verbleibt ein interessantes Schisma zwischen dem "alten Weg" der Unix-Entwicklung in einem Konsolenfenster und dem "neuen Weg" der All-in-One-IDEs.

Die Unix-Philosophie

Es muss aber nicht so sein. Der Kerngedanke der Unix-Philosophie ist, dass "jedes Werkzeug eine Sache gut macht". Dies ist eine sehr mächtige Philosophie, und sie ermöglicht die Zusammenstellung äusserst leistungsfähiger Toolchains, indem sie eine Reihe von extrem spezialisierten, unabhängigen Tools zusammenstellt.

Leider haben die meisten UNIX-Werkzeuge diesen Gedanken so umgesetzt, dass es auch bedeutet, dass "alle Werkzeuge eine Konsolenschnittstelle verwenden müssen". Es gibt jedoch nichts in der UNIX-Philosophie, das besagt, dass Werkzeuge eine Konsolenschnittstelle verwenden müssen - es hat sich einfach so entwickelt.

Das BeeWare-Projekt begann mit der Prämisse, dass wir das Beste aus beiden Welten haben können. Wir können eine Kette von zusammensetzbaren Werkzeugen haben, die alle eine Sache gut machen. Aber diese Werkzeuge können ihre Funktionalität auch über eine reichhaltige grafische Benutzeroberfläche bereitstellen.

Das Ziel

Das Endziel des BeeWare-Projekts: Für mobile und Desktop-Benutzeroberflächen-Software das Gleiche tun zu können, was Django für Web-Software getan hat - den Benutzern eine Reihe von Werkzeugen und Bibliotheken in die Hände zu geben, die es ihnen ermöglichen, reichhaltige, native Benutzeroberflächen zu entwickeln und sie auf ihren Geräten einzusetzen. Dies beinhaltet:

  • Werkzeuge, die es Python ermöglichen, auf verschiedenen Geräten lauffähig zu sein,
  • Tools zur Bündelung eines Python-Projekts, damit es auf diesen Geräten lauffähig ist,
  • Bibliotheken für den Zugriff auf die nativen Widgets und Funktionalitäten von Geräten,
  • Tools zur Unterstützung der Entwicklung, Fehlersuche, Analyse und Bereitstellung dieser Projekte.

Das Ziel ist, dass dieser Satz von Werkzeugen einfach genug ist, um von völligen Neueinsteigern in einer Django Girls-ähnlichen Umgebung benutzt werden zu können; zudem aber mächtig genug, um ihn auch für das nächste Instagram, Pinterest oder Disqus verwendet werden zu können.

Das Wichtigste ist, dass das Projekt all dies als Open-Source-Gemeinschaft tun will. Der Open-Source-Entwicklungsprozess hat sich als der zuverlässigste Weg zur Entwicklung robuster und zuverlässiger Software erwiesen. Die Tatsache, dass alle auf die Software zugreifen können, bedeutet, dass alle mit dem gleichen Satz hervorragender Werkzeuge loslegen können, Experten wie begeisterte Amateure.

Überall Python

Ein modernes Informatikprojekt kann die größte Entwicklung in der Informatik der letzten 10 Jahre nicht ignorieren. Python ist stolz darauf, eine plattformübergreifende Sprache zu sein. Vor 10 Jahren wurde der Begriff "plattformübergreifend" mit der Verfügbarkeit für Windows, MacOS und Linux gleichgestellt. Heutzutage ist mobiles Computing viel wichtiger. Trotzdem gibt es nicht viele gute Optionen für die Python-Programmierung auf mobilen Plattformen, und plattformübergreifendes mobiles Coden ist immer noch schwer zu erreichen.

BeeWare betrachtet mobile und andere aufkommende Plattformen (wie smarte Uhren und Set-Top-Boxen) als wichtige Gebiete des Computer-Ökosystems - denn wenn die Leute diese Geräte haben, warum sollten sie dann nicht in der Lage sein, Software für diese in Python zu schreiben?

Überall native Software

Es ist einfach, Themes zu verwenden, um plattformübergreifend zu arbeiten. Es ist jedoch auch leicht, Anwendungen zu erkennen, die mithilfe von Themes erstellt wurden - es sind diejenigen, die sich nicht wie jedes andere Programm verhalten. Widgets sehen nicht ganz richtig aus, oder es gibt eine Menüleiste auf einem Fenster in einer OS X-Anwendung. Themes können an native Software ziemlich nah herankommen - aber es gibt immer verräterische Anzeichen.

Hinzu kommt, dass native Widgets immer schneller sind als ein mit Themes erstelltes generisches Widget. Schließlich verwenden sie native Systemfähigkeiten, die abgestimmt und optimiert wurden, und nicht eine Zeichenmaschine, die auf ein generisches Widget aufgesetzt wurde.

Themes lassen auch viele Vorteile der Barrierefreiheit von nativen Plattformen vermissen. Autoren moderner Betriebssysteme verbringen viel Zeit damit, die Bedienbarkeit für Menschen mit eingeschränkter Mobilität, Sehkraft oder Wahrnehmungsfähigkeit zu verbessern. Wenn du native Widgets verwendest, sind diese Vorteile normalerweise bereits verfügbar. Wenn du Widgets mit Themes implementierst, musst du die Bedienbarkeit zusätzlich implementieren.

BeeWare verwendet zur Anwendungsentwicklung native Widgets und native Funktionalitäten anstelle eines themenbasierten Ansatzes.

Natives Python

BeeWare ist auch ein unumwundenes "Python first"-System. Wir mögen Python. Uns gefällt, wie es aussieht und wie es funktioniert. Wenn Python auf einer bestimmten Plattform nicht als erstrangige Option verfügbar ist, werden wir alles tun, was nötig ist, um Python als Entwicklungssprache verfügbar zu machen. Und wenn wir die Möglichkeit haben, das Python-Idiom für eine API oder ein Design zu übernehmen, werden wir genau das tun. Das heißt, wir werden Generatoren, Kontextmanager, yield from asynchrone Calls und mehr verwenden, um die beste Python-native API für die plattformübergreifende Anwendungsentwicklung bereitzustellen.

Wir blicken auch in die Zukunft - das bedeutet, dass wir ausschließlich Python 3 unterstützen.

Native Erfahrung

Die Erfahrung mit der Verwendung eines beliebigen Tools beginnt mit dem Installationsprozess. Teil der BeeWare-Philosophie "überall native Erfahrung" ist es, geeignete native Mechanismen für die Installation zu verwenden. Wenn du ein User-Space-Tool verwendest, sollte es dir als Paket präsentiert werden, das auf die gleiche Weise wie jedes andere Tool installiert werden kann - sei es über einen App Store, ein Installationsprogramm oder ein einfaches ausführbares Paket. Endbenutzer sollten nicht merken, dass du die Anwendung in Python geschrieben hast.

Wenn du jedoch ein Entwicklerwerkzeug oder eine Bibliothek verwendest, dann sollte es in deine Entwicklungsumgebung integriert werden können. Und da wir Python verwenden, bedeutet das, dass du in der Lage sein solltest, es mit pip install in deine virtuelle Umgebung zu installieren, und nichts weiter. Keine C-Erweiterungen, keine Compiler, kein Setzen von Systempfaden oder Umgebungsvariablen - einfach installieren, importieren und mit dem Schreiben (oder Ausführen) von Code loslegen.

Mehr als nur Code

Es geht aber um mehr als nur um Code. Ein erfolgreiches Software-Projekt erfordert Dokumentation, Designfähigkeiten, Feedback und Fehlerberichte. Die BeeWare-Gemeinschaft erkennt an, daß alle Beiträge wichtig sind - nicht nur die, die als Pull-Anfrage auf GitHub erscheinen.

Obwohl es leicht ist, sich ein Projekt im luftleeren Raum als die Summe aller Beiträge vorzustellen, stimmt diese Vorstellung nie mit der Wirklichkeit überein. Bei einem Open-Source-Projekt geht es um Gemeinschaft.

Vielfalt und Einbindung

Eine diversifizierte Gemeinschaft ist eine starke Gemeinschaft. Das bedeutet, dass Menschen aller Erfahrungsebenen, mit unterschiedlichem Hintergrund, aller ethnischen Zugehörigkeiten, Glaubensrichtungen, Orientierungen und Ausdrucksformen akzeptiert werden. Das BeeWare-Projekt setzt sich für die Entwicklung und Aufrechterhaltung einer integrativen, vielfältigen und einladenden Gemeinschaft ein.

Um dies zu untermauern, bieten wir ein offenes Mentoring für alle diejenigen an, die sich als Beitragende engagieren möchten. Weiter verfügen wir über einen Code of Conduct (Verhaltenskodex), der rigoros durchgesetzt wird. Jegliche Berichte über Verstöße gegen diesen Verhaltenskodex - auch durch ältere Gemeindemitglieder - werden mit Respekt bearbeitet und angemessen umgesetzt.

Gesund und nachhaltig

Es ist auch wichtig, dafür zu sorgen, dass die Gemeinschaft zugänglich und nachhaltig ist. Es ist leider zu einem akzeptierten Teil der Open-Source-Kultur geworden, dass "echte" Open-Source-Projekte vollständig von Freiwilligen entwickelt werden müssen. Dies stellt für viele Gruppen eine Eintrittsbarriere dar - die einzigen Menschen, die ihre Freizeit freiwillig einsetzen können, sind diejenigen, die freie Zeit haben.

Dies führt auch häufig zu Burnout und anderen Problemen der psychischen Gesundheit unter den Beitragenden. Die Tatsache, dass Depressionen, Angstzustände und Burnout in Software-Entwicklungsgemeinschaften so häufig vorkommen, sollte nicht als Ehrenzeichen oder als Demonstration dafür angesehen werden, wie engagiert ein Entwicklungsteam sein kann. Es ist ein Problem, das frontal angegangen werden muss, und zwar auf die gleiche Weise wie dies bei einem Softwarefehler der Fall ist - mit sofortigen Abhilfen und langfristigen Plänen zur Beseitigung der systemischen Ursache des Problems.

Obwohl wir unglaublichen Wert auf die Beiträge von Freiwilligen legen, wissen wir auch, dass Freiwilligeneinsätze allein nicht der Weg zur Entwicklung einer gesunden und nachhaltigen Gemeinschaft sind. Aus diesem Grund ist die finanzielle Nachhaltigkeit ein Schlüsselaspekt beim Betrieb des BeeWare-Projekts. Als Gemeinschaft ignorieren wir nicht die Rolle, die Geld bei der Bereitstellung der Ressourcen spielen muss; indem es Menschen ermöglicht, mit dem Leisten von Beiträgen zu beginnen und diese Tätigkeit auch fortsetzen zu können. Wir werden als Gemeinschaft akzeptierte Mechanismen zur Verfügung stellen, mit denen Einzelpersonen ihre Arbeit auf sinnvolle Weise monetarisieren können, und - wo immer möglich -, die Menschen für ihre Arbeit entschädigen - ohne dabei die Ideale der Open-Source-Entwicklung zu gefährden.

BeeWare: Die IDEs von Python

Dies ist BeeWare. Wir sind unglaublich gespannt, was die Zukunft für Python bereithält. Wir hoffen, dass du dich uns auf dieser Reise anschließen wirst.