1 puntos por GN⁺ 2024-04-08 | 1 comentarios | Compartir por WhatsApp
  • PumpkinOS es una reimplementación de PalmOS que se ejecuta en arquitecturas modernas como x86 y ARM, y permite ejecutar aplicaciones PalmOS m68K sin una ROM de PalmOS
  • La aplicación que se ejecuta por defecto es Launcher; Preferences planea incluir opciones de configuración, y Command se ofrece por ahora como un shell de comandos experimental
  • Esta versión incluye cuatro aplicaciones PIM de PalmOS: AddressBook, MemoPad, ToDoList y DateBook; el código fuente distribuido con el SDK de PalmOS fue modificado para compilarse en PumpkinOS
  • Los registros de AddressBook y MemoPad parecen ser compatibles con sus apps equivalentes de PalmOS, pero los registros de ToDoList y DateBook no son compatibles debido a diferencias de word size y endianness
  • Todo el proyecto todavía está en fase experimental; algunas funciones no se han probado en absoluto, y la compilación con Emscripten también puede presentar problemas como renderizado por software, alto uso de CPU y bloqueo del navegador

Objetivos y alcance de PumpkinOS

  • PumpkinOS es un proyecto que reimplementa PalmOS en arquitecturas modernas
    • Las arquitecturas objetivo incluyen x86, ARM, entre otras
    • A diferencia de los emuladores típicos de PalmOS, no requiere una ROM de PalmOS
    • Puede ejecutar aplicaciones PalmOS m68K
  • Una colección de artículos sobre varios aspectos de PumpkinOS puede verse en la categoría PalmOS de WordPress

Aplicaciones básicas y estado actual

  • Launcher es la primera app que se ejecuta cuando inicia PumpkinOS
    • Muestra un panel desde el que se pueden iniciar otras aplicaciones
  • Preferences está pensada para contener opciones de configuración de PumpkinOS a largo plazo
  • Command es un shell de comandos y todavía es experimental

Apps PIM de PalmOS incluidas

  • Esta versión incluye cuatro apps PIM de PalmOS
    • AddressBook
    • MemoPad
    • ToDoList
    • DateBook
  • El código fuente de estas apps fue distribuido con uno o más SDK de PalmOS, y fue modificado para compilarse correctamente en PumpkinOS
  • La compatibilidad de registros varía según la app
    • Los registros creados en AddressBook y MemoPad parecen ser compatibles con las apps equivalentes de PalmOS
    • Los registros creados en ToDoList y DateBook no son compatibles debido a diferencias de word size y endianness
  • El alcance de las pruebas es limitado
    • Solo se probó hasta el punto de crear y editar algunos registros
    • Todavía hay algunos comportamientos anómalos
    • Algunas funciones no se han probado en absoluto
  • El objetivo actual es mostrar una vista previa de cómo podría ser PumpkinOS en el futuro

Licencia

  • PumpkinOS tiene licencia GPL v3
  • El directorio license contiene la información de licencia individual de varios componentes usados por PumpkinOS
  • Se solicita avisar si falta información de licencia o si alguna es incorrecta

Cómo compilar

  • PumpkinOS debe compilarse desde el código fuente
    • No se necesita un IDE
    • Se puede compilar desde la línea de comandos
  • Windows, Linux, WSL2

    • En Windows de 64 bits se puede usar MSYS2
    • En la terminal MINGW64, instala los paquetes adicionales
    pacman -S gcc binutils make git
    
    • En sistemas operativos basados en Linux de 64 bits se requieren gcc, binutils, make y git
    • En Linux también se debe instalar el paquete de desarrollo de SDL2
    • En derivados de Debian, usa el siguiente comando
    sudo apt install gcc binutils make git libsdl2-dev
    
    • En Windows 11 y versiones recientes de Windows 10 también se puede compilar en WSL2
    • Desde la terminal de WSL2, sigue las instrucciones de compilación para Linux
  • Procedimiento común de compilación

    • Clona el repositorio
    git clone https://github.com/migueletto/PumpkinOS.git
    
    • Entra al directorio de código fuente y ejecuta make
    cd PumpkinOS/src
    make
    
    • Si la compilación tiene éxito, se generan los siguientes artefactos
    • El ejecutable pumpkin en el directorio raíz
    • Las bibliotecas dinámicas en el directorio bin
    • Los archivos PRC en el directorio vfs/app_install

Compilación con Emscripten y ejecución web

  • De forma experimental, se puede compilar usando Emscripten
    • La instalación de Emscripten queda fuera del alcance del README
