1 points par GN⁺ 2024-04-08 | 1 commentaires | Partager sur WhatsApp
  • PumpkinOS est une réimplémentation de PalmOS qui fonctionne sur des architectures modernes comme x86 et ARM, et peut exécuter des applications PalmOS m68K sans ROM PalmOS
  • L’application lancée par défaut est Launcher ; Preferences est destiné à regrouper les options de configuration, et Command est pour l’instant proposé comme shell de commande encore expérimental
  • Cette version inclut quatre applications PIM de PalmOS : AddressBook, MemoPad, ToDoList, DateBook ; leur code source, autrefois distribué avec le PalmOS SDK, a été adapté pour être compilé dans PumpkinOS
  • Les enregistrements d’AddressBook et de MemoPad semblent compatibles avec leurs équivalents PalmOS, mais ceux de ToDoList et DateBook ne le sont pas en raison de différences de word size et d’endianness
  • L’ensemble du projet reste à un stade expérimental : certaines fonctions n’ont pas du tout été testées, et le build Emscripten peut poser des problèmes comme le rendu logiciel, une forte utilisation CPU ou le blocage du navigateur

Objectifs et périmètre de PumpkinOS

  • PumpkinOS est un projet de réimplémentation de PalmOS sur des architectures modernes
    • Les architectures visées incluent x86, ARM, etc.
    • Contrairement à un émulateur PalmOS classique, aucune ROM PalmOS n’est nécessaire
    • Il peut exécuter des applications PalmOS m68K
  • Une collection d’articles couvrant différents aspects de PumpkinOS est disponible dans la catégorie PalmOS sur WordPress

Applications de base et état actuel

  • Launcher est l’application exécutée en premier au démarrage de PumpkinOS
    • Elle affiche un panneau permettant de lancer d’autres applications
  • Preferences a vocation à regrouper à terme les options de configuration de PumpkinOS
  • Command est un shell de commande encore expérimental

Applications PIM PalmOS incluses

  • Cette version inclut quatre applications PIM de PalmOS
    • AddressBook
    • MemoPad
    • ToDoList
    • DateBook
  • Le code source de ces applications avait été distribué dans un ou plusieurs PalmOS SDK et a été modifié pour se compiler correctement dans PumpkinOS
  • La compatibilité des enregistrements varie selon l’application
    • Les enregistrements créés dans AddressBook et MemoPad semblent compatibles avec les applications PalmOS correspondantes
    • Les enregistrements créés dans ToDoList et DateBook ne sont pas compatibles en raison de différences de word size et d’endianness
  • La portée des tests reste limitée
    • Les tests se sont limités à la création et à l’édition de quelques enregistrements
    • Certains comportements anormaux subsistent
    • Certaines fonctions n’ont pas été testées du tout
  • L’objectif actuel est surtout de donner un aperçu de ce à quoi PumpkinOS pourrait ressembler à l’avenir

Licence

  • PumpkinOS est distribué sous licence GPL v3
  • Le répertoire license contient les informations de licence individuelles des différents composants utilisés par PumpkinOS
  • Le projet invite à signaler toute information de licence manquante ou incorrecte

Méthode de build

  • PumpkinOS doit être compilé depuis les sources
    • Aucun IDE n’est nécessaire
    • La compilation peut se faire en ligne de commande
  • Windows, Linux, WSL2

    • Sur Windows 64 bits, il est possible d’utiliser MSYS2
    • Installer les paquets supplémentaires dans un terminal MINGW64
    pacman -S gcc binutils make git
    
    • Sur un OS 64 bits basé sur Linux, gcc, binutils, make et git sont requis
    • Sous Linux, il faut aussi installer le paquet de développement SDL2
    • Sur les distributions de type Debian, utiliser la commande suivante
    sudo apt install gcc binutils make git libsdl2-dev
    
    • Sur Windows 11 et les versions récentes de Windows 10, il est aussi possible de compiler via WSL2
    • Il suffit de suivre dans le terminal WSL2 les instructions de build Linux
  • Procédure de build commune

    • Cloner le dépôt
    git clone https://github.com/migueletto/PumpkinOS.git
    
    • Aller dans le répertoire source puis exécuter make
    cd PumpkinOS/src
    make
    
    • Si le build réussit, les artefacts suivants sont générés
    • L’exécutable pumpkin dans le répertoire racine
    • Les bibliothèques dynamiques dans le répertoire bin
    • Les fichiers PRC dans le répertoire vfs/app_install

