2009年5月、私は22歳で、ヨルダン大学でCIS(コンピュータ情報システム)の学位を修了中で、オープンソースクラブの共同設立を手伝った。他の学生たちの前に立って、お金を払わなかったソフトウェア、会うことのない人々が作ったソフトウェア、2.5MBのヒープを持つ電話で動くソフトウェアを、なぜ気にすべきかを説明した。

私たちが教えたスタック:Java — 具体的にはJ2ME — ウェブ用PHP、そしてMySQL(他に何を使う?)。これはモダンなツールについての投稿ではない。2009年のアンマンで、部屋の中の学生のほとんどが海賊版のWindows XPで育ち、Linuxは苦しむことが好きな人のためのものだと思っていた頃、オープンソースソフトウェアの伝道者であることがどんな感じだったかについての投稿だ。

なぜObjective-CではなくJ2MEか

今、その場にいなかった人からこの質問を受ける。「なぜJ2ME?iPhoneは2009年にはもう出ていたよね?」

iPhoneは出ていた。iPhoneデベロッパープログラムにはMacと年間99ドルが必要だった。クラスメートが実際に持っていた電話 — そして私たちが作るかもしれないソフトウェアのユーザーが実際に持つ電話 — はNokia Series 40、Sony Ericsson、たまにSymbianデバイスだった。J2MEはその電話が動かすものだった。MIDP 2.0、CLDC 1.1、そして運が良ければ、まともなカメラAPIを持つJTWI準拠のデバイス。

2009年にヨルダンで実際のユーザー向けのソフトウェアを作るなら、J2MEをターゲットにしていた。これは哲学的な選択ではなかった。算数だった。

当時の私自身の卒業プロジェクトは、Windows MobileとSymbian用のモバイルクライアントを持つGISベースのマーケティングプラットフォームだった。モバイルフロントエンドをJavaで書いていた。ウェブバックエンドをPHPで。データベースをMySQLで。クラブのために設計したカリキュラムは仮説的ではなかった — 文字通り、教えているのと同じ学期に作っていたものだった。

その部屋でオープンソースが実際に意味したこと

刺激的に感じさせたこと:当時のヨルダンのほとんどのソフトウェア関係者 — 学生、プロ、みんな — は、ソフトウェアに価格タグとシリアルナンバーがある世界で動いていた。Microsoft Officeにはキーがあった。Photoshopにはキーがあった。有用なものがただ利用可能で、法的に、無料で、実際に読めるソースコードと一緒にある — それには説明が必要だった。

Richard Stallmanの哲学についての講義はしていなかった。Apache、PHP、MySQLで今日ウェブアプリを作れて、ライセンスに一銭も使わなくていい、しかも法的で意図的で、インターネットのほとんどがすでにそうして動いているということを、20歳の部屋に説明していた。

電球が点く瞬間は本物だった。「コードがただ……あるの?」そう。コードはただそこにある。読め。壊せ。直してフィックスを送り返せ。

時代に合ったものと合わなかったもの

哲学は時代に合った。特定のテクノロジーは合わなかった。

J2MEは今や博物館の展示品だ。Symbianは博物館の展示品だ。Nokia Series 40は博物館の展示品だ。スマートフォンが支配を完成させる十年前、私たちはコレクターの引き出しの外では本当に見つけるのが難しいハードウェアでモバイル開発を教えていた。

しかし原則 — フルスタックを理解するべきだ、使っているツールのソースを読めるべきだ、本物を出荷することが最良の教育だ — は持ちこたえた。一緒に働いた中で最良の本能を持つエンジニアは、ほぼ常に自分が書いていないソースコードを読む時間を過ごした人たちだ。これは偶然ではない。

「珍しいピッチとしてのオープンソース」という特定のバージョンも、明らかな理由で消えた。2009年、オープンソースが正当だと誰かを説得するには努力が必要だった。2024年、オープンソースなしで真剣なプロジェクトを構築しようとすれば、より多くの説明が必要になるだろう。伝道は集合的に機能した。私たちは勝った。

その直後に起きたこと

クラブが始まって13ヶ月後、私はEHS/HAKEEMでヨルダンの国民医療システム向けのMUMPSルーティンを書いていた。MUMPSをご存知でなければ:1966年の言語で、VistA上で動き、世界中の病院を動かし続けており、PHPからは同じ惑星上にいながら最も遠い場所にある。

このジャンプは唐突に聞こえる。唐突には感じなかった。「ソースコードを読め、下にあるシステムを理解せよ」と講義していた — そして次は40年前に書かれた、MITとVAの人たちが書いた、何か有用なことをするために理解しなければならないソースコードがあるシステムの中にいた。構文が別時代のものでも、実践は移転した。

私は職名を持つ前から何らかの形で教えていた。AFAQでは、主にほぼ構造化された教育だったアーキテクチャレビューを行っていた。Bytroではモダナイゼーションワークショップ。Talenteraではシステム設計についてチームと取り組んでいた。形式は変わった。本能 — システムを説明し、ソースを示し、ものを作る — は変わらなかった。

2009年から今

私は22歳で、ホワイトボードの前に立って、Nokiaの電話に収まるJavaランタイムがなぜ価値ある時間の使い方かを説明していた。今は37歳で、KotlinとGoで分散システムを出荷し、ホームラボでローカルファーストのエージェントコントロールプレーン(Fulcrum)を動かしている。

J2MEのヒープ制約は消えた。MIDP 2.0のAPIは消えた。卒業プロジェクトのSymbianクライアントは消えた。しかし私はまだソースコードを読むべきだと説明し、システムを学ぶ最良の方法はそれで本物を作ることだと信じ、少しだけ22歳で立ち上がって「これはあなたの時間の価値がある」と言った人でいる。お金を払わなかったソフトウェアについて。

いくつかの本能は複利で育つ。