1 Punkte von GN⁺ 2024-04-08 | 1 Kommentare | Auf WhatsApp teilen
  • PumpkinOS ist eine Neuimplementierung von PalmOS, die auf modernen Architekturen wie x86 und ARM läuft und m68K-PalmOS-Anwendungen ohne PalmOS-ROM ausführen kann
  • Die standardmäßig gestartete App ist der Launcher; Preferences soll künftig Konfigurationsoptionen enthalten, und Command wird derzeit noch als experimentelle Kommando-Shell bereitgestellt
  • Diese Veröffentlichung enthält die vier PIM-Apps von PalmOS: AddressBook, MemoPad, ToDoList, DateBook; deren mit dem PalmOS SDK ausgelieferter Quellcode wurde so angepasst, dass er unter PumpkinOS kompiliert
  • Datensätze aus AddressBook und MemoPad scheinen mit den entsprechenden PalmOS-Apps kompatibel zu sein, aber Datensätze aus ToDoList und DateBook sind wegen Unterschieden bei word size und Endianness nicht kompatibel
  • Das gesamte Projekt befindet sich noch in einer experimentellen Phase; einige Funktionen wurden überhaupt nicht getestet, und beim Emscripten-Build können Probleme wie Software-Rendering, hohe CPU-Auslastung und Browser-Hänger auftreten

Ziel und Umfang von PumpkinOS

  • PumpkinOS ist ein Projekt zur Neuimplementierung von PalmOS auf modernen Architekturen
    • Zielarchitekturen sind unter anderem x86 und ARM
    • Anders als bei gewöhnlichen PalmOS-Emulatoren wird kein PalmOS-ROM benötigt
    • m68K-PalmOS-Anwendungen können ausgeführt werden
  • Eine Sammlung von Artikeln zu verschiedenen Aspekten von PumpkinOS findet sich in der WordPress-Kategorie PalmOS

Standardanwendungen und aktueller Status

  • Launcher ist die App, die beim Start von PumpkinOS zuerst ausgeführt wird
    • Sie zeigt ein Panel an, über das andere Anwendungen gestartet werden können
  • Preferences soll langfristig die Konfigurationsoptionen von PumpkinOS enthalten
  • Command ist eine Kommando-Shell und noch experimentell

Enthaltene PalmOS-PIM-Apps

  • Diese Veröffentlichung enthält vier PIM-Apps von PalmOS
    • AddressBook
    • MemoPad
    • ToDoList
    • DateBook
  • Der Quellcode dieser Apps wurde mit einem oder mehreren PalmOS SDKs ausgeliefert und so angepasst, dass er unter PumpkinOS korrekt kompiliert
  • Die Kompatibilität der Datensätze unterscheidet sich je nach App
    • In AddressBook und MemoPad erstellte Datensätze scheinen mit den entsprechenden PalmOS-Apps kompatibel zu sein
    • In ToDoList und DateBook erstellte Datensätze sind wegen Unterschieden bei word size und Endianness nicht kompatibel
  • Der Testumfang ist begrenzt
    • Getestet wurde nur bis zu dem Punkt, an dem einige Datensätze erstellt und bearbeitet werden können
    • Es gibt noch einzelne Fehlfunktionen
    • Manche Funktionen wurden überhaupt nicht getestet
  • Das aktuelle Ziel ist es, einen Vorgeschmack auf die künftige Entwicklung von PumpkinOS zu geben

Lizenz

  • PumpkinOS ist unter GPL v3 lizenziert
  • Das Verzeichnis license enthält die einzelnen Lizenzinformationen zu verschiedenen in PumpkinOS verwendeten Komponenten
  • Es wird darum gebeten, auf fehlende oder fehlerhafte Lizenzinformationen hinzuweisen

Build-Anleitung

  • PumpkinOS muss aus dem Quellcode gebaut werden
    • Eine IDE ist nicht erforderlich
    • Der Build kann über die Kommandozeile erfolgen
  • Windows, Linux, WSL2

    • Unter 64-Bit-Windows kann MSYS2 verwendet werden
    • Im MINGW64-Terminal werden zusätzliche Pakete installiert
    pacman -S gcc binutils make git
    
    • Auf 64-Bit-Linux-basierten Betriebssystemen werden gcc, binutils, make und git benötigt
    • Unter Linux muss außerdem das SDL2-Entwicklungspaket installiert werden
    • Bei Debian-basierten Distributionen wird folgender Befehl verwendet
    sudo apt install gcc binutils make git libsdl2-dev
    
    • Auf Windows 11 und aktuellen Windows-10-Versionen kann auch unter WSL2 gebaut werden
    • Im WSL2-Terminal können die Linux-Build-Anweisungen befolgt werden
  • Gemeinsames Build-Verfahren

    • Das Repository wird geklont
    git clone https://github.com/migueletto/PumpkinOS.git
    
    • In das Quellverzeichnis wechseln und make ausführen
    cd PumpkinOS/src
    make
    
    • Wenn der Build erfolgreich ist, werden folgende Artefakte erzeugt
    • die ausführbare Datei pumpkin im Wurzelverzeichnis
    • die dynamischen Bibliotheken im Verzeichnis bin
    • die PRC-Dateien im Verzeichnis vfs/app_install

