- PumpkinOSは、x86やARMなどの現代的なアーキテクチャで動作するPalmOSの再実装であり、PalmOS ROMなしでm68K PalmOSアプリケーションを実行できる
- 既定の起動アプリはLauncherで、Preferencesには今後設定オプションが追加される予定、Commandはまだ実験的なコマンドシェルとして提供されている
- 今回のリリースには、PalmOSのPIMアプリ4種であるAddressBook、MemoPad、ToDoList、DateBookが含まれており、PalmOS SDKで配布されていたソースコードをPumpkinOSでコンパイルできるよう修正している
- AddressBookとMemoPadのレコードはPalmOS対応アプリと互換性があるとみられるが、word sizeとendiannessの違いによりToDoListとDateBookのレコードは互換性がない
- プロジェクト全体はまだ実験段階であり、一部機能はまったくテストされておらず、Emscriptenビルドでもソフトウェアレンダリング、高いCPU使用率、ブラウザのフリーズといった問題が起こりうる
PumpkinOSの目標と範囲
- PumpkinOSは、PalmOSを現代的なアーキテクチャ上で再実装するプロジェクト
- 対象アーキテクチャはx86、ARMなど
- 一般的なPalmOSエミュレータとは異なり、PalmOS ROMは不要
- m68K PalmOSアプリケーションを実行できる
- PumpkinOSのさまざまな側面を扱った記事一覧は、WordPress PalmOSカテゴリで見られる
基本アプリケーションと現在の状態
- Launcherは、PumpkinOS起動時に最初に実行されるアプリ
- Preferencesには、長期的にはPumpkinOSの設定オプションが入る予定
- Commandはコマンドシェルで、まだ実験的
含まれるPalmOS PIMアプリ
- 今回のリリースにはPalmOSのPIMアプリ4種が含まれる
- AddressBook
- MemoPad
- ToDoList
- DateBook
- これらのアプリのソースコードは、1つ以上のPalmOS SDKで配布されていたもので、PumpkinOS上で正しくコンパイルできるよう修正されている
- レコード互換性はアプリごとに異なる
- AddressBookとMemoPadで作成したレコードは、PalmOS対応アプリと互換性があるとみられる
- ToDoListとDateBookで作成したレコードは、word sizeとendiannessの違いにより互換性がない
- テスト範囲は限定的
- 数件のレコードを作成・編集できるレベルまでしかテストされていない
- まだ一部に異常動作がある
- 一部機能はまったくテストされていない
- 現在の目標は、PumpkinOSの将来像を先行して示すことにある
ライセンス
- PumpkinOSはGPL v3でライセンスされている
licenseディレクトリには、PumpkinOSで使用している各種コンポーネントの個別ライセンス情報が入っている
- ライセンス情報に不足や誤りがあれば知らせてほしいとしている
ビルド方法
- PumpkinOSはソースからビルドする必要がある
-
Windows、Linux、WSL2
- 64ビットWindowsではMSYS2を利用できる
- MINGW64ターミナルで追加パッケージをインストールする
pacman -S gcc binutils make git
- 64ビットLinux系OSでは
gcc、binutils、make、gitが必要
- LinuxではSDL2開発パッケージもインストールする必要がある
- Debian系では次のコマンドを使う
sudo apt install gcc binutils make git libsdl2-dev
- Windows 11および新しいWindows 10では、WSL2でもビルドできる
- WSL2ターミナルではLinux向けビルド手順に従えばよい
-
共通ビルド手順
git clone https://github.com/migueletto/PumpkinOS.git
cd PumpkinOS/src
make
- ビルドに成功すると次の成果物が生成される
- ルートディレクトリの
pumpkin実行ファイル
binディレクトリの動的ライブラリ
vfs/app_installディレクトリのPRCファイル群
EmscriptenビルドとWeb実行
- 実験的にEmscriptenを使ってビルドできる
- Emscriptenのインストール方法はREADMEの範囲外
cd PumpkinOS/src
make OSNAME=Emscripten
- このコマンドにより、
src/emscriptenフォルダ内にpumpkin.zipが生成される
- このzipファイルには、WebサーバーにPumpkinOSを配置するために必要なファイルが入っている
- Linuxの標準
apache2 Webサーバーを使う場合の手順例は次のとおり
/var/www/html/pumpkinフォルダを作成する
- zipファイルをそのフォルダに展開する
- ローカルサーバーで
/pumpkin/pumpkin.htmlをブラウザで開くとPumpkinOSが表示される可能性がある
- EmscriptenのソースディレクトリでPython Webサーバーを実行する方法もある
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
- このビルドはまだ非常に実験的で、いくつかの制約がある
- OS、ブラウザ、GPU統合状況によっては、予期せずソフトウェアレンダリングにフォールバックすることがある
- CPU使用率の上昇やブラウザのフリーズが発生する可能性がある
- ブラウザをprivate modeで実行するとアプリケーションは起動しない
- localhost以外のサーバーでHTTPSではなくHTTP経由でアクセスすると読み込まれない
実行、インストール、デバッグ
- 64ビットWindowsでは
pumpkin.batを実行する
- LinuxまたはWSL2では
pumpkin.shを実行する
- 実行するとPumpkinOSが新しいウィンドウで開く
- 起動時に
vfs/app_install内のすべてのPRCが削除され、vfs/app_storage内のフォルダへ展開される
- 現段階では全体的に実験的なため、さまざまな問題がある可能性がある
- 実行成功の有無にかかわらず、ルートディレクトリに
pumpkin.logファイルが生成される
- 問題が起きた場合は、このファイルの3列目が
"E"になっている行を確認する
- 質問やログファイルの送付を受け付けるとしている
- PumpkinOSはDrag & Dropをサポートしている
- PalmOS PRCファイルをウィンドウ上にドラッグ&ドロップするとインストールされ、Launcherに表示される
- PRCを
vfs/app_installディレクトリに直接コピーしてからPumpkinOSを再起動してもよい
- 必要に応じて、Windows、Linux、WSL2で
gdbを使ってデバッグできる
- Windowsでは
pumpkin.batの最後の行を次のように変更する
gdb.exe --args .\\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\\script\\pumpkin.lua
- LinuxとWSL2では
pumpkin.shの最後の行を次のように変更する
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua
1件のコメント
Hacker News の意見
Mountain View の Computer History Museum に行ったら、展示ケースの中の Palm Pilot を見て一気に年を取った気分になった
ほんの30年ほど前まで自分の人生の重要な一部だったものを、古代文明の遺物を発掘したかのように展示するのは違法にすべき。不公平すぎる
当時の上司に買ってほしいと頼んだら実際に買ってくれたのだが、上司は「いま自分の生活やプロジェクトを整理するために何か使っているのか? 使っていないなら PalmPilot も役に立たないと思う」と言った
本当にその通りだった
10代の頃の Dreamcast が大復活するのをいまだに待っている、未解決のトラウマみたいな脳の片隅が残っている
パートナーと一緒に、これまで自分たちが所有していた機器を一つずつ指さすのがとても楽しく、見返すのが本当に楽しい
大きくて無骨でかなり実用性には欠けたが、Palm Desktop と完全に統合された体験はとてもスムーズだった。後には Linux で jPilot を使っていた
PumpkinOS プロジェクトは本当にすごい。普通の Palm アプリが期待するすべてのシステムコールと互換にするには、どれほどの労力が必要だったのか想像もつかない
Palm はメモリ処理でかなり変わったことをしていた記憶がある。少し大きめのデータは、OS が自由に再配置できる特殊なメモリブロックに入れる必要があり、アクセス中に安定させておくにはそのブロックのハンドルをロックしなければならなかった
そういうものを PumpkinOS に実装するのは難しくも面白かっただろう。昔 Palm OS 向けの小さなゲームを作っていて、当時出たばかりの Palm OS Development Suite でプログラムを作れるようにしてくれる次の OS バージョンを本当に楽しみにしていた
アプリに中央イベントループがあった最後の OS でもあった。最近は UI フレームワークが全部代わりに処理してくれる。今のほうが楽ではあるが、それでもあの方式が懐かしい
これまで作られたすべての GUI ツールキットは結局そういう構造だが、現代的なツールキットの多くではこのキューとループが内部に隠れていて、デバッガのスタックを見たり何かがクラッシュしたりしたときにだけ存在を推測できる
MMU のないシステムでマルチタスクをするには、実行中にヒープをデフラグすることがほぼ必須だったのだろう
単に
mallocを使い、メモリは移動せず、そうしたブロックのロックと解除を何もしない動作にすればいいロック状態を確認する OS コールがあるならどこかに保存する必要はあるだろうが、それも難しくない。当時の方式そのままに実装するのも、難しいというよりは使う側を複雑にするだけだ
好きなだけ大きなメモリの塊で複雑な API を実装できるし、128MB RAM くらいの容量は今の基準ではごく小さい
あわせて見る価値のあるプロジェクトに rePalm もある。RP2040 のような ARM マイクロコントローラ上で PalmOS を動かすプロジェクトだ: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm
PumpkinOS / 3年前 | コメント52件
https://news.ycombinator.com/item?id=28466858
rePalm 関連の議論:
PalmOS on Raspberry Pi、2021年9月10日に Tijdreiziger が投稿、169ポイント | コメント86件
https://news.ycombinator.com/item?id=28487817
Space Trader で何時間も溶かすことを考えると、今からもう楽しみだ
中学生の頃に Palm Vx を持っていて、授業中に机の下でそのゲームをやっていたいい思い出がある
あの頃が懐かしい
このタイトルを読んで心拍数が上がった。Android で動くようにして、メインのスマホを「置き換え」、もっと良かった時代に戻りたい
Centro まで Palm を使い続け、その後 Palm 版ほど気に入る連絡先/カレンダーアプリを見つけられていない。シンプルで基本的な機能が抜けていたり、UI が無駄に複雑だったりする
人々が本気で Web ページ内で DOS アプリを動かしているのと似たようなことになるだろう
https://play.google.com/store/apps/details?id=com.access_com...
以前、Palmはいずれ最終的にiPhoneのようなものを作るだろうと思って投資していた
残念ながらPalmはそうできず、Appleがそれを成し遂げたときにはPalmは終わっていた
結局Palmを崩壊させたのは、初期の成功と巨大なシェアウェア/フリーウェアのツールエコシステムだったとも言える
Palm OSはシングルスレッド、RAM常駐、仮想メモリなしのOSで、古さが露呈しつつあったため何か新しいことを試す必要があったが、そうすると既存のソフトウェアライブラリを使っていた昔からのファンを遠ざけざるを得なかった
その鶏と卵の問題を最後まで解決できず、OSとハードウェアの分離、Handspringのようなスピンアウト、再統合も助けにはならなかった。Cobalt OSは実機に搭載されず、Preは野心的な再出発だったが、もっと早く出ていたとしてもiPhoneと戦うのは難しかっただろう
PalmSourceはLinuxベースのOSを設計している途中で買収され、消えていき、Palm Oneは再びPalmに社名を戻した後、PalmOSベースの初期スマートフォンを作った
しかしその時点でPalmOSはすでにかなり古く、32ビットOS上で16ビットアプリを動かしている状態だった
その後PalmはwebOSを作ったが、奇妙なハードウェア上の判断をし、iPhoneやAndroidと競争できなかった。それでも、静電容量式画面への移行に失敗したBlackberryやNokiaよりは競争相手になり得た
Palmの問題は遅すぎたことにあったが、分割されずにPalmOSの後継を作っていたら、静電容量式スマートフォンの流れは逃していたように思う
AppleにはiPodがあり、さらに重要なことに顧客がいた。Appleはその顧客を通信事業者に連れて行けたため、より多くのことを指示できた
https://www.youtube.com/watch?v=b9_Vh9h3Ohwで私が言っている箇所は20分あたり
iPhoneではなかったが、仕事道具としては極めて効率的だった
これを現代のスマートフォンハードウェア、あるいは1世代前のスマートフォンハードウェアに載せるには何が必要だろうか
圧倒的なシンプルさと、とんでもないバッテリー寿命で、私たちが望むことの大半はできそうだ。おそらくPinePhoneでさえRolls Royceのように感じさせられるだろう
GUIコードを各プラットフォームのフレームワーク向けに書き直せば、AndroidやiOSで動くように更新できそうだが、ブート可能なOSにするのはもっと難しそうだ
作者は昨年、最小限のx86カーネルとQEMUを使ってブート可能なOSにする記事を書いているので、ARMデバイス向けにも再利用できそうだ [1]
https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
あわせて見るとよさそうなものとして、ブラウザ内で動くPalmエミュレータCloudpilotEmuがある
https://cloudpilot-emu.github.io/
インストールしてVexedをまたプレイできたときは本当にうれしかった
Vexedは聞いたことがなかったが、私の場合はSpace Traderが戻ってきたのが本当にうれしかった
Palmフォンの時代が始まったときからSprintの顧客だった
2年前までカラーTreoを電話として使っていて、その物理キーボードは本当に使いやすかった。指が少し変形していてタッチスクリーンが難しいからだ
T-Mobileとの合併で無線通信部分が使えなくなり、消えてしまうのがとても残念だ
iPhoneが出て半年ほど経ち、Androidフォンも登場したころ、Preが「iPhoneキラー」だと言っていた
部署で最初のiPhoneユーザーに、Preが比較しても大してすごくない機能を見せた後、Palmの何百万ものユーザーが私に見せつけてくれるだろうと言っていた
実際、しっかり見せつけてくれた
このプロジェクトが存在し、二度と実行される機会がなかったであろうソフトウェアの寿命を延ばしてくれるのはよいことだ
だがこれはノスタルジアのためなのか、それともそのソフトウェアに対する実際の必要や欲求のためなのか気になる
Palm、Blackberry、Psionを懐かしむ話は多いが、特殊な用途以外でも本当に昔に戻りたいのだろうか。IMAXがスタックの一部を動かすためにPalmエミュレータを必要としているのは知っている
「現代的な」Psion 5を探していたら、関係チームの一部がAndroidベースのGemini PDAを作っていたのを見た。一部のレビュアーは、この点を明確に欠点と見なしていた
現代の接続性をサポートする新しいEPOC OSがあれば、彼らにとっては確実な成功に見えるが、考えてみると私はその上で主にLinuxを動かしそうだった。英国配列キーボード付きの新品を在庫で見つけられるなら、という話だが
しかし私たちは本当にそれを望んでいるのだろうか。この20年以上で多くの進歩があり、ほとんどの人に日常用としてAndroidやiOSの代わりにPalmOSを渡したら、1週間もしないうちに不満を抱えて返してくると思う
この判断を覆す決定的な機能は何だろうか