Freitag, 31. Mai 2013

Package Management zum Ausprobieren

Wer mal ein bisschen mit dem gerade in Arbeit befindlichen Package Management (PM) rumspielen will, für den gibt es ein Test-Image zum Runterladen.

Vorsicht ist allerdings angeraten! Es handelt sich wirklich nur um ein Testsystem, das den gegenwärtigen Entwicklungsstand des PM zeigt. Es ist für den produktiven Einsatz nicht geeignet!

Um kein spezielles "makebootable" benutzen zu müssen, hab ich das Anyboot Image einfach auf einen USB-Stick dd'ed und den dann gebootet. Wer will kann das Testsystem dann ja per Installer auf eine Testpartition seiner Festplatte legen. [Edit: Den Installer darf man eben nicht benutzen, wie ich von Ingo erfahren habe, weil der noch nicht angepasst ist, würde der auch den Inhalt der Pakete tatsächlich ins Dateisystem schreiben. Also erst mal nur den USB-Stick booten...]
Meine dd-Kommandozeile war:

dd if=haiku-alpha-anyboot.image of=/dev/disk/usb/0/0/raw bs=1M

Den geneuen Pfad muss man natürlich anpassen. Hier ist wieder etwas Vorsicht angesagt, um nicht auf das falsche Gerät zuschreiben. Am besten trennt man vorher etwaige andere USB-Speichermedien...

Was einen nach dem Booten erwartet, sieht erstmal ganz gewöhnlich aus. In der Deskbar befinden sich die üblichen Menüs und Verknüpfungen zu den verschiedenen Programmen. So soll es ja auch sein, das PM soll für den Anwender ja möglichst transparent sein. Dass es sich um ein noch unvollständiges Testsystem handelt, hab ich erst mal nur gesehen, als ich gemerkt habe dass mein WLAN nicht funktionierte. Für einen kurzen Test ist das aber ja egal.

Wie einfach mittels PM Programme installiert und deinstalliert werden, kann man sehr schön so sehen:
Man öffnet im Tracker das Verzeichnis /boot/common/apps, in dem die gebundelten Anwendungen liegen, die nicht integraler Bestandteil von Haiku sind. Dann öffnet man das Verzeichnis /boot/common/packages, in dem die entsprechenden installierten Pakete liegen.
Nimmt man jetzt z. B. das Paket pe-2.4.3_hg602-3-x86_gcc2.hpkg und verschiebt es aus dem "packages" Verzeichnis beispielsweise auf den Desktop, verschwindet gleichzeitig das Verzeichnis "Pe" im Fenster "apps". Genauso schnell lässt sich Pe wieder installieren, indem man das Paket zurück verschiebt.

Das Ganze wird natürlich um einiges interessanter, wenn es um umfangreichere, meist von Linux portierte Pakete geht. Die haben ja die Tendenz alle möglichen Bibliotheken und andere Datenfutzel in diversen Verzeichnissen über die Festplatte zu verteilen. Hier ist das De/Installieren durch einfaches Verschieben einer Paketdatei sehr willkommen.
Eventuelle Konflikte, z. B. durch Bibliotheken unterschiedlicher Versionen, soll dabei ein Daemon im Hintergrund lösen. Der Benutzer soll davon möglichst nichts mitbekommen und nur in Ausnahmefällen belästigt werden, um beispielsweise dem Download von zusätzlich benötigten Paketen zuzustimmen. Ich glaube aber, das ist noch nicht vollständig implementiert. Zumindest konnte ich's aus Ermangelung entsprechender Pakete noch nicht ausprobieren. Pakete wie SDL oder Qt und die dafür geschriebenen Programme könnten da schöne Stresstests werden, könnte ich mir vorstellen. :)

Dieses Verteilen des Paketinhalts in die von der portierten Software erwarteten Verzeichnisse findet übrigens nur virtuell statt: Das packagefs gauckelt das nur vor, es wird also natürlich nicht wirklich jedesmal das Paket dekomprimiert und Dateien auf der Festplatte hin- und herkopiert.