Build Emscripten et exécution web

  • Il est possible de compiler expérimentalement avec Emscripten
    • La procédure d’installation d’Emscripten ne relève pas du périmètre du README
cd PumpkinOS/src
make OSNAME=Emscripten
  • Cette commande génère pumpkin.zip dans le dossier src/emscripten
    • Ce fichier zip contient les fichiers nécessaires pour déployer PumpkinOS sur un serveur web
  • Avec le serveur web standard apache2 sous Linux, une procédure d’exemple serait la suivante
    • Créer le dossier /var/www/html/pumpkin
    • Y extraire le contenu du fichier zip
    • Ouvrir /pumpkin/pumpkin.html dans le navigateur depuis le serveur local pour afficher PumpkinOS
  • Il est également possible de lancer un serveur web Python depuis le répertoire source Emscripten
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
  • Ce build reste très expérimental et présente plusieurs limitations
    • Selon l’OS, le navigateur et l’intégration GPU, il peut basculer de manière inattendue en rendu logiciel
    • Une forte utilisation CPU et des blocages du navigateur peuvent survenir
    • Si le navigateur est lancé en mode privé, l’application ne s’exécute pas
    • Depuis un serveur autre que localhost, l’accès en HTTP au lieu de HTTPS empêche le chargement

Exécution, installation et débogage

  • Sur Windows 64 bits, exécuter pumpkin.bat
  • Sous Linux ou WSL2, exécuter pumpkin.sh
  • Au lancement, PumpkinOS s’ouvre dans une nouvelle fenêtre
  • À l’exécution, tous les PRC présents dans vfs/app_install sont supprimés puis décompressés dans des dossiers du répertoire vfs/app_storage
  • À ce stade, l’ensemble reste expérimental, donc divers problèmes peuvent survenir
  • Qu’il démarre correctement ou non, un fichier pumpkin.log est créé dans le répertoire racine
    • En cas de problème, vérifier dans ce fichier les lignes dont la troisième colonne est marquée "E"
    • Le projet indique qu’il est possible d’envoyer des questions ainsi que le fichier log
  • PumpkinOS prend en charge le Drag & Drop
    • Si vous déposez un fichier PRC PalmOS sur la fenêtre, il est installé et apparaît dans Launcher
    • Il est aussi possible de copier directement le PRC dans le répertoire vfs/app_install, puis de redémarrer PumpkinOS
  • Si nécessaire, le débogage avec gdb est possible sous Windows, Linux et WSL2
    • Sous Windows, modifier la dernière ligne de pumpkin.bat comme suit
gdb.exe --args .\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\script\pumpkin.lua
  • Sous Linux et WSL2, modifier la dernière ligne de pumpkin.sh comme suit
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua

