- 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
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
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.
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.
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.
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.
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.
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.
Para tener multitarea en sistemas sin MMU, probablemente la compactación del heap en tiempo de ejecución era casi imprescindible.
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.
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.
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
PumpkinOS / hace 3 años | 52 comentarios
https://news.ycombinator.com/item?id=28466858
Discusión relacionada con rePalm:
PalmOS on Raspberry Pi, publicado por Tijdreiziger el 10 de septiembre de 2021, 169 puntos | 86 comentarios
https://news.ycombinator.com/item?id=28487817
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.
Extraño esos tiempos.
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.
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.
Sería algo parecido a lo que pasa cuando la gente ejecuta seriamente apps de DOS dentro de una página web.
https://play.google.com/store/apps/details?id=com.access_com...
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
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
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
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
No era un iPhone, pero como herramienta de trabajo era extremadamente eficiente
¿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
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...
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
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
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?