Später wird es natürlich auch ein kleines GUI Tool geben, um alle verfügbaren/installierten Pakete bequem zu verwalten und online Repositories zu durchsuchen und die entsprechenden Pakete herunterzuladen etc. Aber dazu muss das Fundament natürlich erst mal perfekt funktionieren. Und dazu dienen ja die gerade laufenden spendenfinanzierten Vollzeitverträge.</zaunpfahl>

Mehr Informationen zum Packagemanagement findet man in dem entsprechenden PM-Wiki. Ich hoffe ich hab das Prinzip im Groben richtig verstanden und schreibe hier nicht zu viel Unsinn...

Donnerstag, 30. Mai 2013

Spendenaktion für Vollzeitverträge

Haiku Inc. hat dieses Jahr die Möglichkeit das durch Spenden gesammelte Geld sinnvoll für die Entwicklung von Haiku auszugeben. Durch Spenden der vergangenen Jahre ist zwar ganz schön was zusammengekommen, doch leider fehlten bisher erfahrene Haiku Entwickler, die über längere Zeit auf ihrem Können entsprechende Bezahlung verzichten konnten, um Vollzeitverträge mit Haiku Inc. abzuschließen.

Das ändert sich jetzt. Oliver Tappe und Ingo Weinhold, die bereits in den vergangenen zwei Monaten vollzeit an Haikus Package Manager gearbeitet haben, können ihre Verträge verlängern.

Oliver Tappe tritt dabei sozusagen eine Halbtagsstelle an: 80 Stunden pro Monat wird er für nur 1.000 EUR weiter an Haiku arbeiten. Das ganze für erst mal vier Monate, also 320 Stunden. Jeden Monat wird er dabei zwei Wochen an Haiku arbeiten und zwei Wochen für einen anderen, regulär zahlenden Kunden.

Ingo Weinhold hingegen wird echt vollzeit, 160 Stunden pro Monat, an Haiku arbeiten, bei 40 EUR pro Stunde. Hier sind erst mal drei Monate geplant, dann geht Haiku Inc. das Geld aus...

Das Beste aber ist: Ingo ist einverstanden noch weitere Monate anzuhängen. Es hängt also nur von den Spenden der Haiku Community ab!
Neben der kürzlich geschaffenen Möglichkeit der Minispenden durch Goodsearch gibt es auch Wege über Bitcoin und Flattr. Natürlich gibt es auch noch das alt-bekannte PayPal. Hier ist neben der einmaligen Spende auch eine automatische monatliche Abbuchung möglich. Wenn hier viele Leute mitmachen, die 5-10 EUR im Monat für Haiku ausgeben können, wären Vollzeitverträge über Jahre gesichert.




Alle Informationen stehen auf Haikus Spendenseite.






Die Verträge werden sich erst mal weiter auf das Packagemanagement konzentrieren. Um es nahtlos in Haikus Master Repository und Buildsystem integrieren zu können, gilt es diese Aufgaben zu lösen:
  • Vervollständigen des Cross-buildings (z.B. für x86_64)

  • Hybrid-Images wieder ermöglichen (gcc2/4)

  • haikuporter: Prüfung der Package-Konformität implementieren

  • Alle Packages für alle Plattformen bauen

  • Vervollständigen vom Package Management Daemon (Abhängigkeiten auflösen, Nach-Installations-Arbeiten) und (CLI) Package Manager (Upgrades von Haiku)

  • Erstellen von Tools/Infrastruktur zum Herstellen/Management von Package Repositories

  • Integration der Package Repositories ins Buildsystem

  • Bootloader Feature: "Safe Mode" und "Booten einer alten Version"

  • Anpassen einiger Anwendungen (z. B. Expander) an ein schreibgeschütztes Dateisystem


Mittwoch, 29. Mai 2013

Packagemanager Statusreport

Ingo und Oliver haben jetzt ihre 160 bezahlte Stunden am Packagemanagement abgearbeitet - Oliver noch nicht ganz, weil er noch etwas durch sein vorheriges Projekt aufgehalten wurde und so nicht wie Ingo von Anfang an wirklich vollzeit bei der Sache war. Nach dem Eröffnungs-Blogpost und dem Zwischenstands-Report ist nun sozusagen der Schlussbericht zu ihrer Zwei-Monatsarbeit erschienen.