1 commentaires

 
GN⁺ 2024-04-08
Avis de Hacker News
  • Je suis allé au Computer History Museum de Mountain View et, en voyant un Palm Pilot dans une vitrine, j’ai pris un sacré coup de vieux.
    Exposer un objet qui faisait partie intégrante de ma vie il y a à peine une trentaine d’années comme s’il avait été exhumé des vestiges d’une civilisation antique devrait être illégal. C’est vraiment trop injuste.

    • J’ai encore mon PalmPilot d’origine dans une boîte au grenier. Son existence même a été une grande leçon de vie.
      À l’époque, j’avais demandé à mon patron de m’en acheter un, et il l’a effectivement fait, mais il m’a dit : « Est-ce que tu utilises déjà quelque chose pour organiser ta vie et tes projets ? Si ce n’est pas le cas, je ne pense pas qu’un PalmPilot t’aidera non plus. »
      Il avait complètement raison.
    • Il y a quelques mois, j’ai vu sur Reddit quelqu’un dire qu’il avait retrouvé le vieux Game Boy de son grand-père.
    • Il y a aussi une Dreamcast exposée au Computer History Museum, et ça m’a bien plus dérangé.
      Il reste dans un coin de mon cerveau une sorte de traumatisme non résolu d’adolescent qui attend encore le grand retour de la Dreamcast.
    • Au Science Museum de Londres, il y a une salle d’exposition remplie de téléphones portables, d’ordinateurs et de consoles.
      Avec mon partenaire, on s’amuse beaucoup à pointer un par un les appareils que nous avons possédés, et c’est vraiment un plaisir de les revoir.
    • J’ai encore un Visor avec le module VisorPhone. On peut le voir comme le premier smartphone entièrement tactile, cinq ans avant l’iPhone :)
      Il était gros, encombrant et assez peu pratique, mais l’expérience était très fluide grâce à son intégration complète avec Palm Desktop. Plus tard, j’ai utilisé jPilot sous Linux.
  • Le projet PumpkinOS est vraiment impressionnant. J’ai du mal à imaginer la quantité de travail nécessaire pour le rendre compatible avec tous les appels système qu’une application Palm classique pouvait attendre.
    Je me souviens que Palm faisait des choses assez étranges dans sa gestion de la mémoire. Les données un peu volumineuses devaient être placées dans des blocs mémoire spéciaux que le système d’exploitation pouvait déplacer à sa guise, et il fallait verrouiller le handle de ce bloc pour qu’il reste stable pendant qu’on y accédait.
    Implémenter tout cela dans PumpkinOS a dû être à la fois difficile et amusant. J’avais créé quelques petits jeux pour Palm OS à l’époque, et j’attendais vraiment avec impatience la version suivante de l’OS qui devait permettre de programmer avec le tout nouveau Palm OS Development Suite.
    C’était aussi l’un des derniers OS où les apps avaient une boucle d’événements centrale. Aujourd’hui, les frameworks UI gèrent tout à notre place. C’est plus simple maintenant, mais cette approche me manque quand même.

    • Si on utilise directement l’API Win32, Windows fonctionne encore comme ça.
      Tous les toolkits GUI jamais créés reposent finalement sur cette structure, mais dans la plupart des toolkits modernes, cette file et cette boucle sont cachées en interne, et on ne devine leur existence qu’en regardant la pile dans un débogueur ou quand quelque chose plante.
    • J’imagine que Windows 16 bits et le Mac OS classique fonctionnaient plus ou moins de la même façon.
      Pour faire du multitâche sur un système sans MMU, la compaction du tas pendant l’exécution devait être pratiquement indispensable.
    • Le matériel moderne dispose de gigaoctets de RAM, donc ce genre d’implémentation est très simple comparé aux 2 Mo du Palm Pilot III.
      Il suffit d’utiliser malloc, de ne pas déplacer la mémoire, et de faire des opérations de verrouillage et de déverrouillage de ces blocs des no-op.
      S’il existe un appel système pour vérifier l’état de verrouillage, il faut le stocker quelque part, mais ce n’est pas difficile non plus. Implémenter le comportement exactement comme à l’époque n’est pas vraiment difficile ; cela rend surtout la vie plus compliquée côté utilisateur.
    • L’avantage du matériel moderne, c’est qu’on n’est pas vraiment limité par la mémoire.
      On peut implémenter une API complexe avec des blocs mémoire aussi gros qu’on veut, et une capacité comme 128 Mo de RAM est minuscule selon les standards actuels.
    • J’adorais les jeux Palm. Les jeux mobiles de cette époque étaient les meilleurs ; les jeux modernes ne leur arrivent pas à la cheville.
  • Un autre projet à voir est rePalm. Il permet d’exécuter PalmOS sur des microcontrôleurs ARM comme le RP2040 : http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm

  • Je me réjouis déjà à l’idée de perdre quelques heures sur Space Trader.
    Au collège, j’avais un Palm Vx, et j’en garde de bons souvenirs : j’y jouais sous le bureau pendant les cours.

    • J’ai travaillé avec Peter Spronck sur le dernier contenu additionnel et quelques quêtes de Space Trader, comme The Scarab.
      Cette époque me manque.
    • J’ai deux Palm Vx dans le garage. Moi aussi, j’adorais ce jeu.
  • Mon cœur s’est emballé en lisant ce titre. J’aimerais le voir tourner sur Android, pour « remplacer » mon téléphone principal et revenir à une époque meilleure.

    • Les apps calendrier et contacts de Palm me manquent encore.
      J’ai continué à utiliser Palm jusqu’au Centro, et depuis, je n’ai jamais trouvé d’app de contacts/calendrier qui me plaise autant que la version Palm. Soit il manque des fonctions simples et essentielles, soit l’UI est inutilement compliquée.
    • Si on faisait tourner tout ça en Wasm, on pourrait exécuter les apps Palm partout.
      Ce serait un peu comme les gens qui exécutent sérieusement des apps DOS dans une page web.
    • On peut utiliser Graffiti.
      https://play.google.com/store/apps/details?id=com.access_com...
    • Comme il utilise SDL, le portage devrait être facile.
  • À l’époque, j’avais investi en pensant que Palm finirait par fabriquer un truc du genre iPhone
    Malheureusement, Palm n’y est pas parvenu, et quand Apple l’a fait, Palm était fini

    • Palm avait la gamme Treo
      On peut aussi considérer que ce qui a fini par faire tomber Palm, c’est son succès initial et l’énorme écosystème d’outils shareware/freeware
      Palm OS commençait à accuser son âge : un OS monothread, résident en RAM, sans mémoire virtuelle. Il fallait donc tenter quelque chose de nouveau, mais cela revenait forcément à aliéner les vieux fans qui utilisaient la bibliothèque logicielle existante
      Ils n’ont jamais réussi à résoudre ce problème de la poule et de l’œuf, et la séparation entre OS et matériel, les spin-offs comme Handspring puis la réunification n’ont pas aidé. Cobalt OS n’a jamais été livré sur un appareil réel, et le Pre était un nouveau départ ambitieux, mais même s’il était sorti plus tôt, il aurait eu du mal à lutter contre l’iPhone
    • L’un des gros problèmes a été la scission de Palm entre PalmSource, la société logicielle, et Palm One, la société matérielle
      PalmSource a conçu un OS basé sur Linux avant d’être racheté puis de disparaître, tandis que Palm One s’est rebaptisé Palm et a fabriqué les premiers smartphones basés sur PalmOS
      Mais à ce moment-là, PalmOS était déjà assez daté, et faisait tourner des apps 16 bits sur un OS 32 bits
      Par la suite, Palm a créé webOS, mais a pris des décisions matérielles étranges et n’a pas réussi à rivaliser avec l’iPhone et Android. Cela dit, il aurait pu être un concurrent plus sérieux que Blackberry ou Nokia, qui ont raté le virage des écrans capacitifs
      Le problème de Palm, c’est qu’il était trop tard, mais s’ils n’avaient pas été séparés et avaient créé un successeur à PalmOS, je pense qu’ils auraient quand même raté la vague des smartphones capacitifs
    • J’ai entendu dire que les opérateurs avaient aussi une part de responsabilité. Au début, ils étaient même réticents à distribuer la gamme Treo si Handspring n’acceptait pas de limiter ce qu’elle pouvait faire avec le Treo
      Apple avait l’iPod et, plus important encore, des clients. Comme Apple pouvait amener ces clients aux opérateurs, l’entreprise pouvait imposer davantage de choses
      Dans https://www.youtube.com/watch?v=b9_Vh9h3Ohw, le passage dont je parle se situe vers la 20e minute
    • J’ai utilisé toute la gamme de smartphones Handspring/Palm : Visor + Visor Phone, Treo 270, Treo 600, Treo 650, et enfin jusqu’au Palm Pré
      Ce n’était pas un iPhone, mais comme outil de travail, c’était extrêmement efficace
    • J’ai souri en voyant ici la licence GPL. Difficile d’y voir un risque de commercialisation, il me semble
  • Que faudrait-il pour porter ça sur du matériel de téléphone moderne, ou même de la génération précédente ?
    Avec une simplicité incroyable et une autonomie délirante, ça pourrait faire la plupart de ce que nous voulons. Ça pourrait probablement même donner l’impression qu’un PinePhone est une Rolls Royce

    • D’après le README, ça s’exécute nativement sur ARM, mais ça ressemble davantage à un programme qu’à un OS
      En réécrivant le code de l’interface graphique avec les frameworks de chaque plateforme, on pourrait sans doute le mettre à jour pour le faire tourner sur Android ou iOS, mais en faire un OS amorçable semble plus difficile
      L’auteur a écrit l’an dernier un billet sur la manière d’en faire un OS amorçable avec un noyau x86 minimal et QEMU, donc cela pourrait probablement être réutilisé pour des appareils ARM [1]
      https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
    • Les systèmes d’exploitation mobiles modernes gagneraient à recevoir davantage d’efforts d’optimisation et de stabilisation
  • À voir aussi : CloudpilotEmu, un émulateur Palm qui tourne dans le navigateur
    https://cloudpilot-emu.github.io/
    J’étais vraiment heureux quand j’ai pu l’installer et rejouer à Vexed

    • Cloudpilot est impressionnant. C’est l’une des PWA les plus sophistiquées que je connaisse
      Je n’avais jamais entendu parler de Vexed, mais dans mon cas, j’étais vraiment ravi de retrouver Space Trader
  • J’ai été client Sprint depuis le début de l’ère des téléphones Palm
    Jusqu’à il y a deux ans, j’utilisais encore un Treo couleur comme téléphone, et son clavier physique était vraiment agréable à utiliser. Mes doigts sont légèrement déformés, ce qui rend les écrans tactiles difficiles pour moi
    La fusion avec T-Mobile a bloqué la partie communications sans fil, et je suis vraiment triste de le voir disparaître

    • On dirait quelqu’un avec qui j’ai travaillé autrefois
      Environ six mois après la sortie de l’iPhone, quand les téléphones Android étaient aussi apparus, il disait que le Pre était un « tueur d’iPhone »
      Après avoir montré au premier utilisateur d’iPhone du service des fonctionnalités du Pre qui n’étaient pas si extraordinaires en comparaison, il a dit que les millions d’utilisateurs de Palm allaient me montrer
      Et effectivement, ils l’ont bien montré
  • C’est une bonne chose que ce projet existe et prolonge la durée de vie de logiciels qui n’auraient probablement plus jamais eu l’occasion de s’exécuter
    Mais je me demande si c’est par nostalgie, ou s’il existe un besoin ou une envie réelle pour ces logiciels
    On entend beaucoup de récits de nostalgie autour de Palm, Blackberry et Psion, mais veut-on vraiment revenir en arrière, en dehors d’usages spécialisés ? Je sais qu’IMAX a besoin d’un émulateur Palm pour faire tourner une partie de sa stack
    En cherchant un Psion 5 « moderne », j’ai vu qu’une partie de l’équipe liée avait créé le Gemini PDA basé sur Android. Certains testeurs considéraient clairement cela comme un défaut
    Un nouvel OS EPOC avec une connectivité moderne leur semblerait manifestement être un succès assuré, mais en y réfléchissant, je me suis dit que je ferais surtout tourner Linux dessus. À condition de trouver un modèle neuf en stock avec un clavier britannique
    Mais est-ce vraiment ce que nous voulons ? Il y a eu beaucoup de progrès ces plus de 20 dernières années, et si l’on donnait à la plupart des gens PalmOS à la place d’Android ou d’iOS pour un usage quotidien, ils le rendraient probablement au bout d’une semaine, frustrés
    Quelle serait la fonction décisive qui rendrait ce jugement faux ?

    • Une autonomie de plusieurs semaines, une conception d’apps plus simple, et les boutons page haut/page bas me manquent