世界を動かす技術を、日本語で。

Étoilé – GNUStep上に構築されたデスクトップ

概要

  • Étoilé はユーザー中心の環境構築を目指すオープンソースプロジェクト
  • ファイルやOSプロセスなどの実装詳細をUIから排除
  • コラボレーション学習作成作業 を重視した設計
  • 柔軟なワークフロー構築や履歴管理が可能
  • GNUstepベースで多くのOSに移植可能

Étoilé プロジェクト概要

  • ユーザーの行動 (作成、協力、学習)を中心に設計された環境
  • ファイルやOSプロセスの概念 をUIから排除し、直感的な操作を実現
  • 全てのオブジェクト に対するリビジョン履歴管理機能
  • テキスト、図、コードなど あらゆるドキュメントでのリアルタイムコラボレーション
  • 提供される Services を自由に組み合わせてワークフローをカスタマイズ
  • ユーザーの メンタルモデル に近いシステム設計
  • MIT/BSDライセンス によるオープンソース提供
  • GNUstep 上に構築され、多くのOSで動作可能

最新ニュース

  • CoreObject Preview Release (2014年6月3日リリース)
  • Pragmatic Smalltalk and C (2012年8月19日発表)
  • XMPPKitとStepChatの新バージョン (2012年4月30日発表)
  • Étoilé 0.4.2リリース発表 (2012年4月11日、長らく待望されていた新バージョン)
  • Autoreleaseパフォーマンス改善 (2012年4月6日報告)

Hackerたちの意見

読み込めないなぁ。アーカイブミラーを貼っとくね。[0]

httpsを使わなければちゃんと動くよ。もしかして、ブラウザが最初にそれを試してるのかも?

同じ人たちが関わってるCocoaやGNUstepベースの関連プロジェクトも見てみてね:http://coreobject.org/ 「分散バージョン管理 + オブジェクト持続性」

Étoiléはすごく期待できたのに…。OpenStep(GNUstep経由)を使ってNeXTstepやMac OS Xを超える方法で活用するアイデアがあったんだよね。OpenStep APIのSmalltalkの影響をさらに深く取り入れて、デスクトップコンピューティング体験を向上させる感じがした。Étoiléは単なるNeXTstepやMac OS Xのクローンじゃなくて、KDEやGNOME、さらにはmacOSに対抗できる魅力的な存在になり得たんだ。残念ながら、Étoiléは10年間も活動していないみたいで、Appleも古い世代が引退していく中でXerox PARCの影響を捨てつつあるようだね(スティーブ・ジョブズ、ラリー・テスラー、ビル・アトキンソンのご冥福を祈ります)。AppleがiPhoneで成功してから、Appleは変わっちゃったよね。SmalltalkやLispマシンのアイデアが現代に再評価されて、ワークステーションクラスのパーソナルコンピューティングのモデルになってほしいな。SmalltalkやLispの環境は柔軟性と適応性を誇ってるけど(セキュリティが重要な時代だから、これらのことを再考するのも理解できるけど)、最近のパーソナルコンピューティングは生産性を高めるものというより、広告プラットフォームや反競争的な利益追求のためのものに感じる。

現代のコンピューティングは、頭を疲れさせるだけだよ。

SmalltalkやLispマシンのアイデアも大好きだよ。あの分野で何か期待できるもの知ってる?(Ink & Switch以外で)

Appleは、古い世代が引退したり亡くなったりする中で、Xerox PARCの影響を捨てつつあるみたいだね(スティーブ・ジョブズ、ラリー・テスラー、ビル・アトキンソン、安らかに)。あの人たち、もうずっとAppleに影響を与えてないんじゃない?スティーブは15年前に亡くなったし、ラリーとビルは約30年前に最後に働いてた。Appleには確かに「世代交代」があったけど、それはXerox PARCの人たちからじゃないよね。