cd PumpkinOS/src
make OSNAME=Emscripten
  • Este comando genera pumpkin.zip dentro de la carpeta src/emscripten
    • Este archivo zip contiene los archivos necesarios para desplegar PumpkinOS en un servidor web
  • Si se usa el servidor web estándar apache2 en Linux, un procedimiento de ejemplo es el siguiente
    • Crear la carpeta /var/www/html/pumpkin
    • Descomprimir el archivo zip en esa carpeta
    • Abrir en el navegador /pumpkin/pumpkin.html en el servidor local para que se muestre PumpkinOS
  • También existe la opción de ejecutar un servidor web de Python desde el directorio fuente de Emscripten
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
  • Esta compilación todavía es muy experimental y tiene varias limitaciones
    • Según el sistema operativo, el navegador y el estado de integración de la GPU, puede hacer fallback inesperadamente a renderizado por software
    • Puede producir alto uso de CPU y bloqueo del navegador
    • La aplicación no se ejecuta si el navegador está en private mode
    • No carga si se accede desde un servidor que no sea localhost usando HTTP en lugar de HTTPS

Ejecución, instalación y depuración

  • En Windows de 64 bits, ejecuta pumpkin.bat
  • En Linux o WSL2, ejecuta pumpkin.sh
  • Al ejecutarlo, PumpkinOS se abre en una ventana nueva
  • Al iniciarse, se eliminan todos los PRC dentro de vfs/app_install y se expanden a carpetas dentro de vfs/app_storage
  • En el estado actual, en general es experimental, por lo que puede haber varios problemas
  • Independientemente de si la ejecución tiene éxito o no, se genera el archivo pumpkin.log en el directorio raíz
    • Si ocurre un problema, revisa las líneas marcadas con "E" en la tercera columna de este archivo
    • Se indica que se pueden enviar preguntas y el archivo de log
  • PumpkinOS soporta Drag & Drop
    • Si arrastras y sueltas un archivo PRC de PalmOS sobre la ventana, se instala y aparece en Launcher
    • También puedes copiar directamente el PRC al directorio vfs/app_install y luego reiniciar PumpkinOS
  • Si se desea, se puede depurar con gdb en Windows, Linux y WSL2
    • En Windows, cambia la última línea de pumpkin.bat por lo siguiente
gdb.exe --args .\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\script\pumpkin.lua
  • En Linux y WSL2, cambia la última línea de pumpkin.sh por lo siguiente
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua

1 comentarios

 
GN⁺ 2024-04-08
Opiniones de Hacker News
  • Fui al Computer History Museum en Mountain View y, al ver una Palm Pilot dentro de una vitrina, de golpe me sentí viejo.
    Debería ser ilegal exhibir algo que fue una parte importante de mi vida hace apenas unos 30 años como si lo hubieran desenterrado de las ruinas de una civilización antigua. Es demasiado injusto.

    • Todavía tengo mi PalmPilot original en una caja en el ático. Su mera existencia fue una gran lección de vida.
      En ese entonces le pedí a mi jefe que me la comprara, y de hecho lo hizo, pero me dijo: “¿Ahora estás usando algo para organizar tu vida y tus proyectos? Si no lo estás haciendo, no creo que la PalmPilot te ayude”.
      Tenía toda la razón.
    • Hace unos meses vi en Reddit una publicación de alguien que había encontrado el viejo Game Boy de su abuelo.
    • En el Computer History Museum también tienen una Dreamcast en exhibición, y eso me molestó mucho más.
      Todavía queda un rincón de mi cerebro, como un trauma no resuelto, que desde mi adolescencia sigue esperando que la Dreamcast tenga un gran regreso.
    • El Science Museum de Londres tiene una sala de exhibición con celulares, computadoras y consolas.
      Es muy divertido ir con mi pareja e ir señalando uno por uno los dispositivos que hemos tenido, y realmente da gusto volver a verlos.
    • Todavía tengo una Visor con el módulo VisorPhone. Podría considerarse el primer smartphone solo táctil, cinco años antes del iPhone :)
      Era grande, tosco y bastante poco práctico, pero la experiencia de integración completa con Palm Desktop era muy fluida. Más adelante usé jPilot en Linux.
  • El proyecto PumpkinOS es realmente impresionante. No me imagino cuánto esfuerzo habrá hecho falta para que fuera compatible con todas las llamadas del sistema que una app típica de Palm espera.
    Recuerdo que Palm hacía cosas bastante raras con el manejo de memoria. Los datos apenas un poco grandes tenían que ponerse en bloques de memoria especiales que el sistema operativo podía reubicar a voluntad, y para mantenerlos estables mientras se accedía a ellos había que bloquear el handle de ese bloque.
    Implementar todo eso en PumpkinOS debe haber sido difícil y divertido. Hace tiempo hice algunos jueguitos para Palm OS, y en ese entonces esperaba con muchas ganas la siguiente versión del OS que permitiría programar con la recién lanzada Palm OS Development Suite.
    También fue el último OS en el que las apps tenían un bucle central de eventos. Hoy los frameworks de UI se encargan de todo. Ahora es más fácil, pero aun así extraño ese enfoque.

    • Si usas directamente la API Win32, Windows todavía funciona de esa forma.
      Todos los toolkits GUI que se han creado terminan teniendo esa estructura, pero en la mayoría de los toolkits modernos esa cola y ese bucle están escondidos internamente, así que solo sospechas que existen cuando ves el stack en el depurador o cuando algo se cae.
    • Creo que ese enfoque también era parecido en Windows de 16 bits o en classic Mac OS.
      Para tener multitarea en sistemas sin MMU, probablemente la compactación del heap en tiempo de ejecución era casi imprescindible.
    • El hardware moderno tiene gigabytes de RAM, así que una implementación así es facilísima comparada con los 2 MB de una Palm Pilot III.
      Basta con usar malloc, no mover la memoria y hacer que bloquear y desbloquear esos bloques no haga nada.
      Si hay llamadas del OS para consultar el estado de bloqueo, habría que guardarlo en algún lado, pero eso tampoco es difícil. Implementarlo tal como se hacía en ese entonces no es tanto difícil como algo que complica a quien lo usa.
    • La ventaja del hardware moderno es que no está muy limitado por la memoria.
      Puedes implementar APIs complejas con bloques de memoria tan grandes como quieras, y algo como 128 MB de RAM hoy en día es muy poco.
    • Me encantaban los juegos de Palm. Los juegos móviles de esa época eran lo mejor; los juegos modernos no se comparan en absoluto.
  • Otro proyecto que vale la pena ver es rePalm. Es un proyecto para ejecutar PalmOS en microcontroladores ARM como el RP2040: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm

  • Ya estoy emocionado de pensar en perder unas cuantas horas jugando Space Trader.
    En la secundaria tenía una Palm Vx y guardo buenos recuerdos de jugarlo debajo del pupitre durante clase.

    • Trabajé con Peter Spronck en el último contenido adicional de Space Trader y en algunas misiones, como The Scarab.
      Extraño esos tiempos.
    • Tengo dos Palm Vx en el garaje. A mí también me encanta ese juego.
  • Leí este título y se me aceleró el corazón. Quiero que lo hagan funcionar en Android para poder “reemplazar” mi teléfono principal y volver a tiempos mejores.

    • Todavía extraño las apps de calendario y contactos de Palm.
      Seguí usando Palm hasta la Centro, y desde entonces no he encontrado una app de contactos/calendario que me guste tanto como la versión de Palm. O les faltan funciones simples y básicas, o la UI es innecesariamente complicada.
    • Si todo se ejecuta en Wasm, se podrían correr apps de Palm en cualquier lugar.
      Sería algo parecido a lo que pasa cuando la gente ejecuta seriamente apps de DOS dentro de una página web.
    • Se puede usar Graffiti.
      https://play.google.com/store/apps/details?id=com.access_com...
    • Como usa SDL, la portabilidad debería ser fácil.
  • Antes pensaba que Palm eventualmente crearía algo como el iPhone, y por eso invertí en la empresa
    Por desgracia, Palm no lo logró, y cuando Apple sí lo hizo, Palm quedó acabada

    • Palm tenía la línea Treo
      También se podría decir que lo que terminó derribando a Palm fue su éxito inicial y el enorme ecosistema de herramientas shareware/freeware
      Palm OS era un sistema operativo de un solo hilo, residente en RAM y sin memoria virtual, y ya se le notaban los años, así que necesitaban intentar algo nuevo; pero hacerlo inevitablemente habría alejado a los fans de siempre que usaban la biblioteca de software existente
      Nunca lograron resolver ese problema del huevo y la gallina, y tampoco ayudaron la separación entre OS y hardware, spin-offs como Handspring ni la posterior recombinación. Cobalt OS nunca llegó a dispositivos reales, y el Pre fue un nuevo comienzo ambicioso, pero incluso si hubiera salido antes, le habría costado competir contra el iPhone
    • Uno de los grandes problemas fue que Palm se dividió en la empresa de software PalmSource y la empresa de hardware Palm One
      PalmSource estaba diseñando un OS basado en Linux, pero fue adquirida y desapareció, mientras que Palm One volvió a cambiar su nombre a Palm y fabricó los primeros smartphones basados en PalmOS
      Pero para entonces PalmOS ya estaba bastante viejo, y estaba ejecutando apps de 16 bits sobre un OS de 32 bits
      Después Palm creó webOS, pero tomó decisiones raras de hardware y no pudo competir con iPhone y Android. Aun así, podría haber sido un competidor más serio que Blackberry o Nokia, que no lograron hacer bien la transición a pantallas capacitivas
      El problema de Palm fue que llegó demasiado tarde, pero si no se hubiera separado y hubiera creado un sucesor de PalmOS, creo que igual se habría perdido la ola de los smartphones capacitivos
    • Escuché que las operadoras también tuvieron parte de la culpa. Al principio, si no ponían límites a lo que Handspring podía hacer con el Treo, las operadoras ni siquiera querían ofrecer la línea Treo
      Apple tenía el iPod y, más importante aún, tenía clientes. Como Apple podía llevar esos clientes a las operadoras, podía imponer más condiciones
      En https://www.youtube.com/watch?v=b9_Vh9h3Ohw, la parte a la que me refiero está alrededor del minuto 20
    • Usé toda la línea de smartphones Handspring/Palm: Visor + Visor Phone, Treo 270, Treo 600, Treo 650 y, por último, hasta el Palm Pré
      No era un iPhone, pero como herramienta de trabajo era extremadamente eficiente
    • Me dio risa ver aquí la licencia GPL. No parece difícil pensar que el riesgo de comercialización es bajo
  • ¿Qué haría falta para llevar esto al hardware de un teléfono moderno, o incluso al de un teléfono de una generación anterior?
    Con una simplicidad enorme y una duración de batería ridícula, creo que podríamos hacer la mayoría de lo que queremos. Probablemente hasta podría hacer que un PinePhone se sintiera como un Rolls Royce

    • Según el README, corre de forma nativa en ARM, pero parece más un programa que un sistema operativo
      Si se reescribe el código de la GUI para los frameworks de cada plataforma, podría actualizarse para correr en Android o iOS, pero convertirlo en un OS booteable parece más difícil
      El autor escribió el año pasado un artículo sobre cómo convertirlo en un OS booteable usando un kernel x86 mínimo y QEMU, así que parece que eso podría reutilizarse también para dispositivos ARM [1]
      https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
    • Me gustaría que en los sistemas operativos móviles modernos se invirtiera más esfuerzo en optimización y estabilización
  • Algo relacionado para ver es CloudpilotEmu, un emulador de Palm que corre dentro del navegador
    https://cloudpilot-emu.github.io/
    Me alegró muchísimo poder instalarlo y volver a jugar Vexed

    • Cloudpilot es sorprendente. Es una de las PWA más sofisticadas que conozco
      No había oído hablar de Vexed, pero en mi caso me dio muchísima alegría que volviera Space Trader
  • Fui cliente de Sprint desde que empezó la era de los teléfonos Palm
    Hasta hace dos años seguía usando un Treo a color como teléfono, y ese teclado físico era realmente cómodo de usar. Tengo los dedos un poco deformados, así que las pantallas táctiles se me hacen difíciles
    La fusión con T-Mobile bloqueó la parte de comunicación inalámbrica, y me da mucha pena que desaparezca

    • Suenas como alguien con quien trabajé antes
      Unos seis meses después de que saliera el iPhone, y cuando también aparecieron los teléfonos Android, decía que el Pre era el “iPhone killer”
      Después de mostrarle al primer usuario de iPhone del departamento algunas funciones del Pre que, en comparación, no eran gran cosa, dijo que los millones de usuarios de Palm me lo demostrarían
      Y vaya que lo demostraron
  • Me parece bien que exista este proyecto, porque extiende la vida de software que de otro modo probablemente nunca volvería a ejecutarse
    Pero me pregunto si esto es por nostalgia, o si realmente hay una necesidad o deseo por ese software
    Hay muchas historias de gente que extraña Palm, Blackberry y Psion, pero fuera de usos especializados, ¿de verdad querrían volver a lo de antes? Sé que IMAX necesita un emulador de Palm para ejecutar parte de su stack
    Buscando una Psion 5 “moderna”, vi que parte del equipo relacionado creó la Gemini PDA basada en Android. Algunos reseñistas claramente consideraron eso una desventaja
    Un nuevo sistema operativo EPOC con conectividad moderna parecería un éxito seguro para ellos, pero pensándolo bien, creo que yo principalmente correría Linux encima, si pudiera encontrar en stock una unidad nueva con teclado británico
    Pero ¿realmente queremos eso? En los últimos más de 20 años hubo muchos avances, y si a la mayoría de la gente le das PalmOS en lugar de Android o iOS para uso diario, creo que en menos de una semana lo devolverían por frustración
    ¿Cuál sería la función decisiva que haría que este juicio fuera equivocado?

    • Duración de batería de varias semanas, diseño de apps más simple y extraño los botones de página arriba/abajo