Emscripten-Build und Ausführung im Web

  • Experimentell kann auch mit Emscripten gebaut werden
    • Die Installation von Emscripten fällt nicht in den Umfang der README
cd PumpkinOS/src
make OSNAME=Emscripten
  • Dieser Befehl erzeugt pumpkin.zip im Ordner src/emscripten
    • Diese ZIP-Datei enthält die Dateien, die für die Bereitstellung von PumpkinOS auf einem Webserver nötig sind
  • Bei Verwendung des standardmäßigen apache2-Webservers unter Linux sieht ein Beispielablauf so aus
    • Den Ordner /var/www/html/pumpkin anlegen
    • Die ZIP-Datei in diesen Ordner entpacken
    • Im lokalen Server den Browser unter /pumpkin/pumpkin.html öffnen; dort kann PumpkinOS angezeigt werden
  • Alternativ kann im Emscripten-Quellverzeichnis ein Python-Webserver gestartet werden
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
  • Dieser Build ist noch sehr experimentell und bringt einige Einschränkungen mit sich
    • Je nach OS, Browser und GPU-Integration kann es unerwartet zu einem Fallback auf Software-Rendering kommen
    • Hohe CPU-Auslastung und Browser-Hänger können auftreten
    • Wird der Browser im privaten Modus ausgeführt, startet die Anwendung nicht
    • Bei Zugriff über HTTP statt HTTPS auf einem nicht lokalen Server wird die Anwendung nicht geladen

Ausführung, Installation, Debugging

  • Unter 64-Bit-Windows wird pumpkin.bat ausgeführt
  • Unter Linux oder WSL2 wird pumpkin.sh ausgeführt
  • Beim Start öffnet sich PumpkinOS in einem neuen Fenster
  • Beim Start werden alle PRCs in vfs/app_install entfernt und in Ordner innerhalb von vfs/app_storage entpackt
  • Da sich das Projekt insgesamt noch in einem experimentellen Stadium befindet, können verschiedene Probleme auftreten
  • Unabhängig davon, ob der Start erfolgreich war, wird im Wurzelverzeichnis die Datei pumpkin.log erzeugt
    • Wenn Probleme auftreten, sollten die Zeilen geprüft werden, die in der dritten Spalte mit "E" markiert sind
    • Es wird darauf hingewiesen, dass Fragen und Logdateien eingesendet werden können
  • PumpkinOS unterstützt Drag & Drop
    • Wird eine PalmOS-PRC-Datei auf das Fenster gezogen, wird sie installiert und im Launcher angezeigt
    • Alternativ kann die PRC direkt in das Verzeichnis vfs/app_install kopiert und PumpkinOS anschließend neu gestartet werden
  • Auf Wunsch kann unter Windows, Linux und WSL2 mit gdb debuggt werden
    • Unter Windows wird die letzte Zeile von pumpkin.bat wie folgt geändert
gdb.exe --args .\\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\\script\\pumpkin.lua
  • Unter Linux und WSL2 wird die letzte Zeile von pumpkin.sh wie folgt geändert
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua

1 Kommentare

 
GN⁺ 2024-04-08
Hacker-News-Kommentare
  • Ich war im Computer History Museum in Mountain View und fühlte mich plötzlich alt, als ich einen Palm Pilot in einer Vitrine sah.
    Es sollte verboten sein, etwas auszustellen, das noch vor kaum 30 Jahren ein wichtiger Teil meines Lebens war, als hätte man es aus den Ruinen einer antiken Zivilisation ausgegraben. So unfair.

    • Ich habe meinen ursprünglichen PalmPilot immer noch in einer Kiste auf dem Dachboden. Seine bloße Existenz war eine große Lektion fürs Leben.
      Ich hatte damals meinen Chef gebeten, mir einen zu kaufen, und er hat es tatsächlich getan. Aber er sagte: „Benutzt du im Moment überhaupt irgendetwas, um dein Leben und deine Projekte zu organisieren? Wenn nicht, dann wird dir auch ein PalmPilot nicht helfen.“
      Er hatte absolut recht.
    • Vor ein paar Monaten habe ich auf Reddit einen Beitrag gesehen, in dem jemand den alten Game Boy seines Großvaters gefunden hatte.
    • Im Computer History Museum ist auch eine Dreamcast ausgestellt, und das hat mich noch viel mehr getroffen.
      Irgendwo in meinem Gehirn gibt es immer noch eine ungelöste Traumastelle aus der Teenagerzeit, die darauf wartet, dass die Dreamcast ihr großes Comeback feiert.
    • Im Science Museum in London gibt es einen Ausstellungsraum mit Mobiltelefonen, Computern und Konsolen.
      Es macht großen Spaß, dort mit dem Partner auf all die Geräte zu zeigen, die man im Lauf der Jahre besessen hat, und es ist wirklich schön, sie wiederzusehen.
    • Ich habe immer noch einen Visor mit VisorPhone-Modul. Man könnte ihn als das erste reine Touch-Smartphone betrachten, fünf Jahre vor dem iPhone :)
      Er war groß, klobig und ziemlich unpraktisch, aber die vollständig integrierte Erfahrung mit Palm Desktop war extrem nahtlos. Später habe ich unter Linux jPilot benutzt.
  • Das PumpkinOS-Projekt ist wirklich beeindruckend. Ich kann mir kaum vorstellen, wie viel Arbeit es gewesen sein muss, mit allen Systemaufrufen kompatibel zu sein, die normale Palm-Apps erwarten.
    Ich erinnere mich noch daran, dass Palm bei der Speicherverwaltung ziemlich seltsame Dinge gemacht hat. Etwas größere Daten mussten in spezielle Speicherblöcke gelegt werden, die das Betriebssystem nach Belieben verschieben konnte, und wenn man während des Zugriffs Stabilität brauchte, musste man den Handle dieses Blocks sperren.
    So etwas in PumpkinOS zu implementieren, dürfte schwierig und gleichzeitig spannend gewesen sein. Ich habe früher kleine Spiele für Palm OS geschrieben und mich damals sehr auf die nächste OS-Version gefreut, mit der man Programme mit der neu erschienenen Palm OS Development Suite hätte erstellen können.
    Es war auch das letzte Betriebssystem mit einer zentralen Event-Loop in der App. Heute übernehmen UI-Frameworks das alles. Heute ist es einfacher, aber ich vermisse diese Art trotzdem.

    • Wenn man direkt mit der Win32 API arbeitet, ist Windows im Grunde immer noch so aufgebaut.
      Jedes GUI-Toolkit, das je gebaut wurde, läuft letztlich auf so einer Struktur hinaus, aber in den meisten modernen Toolkits sind diese Queue und Loop intern verborgen, sodass man ihre Existenz meist erst ahnt, wenn man auf den Debugger-Stack schaut oder etwas abstürzt.
    • Ich glaube, 16-Bit-Windows und das klassische Mac OS waren ähnlich aufgebaut.
      Auf Systemen ohne MMU musste man für Multitasking den laufenden Heap vermutlich fast zwangsläufig defragmentieren.
    • Auf moderner Hardware mit Gigabyte an RAM ist so eine Implementierung im Vergleich zu den 2 MB eines Palm Pilot III sehr einfach.
      Man benutzt einfach malloc, verschiebt den Speicher nicht und macht das Sperren und Entsperren solcher Blöcke zu No-Op-Operationen.
      Wenn es einen OS-Aufruf gibt, der den Sperrstatus prüft, muss man das zwar irgendwo speichern, aber auch das ist nicht schwierig. Das damalige Modell originalgetreu umzusetzen, ist also weniger schwer, sondern macht eher die Nutzungsseite komplizierter.
    • Der Vorteil moderner Hardware ist, dass der Speicher praktisch keine große Einschränkung mehr darstellt.
      Man kann komplexe APIs mit beliebig großen Speicherblöcken umsetzen, und 128 MB RAM sind nach heutigen Maßstäben winzig.
    • Ich habe Palm-Spiele wirklich geliebt. Die Mobile Games von damals waren die besten, moderne Spiele kommen da überhaupt nicht heran.
  • Als weiteres sehenswertes Projekt gibt es auch rePalm. Das ist ein Projekt, das PalmOS auf ARM-Mikrocontrollern wie dem RP2040 ausführt: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm

  • Ich freue mich jetzt schon darauf, ein paar Stunden mit Space Trader zu verlieren.
    Ich hatte in der Mittelstufe ein Palm Vx und habe gute Erinnerungen daran, das Spiel im Unterricht unter dem Tisch zu spielen.

    • Ich habe mit Peter Spronck zusammengearbeitet und den letzten Zusatzinhalt sowie einige Quests für Space Trader erstellt. Zum Beispiel The Scarab.
      Ich vermisse diese Zeit.
    • In meiner Garage stehen zwei Palm Vx. Ich liebe dieses Spiel auch wirklich.
  • Beim Lesen dieses Titels begann mein Herz schneller zu schlagen. Ich würde es gern auf Android zum Laufen bringen, um mein Haupttelefon zu „ersetzen“ und in bessere Zeiten zurückzukehren.

    • Ich vermisse immer noch die Kalender- und Kontakte-Apps von Palm.
      Ich habe Palm bis zum Centro benutzt und seitdem keine Kontakte-/Kalender-App mehr gefunden, die mir so gut gefällt wie die Palm-Version. Sie war schlicht, und heutigen Apps fehlen entweder grundlegende Funktionen oder die UI ist unnötig kompliziert.
    • Wenn man das Ganze als Wasm laufen lässt, könnte man Palm-Apps überall ausführen.
      Das wäre so ähnlich, wie Leute heute ganz ernsthaft DOS-Apps in einer Webseite laufen lassen.
    • Man könnte Graffiti verwenden.
      https://play.google.com/store/apps/details?id=com.access_com...
    • Da es SDL verwendet, dürfte das Portieren einfach sein.
  • Früher hatte ich investiert, weil ich dachte, Palm würde am Ende so etwas wie das iPhone bauen.
    Leider hat Palm das nicht geschafft, und als Apple es tat, war Palm erledigt.

    • Palm hatte die Treo-Reihe.
      Man kann letztlich auch sagen, dass Palm an seinem frühen Erfolg und dem riesigen Ökosystem aus Shareware- und Freeware-Tools zugrunde ging.
      Palm OS wirkte mit seinem Single-Thread-Modell, der vollständigen RAM-Residenz und dem Fehlen von virtuellem Speicher bereits veraltet, also musste man etwas Neues versuchen; damit hätte man aber zwangsläufig langjährige Fans verprellt, die auf die bestehende Softwarebibliothek angewiesen waren.
      Dieses Henne-Ei-Problem wurde nie wirklich gelöst, und auch die Trennung von OS und Hardware, Abspaltungen wie Handspring und spätere Wiederzusammenführungen halfen nicht. Cobalt OS schaffte es nie auf echte Geräte, und das Pre war ein ambitionierter Neustart, hätte es aber wohl selbst bei einem früheren Erscheinen schwer gehabt, gegen das iPhone zu bestehen.
    • Eines der großen Probleme war, dass Palm in die Softwarefirma PalmSource und die Hardwarefirma Palm One aufgespalten wurde.
      PalmSource entwarf ein Linux-basiertes OS, wurde dann übernommen und verschwand, während Palm One sich wieder in Palm umbenannte und frühe Smartphones auf Basis von PalmOS baute.
      Zu diesem Zeitpunkt war PalmOS jedoch bereits ziemlich in die Jahre gekommen und lief als 16-Bit-App-Schicht auf einem 32-Bit-OS.
      Danach entwickelte Palm webOS, traf aber merkwürdige Hardwareentscheidungen und konnte weder mit iPhone noch mit Android konkurrieren. Trotzdem hätte es eher ein Wettbewerber sein können als Blackberry oder Nokia, die den Wechsel zu kapazitiven Displays verpassten.
      Palms Problem war, dass es zu spät kam, aber selbst ohne die Aufspaltung hätte ein Nachfolger für PalmOS den Trend zu kapazitiven Smartphones wohl ebenfalls verpasst.
    • Soweit ich gehört habe, lag ein Teil der Schuld auch bei den Mobilfunkanbietern. Anfangs wollten sie die Treo-Reihe nicht einmal führen, wenn sie nicht einschränken konnten, was Handspring mit dem Treo machen durfte.
      Apple hatte den iPod und, noch wichtiger, Kunden. Apple konnte diese Kunden zu den Providern bringen und deshalb mehr Vorgaben machen.
      In https://www.youtube.com/watch?v=b9_Vh9h3Ohw ist die Stelle, die ich meine, ungefähr bei Minute 20.
    • Ich habe die gesamte Handspring/Palm-Smartphone-Reihe benutzt: Visor + Visor Phone, Treo 270, Treo 600, Treo 650 und zuletzt das Palm Pré.
      Es war kein iPhone, aber als Arbeitsgerät extrem effizient.
    • Über die GPL-Lizenz hier musste ich lachen. Ich glaube kaum, dass ein echtes Kommerzialisierungsrisiko besteht.
  • Was wäre nötig, um das auf moderner Telefon-Hardware oder zumindest auf Hardware von vor einer Generation zum Laufen zu bringen?
    Es scheint, als könnte es mit enormer Einfachheit und absurd langer Akkulaufzeit das meiste tun, was wir wollen. Wahrscheinlich könnte es sogar ein PinePhone wie einen Rolls-Royce wirken lassen.

    • Laut README läuft es nativ auf ARM, wirkt aber eher wie ein Programm als wie ein Betriebssystem.
      Wenn man den GUI-Code für die jeweiligen Plattform-Frameworks neu schreiben würde, ließe es sich wahrscheinlich für Android oder iOS aktualisieren, aber daraus ein bootfähiges OS zu machen, sieht deutlich schwieriger aus.
      Der Autor hat letztes Jahr einen Beitrag darüber geschrieben, wie man mit einem minimalistischen x86-Kernel und QEMU ein bootfähiges OS daraus macht; das ließe sich vermutlich auch für ARM-Geräte wiederverwenden [1].
      https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
    • In moderne mobile Betriebssysteme dürfte ruhig mehr Arbeit in Optimierung und Stabilisierung fließen.
  • Ebenfalls sehenswert ist CloudpilotEmu, ein Palm-Emulator, der im Browser läuft.
    https://cloudpilot-emu.github.io/
    Ich war wirklich glücklich, als ich es installieren und wieder Vexed spielen konnte.

    • Cloudpilot ist erstaunlich. Es ist eine der ausgefeiltesten PWAs, die ich kenne.
      Von Vexed hatte ich noch nicht gehört, aber bei mir war ich einfach froh, dass Space Trader zurück war.
  • Ich war seit dem Beginn der Palm-Handy-Ära Sprint-Kunde.
    Bis vor zwei Jahren habe ich sogar noch ein farbiges Treo als Telefon benutzt, und diese physische Tastatur war wirklich großartig zu bedienen. Meine Finger sind leicht deformiert, deshalb sind Touchscreens schwierig für mich.
    Durch die Fusion mit T-Mobile wurde der Mobilfunkteil unbrauchbar, und ich finde es wirklich schade, dass das verschwunden ist.

    • Klingt, als hätten wir früher zusammengearbeitet.
      Als das iPhone etwa sechs Monate auf dem Markt war und auch Android-Handys auftauchten, sagte ich, das Pre sei ein „iPhone-Killer“.
      Nachdem ich dem ersten iPhone-Nutzer der Abteilung Funktionen des Pre gezeigt hatte, die im Vergleich gar nicht so spektakulär waren, sagte ich ihm, Palms Millionen Nutzer würden es mir zeigen.
      Und das haben sie auch sehr deutlich getan.
  • Es ist schön, dass dieses Projekt die Lebensdauer von Software verlängert, die sonst wohl nie wieder eine Chance gehabt hätte, ausgeführt zu werden.
    Aber ich frage mich, ob das an Nostalgie liegt oder an einem echten Bedarf oder Wunsch nach dieser Software.
    Es gibt viele Geschichten von Leuten, die Palm, Blackberry oder Psion vermissen, aber wollen wir außerhalb spezieller Anwendungsfälle wirklich dorthin zurück? Ich weiß, dass IMAX einen Palm-Emulator braucht, um einen Teil seines Stacks auszuführen.
    Als ich nach einem „modernen“ Psion 5 suchte, stieß ich darauf, dass ein Teil des damaligen Teams das Android-basierte Gemini PDA gebaut hat. Einige Rezensenten sahen genau das eindeutig als Nachteil.
    Ein neues EPOC-Betriebssystem mit moderner Konnektivität klingt für diese Leute eindeutig nach einem Erfolg, aber wenn ich ehrlich darüber nachdenke, würde ich darauf vermutlich hauptsächlich Linux laufen lassen. Vorausgesetzt, man könnte noch ein neues Gerät mit britischer Tastatur aus Restbeständen finden.
    Aber wollen wir das wirklich? In den letzten mehr als 20 Jahren hat es viele Fortschritte gegeben, und wenn man den meisten Menschen PalmOS statt Android oder iOS für den Alltag gäbe, würden sie es wohl innerhalb einer Woche frustriert zurückgeben.
    Welche entscheidende Funktion würde dieses Urteil widerlegen?

    • Akkulaufzeit von mehreren Wochen, einfacheres App-Design und ich vermisse Tasten für Bild auf/Bild ab.