デイビッド・チズナル(Étoiléの主要開発者の一人)は、過去10年間CHERIにフルタイムで取り組んで、Étoiléのビジョンを実現するためのハードウェアを持ってきたんだ。 > 「私は以前の数年間、ユーザー中心のデスクトップ環境を構築するプロジェクトであるÉtoiléに多くの時間を費やしました。それは、コンポーザブルなコンポーネントから作られ、エンドユーザープログラミングを重視したものでした。私たちは、VPRIのSTEPSプロジェクトに触発され、2万行未満でシステム全体を構築しようとしました。私たちのルールはもっとシンプルで、個々のコンポーネントを1万行未満に保つことを目指しました。これなら一人でも理解できる範囲です。つまり、表現力のある言語を使い、表現力のあるDSLを構築できる必要がありました。私たちはObjective-Cを基にしてスタートしましたが、これは遅延バインドコンポーネントの良いモデルを提供しましたが、多くのCの負担も持ってきました。」 > 「STEPSとは違って、私は高級言語で世界を再構築したくなかった。libavcodecやlibavformatをそのまま使いたかったけど、バグが高級ソフトウェアの不変条件を壊すことがないようにしたかった。MMUでアイソレーションメカニズムを構築しようとしたけど、かなり制限があった。モンドリアンメモリ保護も見たけど、テーブルベースのアプローチは言語レベルの抽象と組み合わせるのが難しかった。初期のCHERIも正しいものではなかったけど、正しい形に進化させられると感じた。」 > 「私のCHERI ISAにおける指紋の大部分は、その目標を念頭に置いています。既存のC/C++ライブラリをCHERIコンパイラ用にコンパイルして、高級言語から安全に使えるようにしたい。これについて少し書いたことがあります。」 > 「ドキュメントにスクリプト言語のプログラムを埋め込んで、大きなネイティブライブラリを直接呼び出せるようにしたいし、システムが侵害されないという強い保証を持ちたい。重要なポイントはこの観察です。」 > 「アイソレーションは簡単だけど、安全な共有は難しい。」 > 「2つのコンポーネントを完全にアイソレートするのは簡単です。別のコア、サンドボックス化されたプロセス、またはWebAssemblyのサンドボックスがあれば、必要なアイソレーションの程度に応じてこの種のアイソレーションを提供できます。ほとんどの興味深いものは、通信するコンポーネントから構築されていて、ほとんどアイソレートされた状態で安全に通信できるようにするのははるかに難しいです。例えば、RustはFFIが安全でないと言いますが、RustからCに渡されたオブジェクトが呼び出し後に任意のビットパターンを含む可能性がある場合、それを安全にするのは難しいです。ディープコピーで実現できますが、それは多くのオーバーヘッドがあり、一般的なケースでは非常に難しいです。CHERIでは比較的簡単に実現でき、ディープイミュータビリティのようなリッチなものも含めて(CHERIoTでは、シャロウとディープのノーキャプチャ保証も提供できます)。」

Objective-Sは、言語的基盤から始まる方向で構築されている。注意:著者の発言。これらの言語的基盤は、CLOSのようなメタオブジェクトプロトコルの形を取るが、OOのラインではなく、ソフトウェアアーキテクチャのラインで整理されているので、OOをサブセットとして含む。メタオブジェクトプロトコルの上には、だいたいSmalltalk風の言語があり、データフローの拡張(「!」、「?」、CSPに触発されたがCSPベースではない、プロセスは少ない)や、プロセス内RESTのようなデータアクセスと識別子(言語内のURI)、そして最後にコンポーネント接続(→)がある。これにより、SmalltalkとUnix/Plan 9スタイルを融合させた多様な環境の良い基盤ができる。

いい感じだけど、昔はうまく動かせなかったなぁ…

GNUStepは、言語とコンパイラがオープンソースでも、他の部分がついてこないとダメな良い例だね。AfterstepやWindowmakerを使ってたし、FOSDEMのGNUStepルームにも何回か座ったことがあるから言ってるんだ。最後にチェックしたときはOS X Pantherレベルだったし、現代のObjective-Cもサポートされてなかった。

