1 ポイント 投稿者 GN⁺ 2024-04-08 | 1件のコメント | WhatsAppで共有
  • 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はソースからビルドする必要がある
    • IDEは不要
    • コマンドラインからビルドできる
  • Windows、Linux、WSL2

    • 64ビットWindowsではMSYS2を利用できる
    • MINGW64ターミナルで追加パッケージをインストールする
    pacman -S gcc binutils make git
    
    • 64ビットLinux系OSではgccbinutilsmakegitが必要
    • 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
    
    • ソースディレクトリに移動してmakeを実行する
    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件のコメント

 
GN⁺ 2024-04-08
Hacker News の意見
  • Mountain View の Computer History Museum に行ったら、展示ケースの中の Palm Pilot を見て一気に年を取った気分になった
    ほんの30年ほど前まで自分の人生の重要な一部だったものを、古代文明の遺物を発掘したかのように展示するのは違法にすべき。不公平すぎる

    • いまでも屋根裏の箱に、当時使っていた PalmPilot がある。その存在自体が大きな人生の教訓だった
      当時の上司に買ってほしいと頼んだら実際に買ってくれたのだが、上司は「いま自分の生活やプロジェクトを整理するために何か使っているのか? 使っていないなら PalmPilot も役に立たないと思う」と言った
      本当にその通りだった
    • 数か月前、Reddit で誰かが祖父の古い Game Boyを見つけたという投稿を見た
    • Computer History Museum には Dreamcast も展示されていて、そのほうがずっとこたえた
      10代の頃の Dreamcast が大復活するのをいまだに待っている、未解決のトラウマみたいな脳の片隅が残っている
    • London の Science Museum には、携帯電話、コンピュータ、コンソールを集めた展示室がある
      パートナーと一緒に、これまで自分たちが所有していた機器を一つずつ指さすのがとても楽しく、見返すのが本当に楽しい
    • いまでも VisorPhone モジュール付きの Visor を持っている。iPhone より5年早い、最初のタッチ専用スマートフォンと言えるかもしれない :)
      大きくて無骨でかなり実用性には欠けたが、Palm Desktop と完全に統合された体験はとてもスムーズだった。後には Linux で jPilot を使っていた
  • PumpkinOS プロジェクトは本当にすごい。普通の Palm アプリが期待するすべてのシステムコールと互換にするには、どれほどの労力が必要だったのか想像もつかない
    Palm はメモリ処理でかなり変わったことをしていた記憶がある。少し大きめのデータは、OS が自由に再配置できる特殊なメモリブロックに入れる必要があり、アクセス中に安定させておくにはそのブロックのハンドルをロックしなければならなかった
    そういうものを PumpkinOS に実装するのは難しくも面白かっただろう。昔 Palm OS 向けの小さなゲームを作っていて、当時出たばかりの Palm OS Development Suite でプログラムを作れるようにしてくれる次の OS バージョンを本当に楽しみにしていた
    アプリに中央イベントループがあった最後の OS でもあった。最近は UI フレームワークが全部代わりに処理してくれる。今のほうが楽ではあるが、それでもあの方式が懐かしい

    • Win32 API を直接使えば、Windows もいまなおその方式だ
      これまで作られたすべての GUI ツールキットは結局そういう構造だが、現代的なツールキットの多くではこのキューとループが内部に隠れていて、デバッガのスタックを見たり何かがクラッシュしたりしたときにだけ存在を推測できる
    • そういう方式は 16ビット Windows や classic Mac OS も似たようなものではなかったかと思う
      MMU のないシステムでマルチタスクをするには、実行中にヒープをデフラグすることがほぼ必須だったのだろう
    • 現代のハードウェアにはギガバイト単位の RAM があるので、そうした実装は Palm Pilot III の 2MB と比べればとても簡単だ
      単に malloc を使い、メモリは移動せず、そうしたブロックのロックと解除を何もしない動作にすればいい
      ロック状態を確認する OS コールがあるならどこかに保存する必要はあるだろうが、それも難しくない。当時の方式そのままに実装するのも、難しいというよりは使う側を複雑にするだけだ
    • 現代ハードウェアの利点は、メモリの制約をあまり受けないことだ
      好きなだけ大きなメモリの塊で複雑な API を実装できるし、128MB RAM くらいの容量は今の基準ではごく小さい
    • Palm のゲームは本当に好きだった。あの頃のモバイルゲームは最高で、現代のゲームはまったく比べものにならない
  • あわせて見る価値のあるプロジェクトに rePalm もある。RP2040 のような ARM マイクロコントローラ上で PalmOS を動かすプロジェクトだ: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm

  • Space Trader で何時間も溶かすことを考えると、今からもう楽しみだ
    中学生の頃に Palm Vx を持っていて、授業中に机の下でそのゲームをやっていたいい思い出がある

    • Peter Spronck と一緒に働きながら、Space Trader の最後の追加コンテンツやいくつかのクエストを作った。たとえば The Scarab などだ
      あの頃が懐かしい
    • ガレージに Palm Vx が2台ある。そのゲームは自分も本当に好きだ
  • このタイトルを読んで心拍数が上がった。Android で動くようにして、メインのスマホを「置き換え」、もっと良かった時代に戻りたい

    • いまでも Palm のカレンダーと連絡先アプリが恋しい
      Centro まで Palm を使い続け、その後 Palm 版ほど気に入る連絡先/カレンダーアプリを見つけられていない。シンプルで基本的な機能が抜けていたり、UI が無駄に複雑だったりする
    • 全体を Wasm で動かせば、Palm アプリをどこでも実行できる
      人々が本気で Web ページ内で DOS アプリを動かしているのと似たようなことになるだろう
    • Graffiti を使える
      https://play.google.com/store/apps/details?id=com.access_com...
    • SDL を使っているので移植は簡単そうだ
  • 以前、Palmはいずれ最終的にiPhoneのようなものを作るだろうと思って投資していた
    残念ながらPalmはそうできず、Appleがそれを成し遂げたときにはPalmは終わっていた

    • PalmにはTreoラインがあった
      結局Palmを崩壊させたのは、初期の成功と巨大なシェアウェア/フリーウェアのツールエコシステムだったとも言える
      Palm OSはシングルスレッド、RAM常駐、仮想メモリなしのOSで、古さが露呈しつつあったため何か新しいことを試す必要があったが、そうすると既存のソフトウェアライブラリを使っていた昔からのファンを遠ざけざるを得なかった
      その鶏と卵の問題を最後まで解決できず、OSとハードウェアの分離、Handspringのようなスピンアウト、再統合も助けにはならなかった。Cobalt OSは実機に搭載されず、Preは野心的な再出発だったが、もっと早く出ていたとしてもiPhoneと戦うのは難しかっただろう
    • 大きな問題の一つは、Palmがソフトウェア会社のPalmSourceとハードウェア会社のPalm Oneに分割されたことだった
      PalmSourceはLinuxベースのOSを設計している途中で買収され、消えていき、Palm Oneは再びPalmに社名を戻した後、PalmOSベースの初期スマートフォンを作った
      しかしその時点でPalmOSはすでにかなり古く、32ビットOS上で16ビットアプリを動かしている状態だった
      その後PalmはwebOSを作ったが、奇妙なハードウェア上の判断をし、iPhoneやAndroidと競争できなかった。それでも、静電容量式画面への移行に失敗したBlackberryやNokiaよりは競争相手になり得た
      Palmの問題は遅すぎたことにあったが、分割されずにPalmOSの後継を作っていたら、静電容量式スマートフォンの流れは逃していたように思う
    • 通信事業者にも一部責任があったと聞いた。通信事業者は初期に、HandspringがTreoでできることに制限をかけなければ、Treoラインを扱うことすら渋った
      AppleにはiPodがあり、さらに重要なことに顧客がいた。Appleはその顧客を通信事業者に連れて行けたため、より多くのことを指示できた
      https://www.youtube.com/watch?v=b9_Vh9h3Ohwで私が言っている箇所は20分あたり
    • Handspring/Palmのスマートフォンラインは全部使った: Visor + Visor Phone、Treo 270、Treo 600、Treo 650、最後にPalm Préまで
      iPhoneではなかったが、仕事道具としては極めて効率的だった
    • ここでGPLライセンスを見て笑ってしまった。商業化のリスクがあるとは言いにくいのではないかと思う
  • これを現代のスマートフォンハードウェア、あるいは1世代前のスマートフォンハードウェアに載せるには何が必要だろうか
    圧倒的なシンプルさと、とんでもないバッテリー寿命で、私たちが望むことの大半はできそうだ。おそらくPinePhoneでさえRolls Royceのように感じさせられるだろう

    • READMEによるとARMでネイティブに動くが、OSというよりはプログラムに近そうだ
      GUIコードを各プラットフォームのフレームワーク向けに書き直せば、AndroidやiOSで動くように更新できそうだが、ブート可能なOSにするのはもっと難しそうだ
      作者は昨年、最小限のx86カーネルとQEMUを使ってブート可能なOSにする記事を書いているので、ARMデバイス向けにも再利用できそうだ [1]
      https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
    • 現代のモバイルOSには、最適化と安定化の取り組みがもっと入るとよいと思う
  • あわせて見るとよさそうなものとして、ブラウザ内で動くPalmエミュレータCloudpilotEmuがある
    https://cloudpilot-emu.github.io/
    インストールしてVexedをまたプレイできたときは本当にうれしかった

    • Cloudpilotは驚きだ。私が知る中で最も洗練されたPWAの一つ
      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週間もしないうちに不満を抱えて返してくると思う
    この判断を覆す決定的な機能は何だろうか

    • 数週間もつバッテリー寿命、よりシンプルなアプリ設計、ページ上下ボタンが懐かしい