- PumpkinOS é uma reimplementação do PalmOS que roda em arquiteturas modernas como x86 e ARM, e consegue executar aplicativos PalmOS m68K sem uma ROM do PalmOS
- O app executado por padrão é o Launcher; o Preferences deverá reunir opções de configuração, e o Command ainda é oferecido como um shell de comandos experimental
- Esta versão inclui os quatro apps PIM do PalmOS, AddressBook, MemoPad, ToDoList e DateBook, com o código-fonte distribuído no PalmOS SDK modificado para compilar no PumpkinOS
- Os registros do AddressBook e do MemoPad parecem ser compatíveis com os apps correspondentes do PalmOS, mas os registros do ToDoList e do DateBook não são compatíveis por causa de diferenças de word size e endianness
- O projeto como um todo ainda está em fase experimental; algumas funcionalidades não foram testadas, e a build com Emscripten também pode ter problemas como renderização por software, alto uso de CPU e travamento do navegador
Objetivos e escopo do PumpkinOS
- PumpkinOS é um projeto que reimplementa o PalmOS em arquiteturas modernas
- As arquiteturas-alvo incluem x86 e ARM
- Diferentemente dos emuladores PalmOS comuns, não exige uma ROM do PalmOS
- Consegue executar aplicativos PalmOS m68K
- Uma coletânea de textos sobre vários aspectos do PumpkinOS pode ser vista na categoria PalmOS do WordPress
Aplicativos padrão e estado atual
- Launcher é o app executado primeiro quando o PumpkinOS é iniciado
- Mostra um painel que permite iniciar outros aplicativos
- Preferences deve, no longo prazo, reunir opções de configuração do PumpkinOS
- Command é um shell de comandos e ainda é experimental
Apps PIM do PalmOS incluídos
- Esta versão inclui quatro apps PIM do PalmOS
- AddressBook
- MemoPad
- ToDoList
- DateBook
- O código-fonte desses apps foi distribuído em um ou mais PalmOS SDKs e foi modificado para compilar corretamente no PumpkinOS
- A compatibilidade de registros varia conforme o app
- Registros criados no AddressBook e no MemoPad parecem ser compatíveis com os apps correspondentes do PalmOS
- Registros criados no ToDoList e no DateBook não são compatíveis por causa de diferenças de word size e endianness
- O escopo dos testes é limitado
- Eles foram testados apenas até o nível de criar e editar alguns registros
- Ainda há alguns comportamentos anômalos
- Algumas funcionalidades não foram testadas
- O objetivo atual é dar uma prévia de como o PumpkinOS poderá ser no futuro
Licença
- O PumpkinOS é licenciado sob a GPL v3
- O diretório
license contém informações de licença individuais de vários componentes usados pelo PumpkinOS
- O projeto pede que sejam informadas licenças ausentes ou incorretas
Como compilar
- O PumpkinOS deve ser compilado a partir do código-fonte
- Não é necessário usar uma IDE
- É possível compilar pela linha de comando
-
Windows, Linux, WSL2
- No Windows 64 bits, é possível usar o MSYS2
- Instale pacotes adicionais no terminal MINGW64
pacman -S gcc binutils make git
- Em sistemas operacionais Linux 64 bits, são necessários
gcc, binutils, make e git
- No Linux, também é preciso instalar o pacote de desenvolvimento do SDL2
- Em distribuições derivadas do Debian, use o comando abaixo
sudo apt install gcc binutils make git libsdl2-dev
- No Windows 11 e nas versões recentes do Windows 10, também é possível compilar no WSL2
- No terminal do WSL2, basta seguir as instruções de build para Linux
-
Procedimento comum de build
git clone https://github.com/migueletto/PumpkinOS.git
- Entre no diretório do código-fonte e execute
make
cd PumpkinOS/src
make
- Se a build for concluída com sucesso, os seguintes artefatos serão gerados
- O executável
pumpkin no diretório raiz
- As bibliotecas dinâmicas no diretório
bin
- Os arquivos PRC no diretório
vfs/app_install
Build com Emscripten e execução na web
- Experimentalmente, é possível compilar usando Emscripten
- As instruções de instalação do Emscripten estão fora do escopo do README
cd PumpkinOS/src
make OSNAME=Emscripten
- Esse comando cria
pumpkin.zip dentro da pasta src/emscripten
- Esse arquivo zip contém os arquivos necessários para implantar o PumpkinOS em um servidor web
- Se estiver usando o servidor web padrão
apache2 no Linux, um procedimento de exemplo é o seguinte
- Crie a pasta
/var/www/html/pumpkin
- Extraia o arquivo zip para essa pasta
- Ao abrir
/pumpkin/pumpkin.html no navegador no servidor local, o PumpkinOS poderá ser exibido
- Também é possível executar um servidor web em Python no diretório de código-fonte do Emscripten
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
- Esta build ainda é muito experimental e tem algumas limitações
- Dependendo do sistema operacional, do navegador e do estado da integração com a GPU, ela pode fazer fallback inesperado para renderização por software
- Pode ocorrer alto uso de CPU e travamento do navegador
- O aplicativo não roda se o navegador for executado em private mode
- Ele não será carregado se for acessado por HTTP, em vez de HTTPS, em um servidor que não seja localhost
Execução, instalação e depuração
- No Windows 64 bits, execute
pumpkin.bat
- No Linux ou WSL2, execute
pumpkin.sh
- Ao executar, o PumpkinOS abre em uma nova janela
- Na execução, todos os PRCs em
vfs/app_install são removidos e expandidos para pastas dentro de vfs/app_storage
- A etapa atual é, de modo geral, experimental, portanto vários problemas podem ocorrer
- Independentemente de a execução ter sucesso ou não, o arquivo
pumpkin.log é criado no diretório raiz
- Se houver um problema, verifique as linhas marcadas com
"E" na terceira coluna desse arquivo
- O projeto informa que pode receber perguntas e arquivos de log
- O PumpkinOS oferece suporte a Drag & Drop
- Ao arrastar e soltar um arquivo PRC do PalmOS sobre a janela, ele é instalado e aparece no Launcher
- Também é possível copiar o PRC diretamente para o diretório
vfs/app_install e reiniciar o PumpkinOS
- Se quiser, é possível depurar com
gdb no Windows, Linux e WSL2
- No Windows, altere a última linha de
pumpkin.bat para o seguinte
gdb.exe --args .\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\script\pumpkin.lua
- No Linux e no WSL2, altere a última linha de
pumpkin.sh para o seguinte
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua
1 comentários
Opiniões no Hacker News
Fui ao Computer History Museum, em Mountain View, e me senti velho na hora ao ver um Palm Pilot dentro de uma vitrine
Deveria ser ilegal expor algo que foi parte importante da minha vida há só uns 30 anos como se tivesse sido escavado de ruínas de uma civilização antiga. É injusto demais
Na época, pedi ao meu chefe para comprar um para mim, e ele de fato comprou, mas disse: “Você está usando alguma coisa hoje para organizar sua vida e seus projetos? Se não estiver, acho que o PalmPilot também não vai ajudar”
Ele estava certíssimo
Ainda existe um canto do meu cérebro, como um trauma não resolvido, que espera uma grande volta do Dreamcast desde a minha adolescência
É muito divertido ir com minha parceira apontando, um a um, os aparelhos que já tivemos, e é realmente gostoso vê-los de novo
Era grande, desajeitado e bem pouco prático, mas a experiência de integração completa com o Palm Desktop era muito fluida. Mais tarde, usei o jPilot no Linux
O projeto PumpkinOS é realmente impressionante. Nem consigo imaginar quanto esforço deve ter dado fazê-lo ser compatível com todas as chamadas de sistema que um app comum de Palm espera
Lembro que o Palm fazia coisas bem estranhas no tratamento de memória. Qualquer dado um pouco maior precisava ir para blocos especiais de memória que o sistema operacional podia realocar à vontade, e era preciso travar o handle do bloco para mantê-lo estável enquanto ele fosse acessado
Implementar esse tipo de coisa no PumpkinOS deve ter sido difícil e divertido. Antigamente eu fazia joguinhos para Palm OS e aguardava muito a próxima versão do SO, que permitiria programar usando o então recém-lançado Palm OS Development Suite
Também foi o último SO em que os apps tinham um loop de eventos central. Hoje os frameworks de UI fazem tudo por você. Hoje é mais fácil, mas ainda sinto falta daquele jeito
Todo toolkit de GUI já criado é, no fim, estruturado desse jeito, mas na maioria dos toolkits modernos essa fila e esse loop ficam escondidos internamente, e você só percebe que existem ao olhar a pilha no debugger ou quando alguma coisa quebra
Para fazer multitarefa em sistemas sem MMU, imagino que compactar o heap em tempo de execução fosse quase obrigatório
Basta usar
malloc, não mover a memória e fazer o lock e unlock desses blocos não fazerem nadaSe houver uma chamada do SO para verificar o estado de lock, é preciso armazenar isso em algum lugar, mas também não é difícil. Implementar exatamente como era na época não é tanto difícil; só deixa a vida de quem usa mais complicada
Dá para implementar uma API complexa usando blocos de memória tão grandes quanto quiser, e algo como 128 MB de RAM hoje é pouquíssimo
Outro projeto que vale ver é o rePalm. É um projeto para rodar PalmOS em microcontroladores ARM como o RP2040: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm
PumpkinOS / há 3 anos | 52 comentários
https://news.ycombinator.com/item?id=28466858
Discussão relacionada ao rePalm:
PalmOS no Raspberry Pi, postado por Tijdreiziger em 10 de setembro de 2021, 169 pontos | 86 comentários
https://news.ycombinator.com/item?id=28487817
Já estou ansioso para perder algumas horas jogando Space Trader
Eu tinha um Palm Vx no ensino fundamental II e tenho boas lembranças de jogar isso debaixo da carteira durante a aula
Saudades daquela época
Meu coração acelerou ao ler esse título. Queria que fizessem isso rodar no Android, para eu “substituir” meu celular principal e voltar a uma época melhor
Continuei usando Palm até o Centro e, depois disso, nunca encontrei apps de contatos/calendário de que eu gostasse tanto quanto as versões da Palm. Ou faltam recursos simples e básicos, ou a UI é desnecessariamente complicada
Seria algo parecido com pessoas levando a sério a execução de apps DOS dentro de uma página web
https://play.google.com/store/apps/details?id=com.access_com...
Há algum tempo eu investi achando que a Palm acabaria criando algo como o iPhone
Infelizmente, a Palm não conseguiu, e quando a Apple conseguiu, a Palm acabou
Dá até para dizer que o que acabou derrubando a Palm foi o sucesso inicial e o enorme ecossistema de ferramentas shareware/freeware
O Palm OS já mostrava a idade: era um OS de thread única, residente em RAM e sem memória virtual, então eles precisavam tentar algo novo; mas isso inevitavelmente afastaria os fãs antigos que usavam a biblioteca de software existente
Nunca conseguiram resolver esse problema do ovo e da galinha, e a separação entre OS e hardware, spin-offs como a Handspring e a fusão de volta também não ajudaram. O Cobalt OS nunca chegou a equipar dispositivos reais, e o Pre foi um recomeço ambicioso, mas, mesmo que tivesse saído antes, provavelmente teria dificuldade para enfrentar o iPhone
A PalmSource estava projetando um OS baseado em Linux, mas foi adquirida e desapareceu; a Palm One voltou a se chamar Palm e criou os primeiros smartphones baseados em PalmOS
Só que, naquela altura, o PalmOS já estava bem velho, rodando apps de 16 bits sobre um OS de 32 bits
Depois a Palm criou o webOS, mas tomou decisões estranhas de hardware e não conseguiu competir com o iPhone e o Android. Ainda assim, poderia ter sido uma concorrente mais forte que a Blackberry ou a Nokia, que fracassaram na transição para telas capacitivas
O problema da Palm foi ter chegado tarde demais, mas, se ela não tivesse sido separada e tivesse feito um sucessor do PalmOS, acho que ainda assim teria perdido a onda dos smartphones capacitivos
A Apple tinha o iPod e, mais importante, tinha clientes. Como a Apple podia levar esses clientes às operadoras, conseguia ditar mais condições
Em https://www.youtube.com/watch?v=b9_Vh9h3Ohw, a parte de que estou falando fica por volta dos 20 minutos
Não era um iPhone, mas como ferramenta de trabalho era extremamente eficiente
O que seria necessário para colocar isso em hardware de telefone moderno, ou talvez de uma geração anterior?
Com uma simplicidade enorme e uma duração de bateria absurda, acho que conseguiríamos fazer a maior parte do que queremos. Talvez até fizesse o PinePhone parecer um Rolls-Royce
Se o código da GUI fosse reescrito para os frameworks de cada plataforma, acho que daria para atualizá-lo para rodar em Android ou iOS, mas transformá-lo em um OS inicializável parece mais difícil
O autor escreveu no ano passado sobre torná-lo um OS inicializável usando um kernel x86 mínimo e QEMU, então talvez isso pudesse ser reaproveitado para dispositivos ARM [1]
https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
Algo relacionado que vale conferir é o CloudpilotEmu, um emulador de Palm que roda dentro do navegador
https://cloudpilot-emu.github.io/
Fiquei muito feliz quando consegui instalá-lo e jogar Vexed de novo
Nunca tinha ouvido falar de Vexed, mas, no meu caso, fiquei muito feliz com a volta do Space Trader
Sou cliente da Sprint desde o começo da era dos celulares Palm
Até dois anos atrás eu ainda usava um Treo colorido como telefone, e aquele teclado físico era realmente ótimo de usar. É porque meus dedos são um pouco deformados, então telas sensíveis ao toque são difíceis para mim
A fusão com a T-Mobile bloqueou a parte de comunicação sem fio, e é uma pena vê-lo desaparecer
Uns 6 meses depois do lançamento do iPhone, quando os celulares Android também já tinham aparecido, essa pessoa dizia que o Pre era o “iPhone killer”
Depois de mostrar ao primeiro usuário de iPhone do departamento alguns recursos do Pre que, em comparação, nem eram tão impressionantes, dizia que os milhões de usuários da Palm iam me mostrar
E de fato mostraram
É bom que este projeto exista e prolongue a vida de softwares que talvez nunca mais tivessem chance de rodar
Mas fico me perguntando se isso é por nostalgia, ou por uma necessidade ou desejo real por aquele software
Há muitas histórias de saudade da Palm, da Blackberry e do Psion, mas será que, fora usos especializados, as pessoas realmente querem voltar ao passado? Sei que a IMAX precisa de um emulador de Palm para rodar parte da sua stack
Ao procurar um Psion 5 “moderno”, vi que parte da equipe relacionada criou o Gemini PDA, baseado em Android. Alguns reviewers enxergaram isso claramente como um ponto negativo
Um novo sistema operacional EPOC com conectividade moderna pareceria um sucesso garantido para esse público, mas, pensando bem, acho que eu acabaria rodando principalmente Linux nele. Se conseguisse encontrar em estoque uma unidade nova com teclado britânico, claro
Mas será que é isso que realmente queremos? Houve muitos avanços nos últimos mais de 20 anos, e, se dessem PalmOS em vez de Android ou iOS para a maioria das pessoas usar no dia a dia, acho que em uma semana elas devolveriam por frustração
Qual seria o recurso decisivo que tornaria esse julgamento errado?