2004年から定期的にGNUstepの進捗を追ってるよ。高校生のときにLinuxとMac OS Xを初めて知ったんだ(家ではWindows、学校ではクラシックMacを使ってた)。Mac OS Xの歴史についてのレポートもコミュニティカレッジの授業で書いたことがある。GNUstepが成功するのを見たかったけど、残念ながらKDE/QtやGNOME/GTKのエコシステムほど注目されなかった。理由はいくつか考えられるけど、90年代や2000年代にOpenStep/Cocoaを本当に求めていた人たちは、GNUstepを待つよりも手に入るNeXT/Appleのソフトウェアを使っていたんじゃないかな。ReactOSやHaikuも同じ問題を抱えてるし、それぞれWindows NT/2000/XP/Server 2003やBeOSと競争してる。FreeDOSも、アーキテクチャ的にはずっとシンプルなのに、1.0に到達するまでにかなり時間がかかったし、みんなMS-DOS 6.22を手に入れられたからね。もちろん、LinuxカーネルやGNUエコシステムは逆の例だけど、Unixを再実装するのはモジュール性があるから比較的簡単だと思うけど、GUIツールキット全体を再実装するのは難しいよね、特にソースやバイナリの互換性が求められる場合は。1998年か1999年頃に、元NeXTの開発者たちの注目を集めて、NeXTのソフトウェアをLinuxに移植する準備ができたGNUstepがあれば理想的だったけど、NeXTを特別にしていた他のもの、例えばInterface Builderを持ってくるのもかなりの努力が必要だっただろうね。初期の頃の商業用Mac OS XソフトウェアのほとんどはCarbonアプリケーションで、Cocoaアプリケーションじゃなかったことに気づいたよ。多くの伝説的なNeXTソフトウェア製品は、NeXTstep/OPENSTEPからMac OS Xに移行できなかった。GNUstepが準備できていれば、LinuxやBSDのどれかで居場所を見つけられたかもしれないのに。

20〜25年前、GNUStepの問題の一つは、Linuxディストリビューションにパッケージ化されなかったことだね。全部自分でコンパイルしなきゃいけなかった。理由の一つは、GCCがObjective Cの拡張を含めることを拒否したからかもしれない。法律的な懸念があったかもしれないけど、誰か詳しい人がいれば教えてほしいな。でも、GNUStepはめっちゃ速くて、当時のGnomeよりずっと良いプラットフォームだったよ。比較にならなかった。GNUStepのアプリ、例えばMail.appをAppleのIDEでコンパイルしてMac OS Xで動かせたけど、その逆はできなかった。あの時期のフリーソフトウェアプロジェクトの中でも、特に印象的だったよ。

GNUStepの主な問題は、KDEが現れたとき、GNUプロジェクトがGNUStepではなくGTK+をGNOMEのベースに使ったことだね。これが基本的にGNUStepを公式GNUデスクトップの基盤としての勢いを殺してしまった。残念だな、GNUStepは素晴らしいのに、IDEだけでもGNOMEのどんなものよりも進んでいる、今でもね。ああ、どうしようもないな…

GNUStepを触ったことはないんだ。プロのソフトウェア開発者として本格的に仕事を始めた2011年には、すでにちょっとしたジョーク扱いされてたから、使い方を学ぶ気にもならなかった。でも、ちょっと気になるんだよね。デスクトップLinuxの開発はまだ面倒だし、Linuxコミュニティが「すべてを支配するデスクトップフレームワーク」に合意してくれたらよかったのにと思う。GNUStepがそのフレームワークになれたかもしれないのに。

でも、もし「すべてを支配するデスクトップフレームワーク」がクソだったらどうする? :)

GNOMEプロジェクトの創設者が、”すべてを支配するデスクトップフレームワーク”としてMonoを立ち上げたけど、うまくいかなかったね。

デスクトップLinuxの開発はまだ面倒くさい。GNOMEは、言語が良いバインディングを持ってればすごく使いやすいよ。Qtはちょっと微妙だけど、クロスプラットフォームが必要ならまだ使えるよ。