Ingo führt darin folgende Fortschritte seit dem Zwischenbericht auf:

  • Ästhetische Verbesserungen, Refactoring, um den Code einfacher unterhalten zu können.

  • Komfortablere Benutzung und neue Optionen, die insbesondere Portierungen mit haikuporter vereinfachen. So wird nun der Originalcode eines Ports in ein neues git Repository geschoben und die Haiku-spezifischen Patche hinzugefügt. So lassen sich Änderungen später einfach erkennen und anpassen. Viel bequemer als das alles immer von Hand zu machen.

  • Strengere Auswertung von Abhängigkeiten

  • Neue Features, insobesondere die Möglichkeit unterschiedliche Pakete eines Ports zu schnüren, beispielsweise ein Entwicklungs-Paket, ein Doku-Paket, ein Debug-Info-Packet etc.

Relativ viel Zeit wurde darauf verwendet die "Build-Rezepte" der von Haiku benötigten Softwareports zu erstellen. Obwohl oft bereits eine .bep Datei vorhanden war, musste viel angepasst werden, da Haikus Packagemanager flexibler ist was Dateipfade angeht. Auch wurde die Verzeichnis-Struktur geändert.

Nachdem nun fast alle Packages, die für das Herstellen eines Haiku-Images benötigt werden, erstellt wurden, konnte der PackageManagement-Branch zum ersten mal seit zwei Jahren auf den momentanen Haiku Main-Branch gezogen werden.

Desweiteren wurde das Package-Format verändert, so dass nun selbst der Bootloader als unkomprimiertes Package vorliegt, das direkt vom Stage-1-Bootloader angesprungen werden kann. Außerdem können Pakete nun Metainformationen enthalten, was globale Einstellungen oder Benutzereinstellungen angeht, "Unix" User- und Gruppeninformationen oder ob ein Skript nach der Installation ausgeführt werden soll.

Neben diesen neuen Features wurde das Format auch noch auf seine Komprimierbarkeit optimiert. Die Daten werden in 64kB Blöcke aufgeteilt und komprimiert. Anhand einer Art Inhaltsverzeichnis, kann das Package-Filesystem aber immer noch schnell auf die Inhalte zugreifen, ohne z.B. das komplette Paket dekomprimieren zu müssen. Das Package-Filesystem cached diese dekomprimierten Blöcke jetzt, was die Performance weiter verbessert.

Die Komprimierung ist dabei um einiges besser als bei zip, eher in der Liga von tar.gz. Theoretisch ließen sich für den Download bestimmte Packages weiter verkleinern, indem das Packet ohne Kompression erstellt und anschließend per xz zusammengepackt wird.

Während ihrer Arbeit tat sich ein Problem auf, mit dem die beiden nicht gerechnet hatten: Cross-compiling Pakete. Ganz früher enthielt das Haiku Repository den kompletten Code aller benötigten Programme. Nach und nach wurden diese Portierungen jedoch ausgegliedert und erst während dem Build geladen und im Image installiert. Das spart Zeit beim Kompilieren, die Programme können extern "maintained" werden und sie müssen nicht in Haikus jam-basiertes Buildsystem integriert werden.

Der Nachteil ist natürlich, dass Portierungen auf andere Plattformen schwieriger geworden ist, da erstmal Pakete der Portierungen der benötigten Programme vorhanden sein müssen. Schlimmer noch, einige Pakete werden gebraucht, um Haiku selbst überhaup kompilieren zu können (z.B. der Kompiler...).

Um dieses Problem zu lösen, müssen diese essentiellen Pakete erstmal auf einer anderen Platform erstellt werden, also braucht man eine Cross-Compile-Umgebung.