デスクトップLinuxの開発はまだまだ面倒くさいよね。Linuxコミュニティが「全てを支配するデスクトップフレームワーク」に合意してくれたらいいのに、無理だろうな。仮に実現しても、すぐに分裂が起きるだろうね。CoCに重要な追加が受け入れられなかったり、誰かが公の場で「間違った考え」を持ってたり、スノーフレークな開発者のパッチが却下されたり、色々理由があるから。Microsoftですら「全てを支配するデスクトップフレームワーク」に合意できないんだから、Linuxの人たちに期待するのは難しいよ。

現在のアクティブなLinuxユーザーのほとんどは、分裂を良いことだと見ていると思う。権力の集中を絶対に望んでいないからね。多くの人がGNOMEが君臨していた時代を指摘するけど、その時彼らはその力をどう使ったの?コミュニティが嫌がる方法でGUIを何度も完全に再設計したんだよ、「私たちが知ってるから」って。 「全てを支配するデスクトップフレームワーク」を支持する人はもっと多いけど、声が大きくないから聞こえないんだよね。

GNUStepを触ったことはないんだ。プロのソフトウェア開発者として本格的に働き始めた2011年には、すでにちょっとしたジョーク扱いされてたから、使い方を学ぶ気になれなかったんだよね。ジョークだったのかどうかは分からないけど、2004年頃から2019年頃までWindowmakerを日常的に使ってたのは確かだよ。[1] それを切り替えた唯一の理由は、仮想デスクトップを3x3のグリッドで配置したかったからで、Windowmakerにはそれがなかったし、ロードマップにもなかったんだ。Windowmakerの頃が恋しいのは、集中できたことかな。画面全体がウィンドウ(または複数のウィンドウ)に使われてて、画面下のバーに注意を引くものが何もなかったから。近いうちに少し時間ができたら、その機能を実際に追加してみようかな。他の機能(タスクバー、Wi-Fiや音量などのコントロール)は、なくても大丈夫だし(ショートカットにバインドされた良いランチャーがあれば必要ない)、既存のドックアプリを使えばいいしね。 ======================================= [1] これが動画だよ: https://www.youtube.com/watch?v=_W_4fH_ccQE

うわ、懐かしいなぁ。すごく野心的なプロジェクトで、探求する面白いアイデアがたくさんあったよね。CoreObject自体は、分散ドキュメント共有やバージョン管理についての考え方が革命的だったし、プロジェクト管理のためのデスクトップ環境のアイデアもあったしね。クエンティン・マテがCoreObjectを10年も続けてくれたのは知ってるけど、他の関係者からはずっと音沙汰がないな。

デイビッド・チズナルは今、MSリサーチでCHERIを使って、デフォルトでメモリ安全なコンピューティングプラットフォームを作ってるよ。

サン・ソラリスのCDEデスクトップの時代が懐かしいな。Afterstepは2000年頃のStardockのWindow Blindsに似すぎてる気がする(変なガラス効果やフォントとかね)けど、Etolieは俺の好みに合ってる。これが戻ってきたらいいな、古いネットブックでサーバーにリモートアクセスするのに使いたいんだ。

CDEはしばらく前にオープンソースになったよ: https://sourceforge.net/projects/cdesktopenv/

関連情報だね。GNUstepをベースにしたデスクトップ環境が他にも2つあって、そっちの方が活発にメンテナンスされてるよ。NEXTSPACE: https://github.com/trunkmaster/nextspace https://onflapp.github.io/gs-desktop/index.html <- こっちは最近のやつで、Debianにネイティブだけど他の環境でも動くよ。

これありがとう。もしGNUStepをデスクトップとして使ったら、KDEやGNOME、XFCEなどと比べて何が足りないのかな?

いや、GNUStep大好きなんだ。真剣に何かしたことはないけど、ちょっと遊んでみたらすごく楽しかった。WindowMakerに全力投球したこともあったし、笑。Objective-Cがどれだけ素晴らしい言語かに気づかされて、iOS/Mac開発者になりたいと思ったこともあったよ。Etoileは死んじゃったみたいだけど、GershwinっていうGNUStepベースの別のデスクトップ環境を作ってる人たちがいるよ(https://github.com/gershwin-desktop/gershwin-desktop)。