Ingo gibt folgende Anleitung, wie man Haiku so von Null aufbaut:

  • Man konfiguriert den Haiku Build wie gewohnt, inkl. die Erstellung eines Cross-Compilers.

  • Man baut "haiku_cross_devel.hpkg", das die Haiku Header, libroot und den Glue-Code enthält, also alles um Software für die Zielplattform Haiku erstellen zu können.

  • Jetzt schaut man in das haikuports.cross Repository. Hier befinden sich alle "Build-Rezepte" die man benötigt, um die Programme zu erstellen um Haiku zu bauen. Mit diesen Rezepten baut man mittels haikuporter jetzt die nötige Software, inkl. der haiku_cross_devel package.

  • Jetzt baut man ein minimales Haiku, inkl. der cross-built packages.

  • Dann bootet man dieses Mini-Haiku und baut alle Packages.

  • Jetzt sind alle benötigten Packages vorhanden und man kann ein komplettes Haiku wie gewoht bauen.

Zur Zeit muss man diese Cross-Building-Packages noch unter Haiku bauen, wegen dem benötigten Package-Dateisystem und den Features zum Lösen von Abhängikeits durch haikuporter.

Diese ganze Cross-Kompiliererei wird in Kürze nötig, da es bisher nur x86 gcc2 Pakete gibt, bald aber auch gcc4 und x86-64 Pakete benötigt werden.

Es ist also noch viel zu tun... Da trifft es sich gut, dass Ingo und Oliver ihre Verträge verlängern konnten. \o/

Samstag, 11. Mai 2013

Mini-Spenden per GoodSearch

Haiku Inc. ist seit neuestem bei GoodSearch gelistet. GoodSearch ist eine Suchmaschine auf Yahoo-Basis, bei der für jede Suchanfrage US$0.01 an eine Organisation gespendet wird, die sich der Benutzer aussuchen kann. Ausgenommen von dieser Regelung sind Suchen in den Kategorien "Bilder" und "Videos", Suchen nach bestimmten URLs oder innerhalb einer Site, oder wenn man nach demselben Begriff innerhalb von 24 Stunden sucht. Alle Ausnahmen sind in den FAQ gelistet.

Mal sehen, ob das eine relevante Einnahmequelle für Haiku werden kann. Wenn da hundert Leute jeden Tag 5 oder 6 mal was Suchen, kommen im Jahr auch gute $2.000 zusammen. Ich werde es auf alle Fälle mal ausprobieren und habe GoodSearch zu meiner Startseite im WebPositive gemacht. Da GoodSearch natürlich werbefinanziert ist und man eingeloggt sein muss, um die 1-Cent-Spende zu bekommen, empfiehlt es sich wohl ein Profil unter Pseudonym mit Wegwerf-Mailadresse anzulegen...

Freitag, 10. Mai 2013

TuneTracker 5 erstmals unter Haiku

Dane Scott liefert seine Radioautomationssoftware TuneTracker jetzt zum erstenmal für bzw. zusammen mit Haiku aus. Bisher lief TuneTracker immer noch unter BeOS, aber Haiku ist mittlerweile offenbar stabil genug und liefert alle nötigen Features um rund um die Uhr in einem professionellen Umfeld eingesetzt werden zu können.
Natürlich steckt auch der Druck dahinter, TuneTracker auf moderner Hardware laufen zu haben. BeOS kommt mit aktueller Hardware meist nicht zurecht und alte, BeOS-fähige Hardware ist kaum noch aufzutreiben. Da kompatible Komponenten zu finden eine heikle Sache sein kann, bietet Dane nicht nur die Software TuneTracker an, sondern auch optional eine Palette unterschiedlich ausgestatter Komplettrechner.

Wer auf dem Laufenden in Sachen TuneTracker und Audio unter Haiku bleiben möchte, sollte nicht nur die TT News Seite im Auge behalten, sondern auch Dane's Blog leBUZZ. Hier wurde kürzlich ein Aufruf für Vektoricons für TuneTracker gepostet. Wer das nötige Talent hat, kann Dane dabei helfen TuneTracker noch besser in die neue Haiku-Umgebung zu integrieren und dabei sogar noch ein bisschen Geld verdienen.