1 ポイント 投稿者 GN⁺ 2024-01-03 | 1件のコメント | WhatsAppで共有
  • Dilloは、古いマシンや小型マシン、低速な接続まで対象にした高速で小さなグラフィカルWebブラウザで、Linux・BSD・MacOS・CygwinベースのWindows・Atariで動作する
  • C/C++と少ない依存関係、独自のリアルタイムレンダリングエンジン、FLTK GUIライブラリを組み合わせ、大きなページでも低いメモリ使用量と高速なレンダリングを目指す
  • HTTP、HTTPS、FTP、ローカルファイルを標準でサポートし、どの言語でも書けるプラグインで新しいプロトコルを拡張できる
  • プロジェクトは、Webへの参入障壁を下げ、個人のセキュリティとプライバシー、ソフトウェア効率を重視する方針を維持している
  • 最新リリースは3.2.0で、主要データは独自のgitリポジトリに保管され、CodebergとSourcehutにも複製されている

小さく高速なグラフィカルブラウザ

  • Dilloは高速で小さなグラフィカルWebブラウザ
  • Linux、BSD、MacOS、Cygwin経由のWindows、Atariで動作する
  • 実装方式

    • CとC++で書かれており、依存関係が少ない
    • 独自のリアルタイムレンダリングエンジンを実装している
    • 大きなページでもメモリ使用量が少なく、レンダリングが速い
    • 高速で無駄のないFLTK GUIライブラリを使用している
  • 基本機能と方針

    • HTTP、HTTPS、FTP、ローカルファイルをサポートする
    • どの言語でも書けるプラグインで拡張可能
    • GPLv3ライセンスの自由ソフトウェア
    • bug meterで、作者がWeb標準に従うのを支援する
    • Webへの参入障壁を下げること、古いマシンや小型マシンと低速接続のサポート、個人のセキュリティとプライバシー、高いソフトウェア効率を目標とする
    • 機能の使い方はUser Manualで確認できる
    • dillo.orgドメインは、もはやDillo開発者の管理下にない

セルフホスティングへ移行したプロジェクトインフラ

リリース、ドキュメント、貢献方法

  • latest release 3.2.0をダウンロードし、README.mdの手順に従ってビルドできる
  • 最新の変更点はGit repositoryから直接クローンできる
  • ドキュメント

    • User Manual: すべての機能の使い方を扱い、ブラウザと一緒に配布されてローカルで読める
    • Topic Guide: Dilloとmpvを設定してURL上のマルチメディアファイルを開く方法など、マニュアルにない追加トピックを扱う
    • Developer Documentation: ブラウザ内部の設計と実装を扱い、開発者に推奨される
  • 貢献方法

    • DilloでWebを閲覧していて動作しない箇所を見つけたら、issueを開くか、dillo-dev@mailman3.comへメールを送れる
    • 新機能の実装やバグ修正パッチを送ったり、pull requestを作成したりできる
    • Liberapayでテストとインフラ費用を支援できる

プラグインで拡張されるプロトコルサポート

  • プラグインは標準入力と標準出力で相互作用し、新しいプロトコルサポートを追加する
  • 提供されているプラグイン例は次のとおり
    • Gemini: gemini://、Bash、Gemini protocolプラグイン
    • Gopher: gopher://、C、Gopher protocolプラグイン
    • IPFS: ipfs://ipns://、Go、IPFS protocolプラグイン
    • Man: man://、Bash、man pageをHTMLとしてレンダリングする
    • Spartan: spartan://、Bash、Spartan protocolプラグイン
  • さらに多くのプラグインはgit repositoriesで確認できる
  • 新しいプラグインを追加するには、リポジトリへのリンクと短い説明をメールで送ればよい

1件のコメント

 
GN⁺ 2024-01-03
Hacker Newsのコメント
  • macOS 12.7のM1 Macで問題なくビルドでき、インストールは macOS の案内どおりに brew install パッケージと OpenSSL 3 を入れたうえで、./configure の前に OpenSSL のパスを設定する export を実行すればよかった
    その後 makesudo make installdillo で起動するとすぐに動作し、1.6MBのバイナリでありながら SSL もサポートしていて非常に高速
    Google 検索は CSS が崩れてもある程度使えるが、JavaScript がないので Google ログインは難しそう
    [0] https://github.com/dillo-browser/dillo/blob/master/doc/insta...
    [1] https://github.com/dillo-browser/dillo/blob/master/doc/insta...
    [2] https://stackoverflow.com/a/77749836

    • macOS のインストール案内に OpenSSL のパス設定を追加したほうがよさそう
      CI では include フラグなしでも通るようだが、Mac を持っていないのでテストには限界がある
  • 低スペックなハードウェアには、もっと高速で軽量なブラウザが本当に必要
    SBC、Raspberry Pi、数年前のノート PC も他の部分は快適なのに、いつもブラウザの性能が足を引っ張る
    結局は一部の要件のために Ryzen 7 と RAM 16GB が必要だと受け入れることになり、最大の計算負荷が MS Teams とウェブメールだという点がやるせない

    • MS Teams を2年ほど使ってみて、本当にそのとおりだと思う
      驚くほど遅く、分かりにくく、バグも多く、タブも頻繁に落ちるので、ソフトウェアがそうあってはいけない例のように感じた
      Microsoft がこれで問題ないと判断したのはいまだに不思議で、Slack はどうなのか気になる
      競争があまりないから、そこまで頑張って作らないのかもしれない
    • Windows 98 と64MB RAMでもウェブをかなり快適に見て回れていた記憶が鮮明なのに、今では数 GB あってもうまくいかないのが悲しい
    • もっと軽いウェブブラウザとして NetSurf、Pale Moon、K-Meleon on Goanna、Otter Browser、Ultralight があり、ターミナルアプリとして Carbonyl、Browsh、Links もある
      Links はグラフィックモードもサポートしている
    • これはかなり誇張された話だと思う
      適度な低価格デスクトップ/ノート PC の CPU とRAM 4GBがあれば MS Teams を動かすには十分だし、より実用的で効率的なメール転送エージェントもあるのに、あえてウェブメールを使う理由もよく分からない
  • 状況を考えると、Dillo が継続しているという知らせはうれしい
    2009年ごろの Intel Atom N270 ネットブックを2台、RAM 1GB で持っているが、Firefox はそこで不条理なくらい重く、Dilloならとてもうまく動きそう
    以前は CSS が重くない文書を見るとき、メインのデスクトップでも Dillo を使っていて、Firefox でタブを 20〜40 個開くと RAM をかなり消費する一方、Dillo はたいてい 100MB 前後に収まっていた
    JavaScript エンジンがないので、怪しいリンクを開くときにも Dillo を使っており、15年以上うまく使ってきた素晴らしいソフトウェアだと感じる

    • 怪しいリンクを開くなら、保守状況が不確かな C 製ソフトウェアよりも、JavaScript とウェブフォントを無効にした Chromium または Firefox のプロファイルを使うほうがよいと思う
      Dillo には、画像デコード、HTML/CSS パース、ネットワークプロトコル、ローカルファイルアクセスのような、頻繁に攻撃対象になる複雑な部分に対するサンドボックスがない
    • それこそが Jorge が念頭に置いていた目標であり、性能の低いマシンを使う地域の人たちでもウェブにアクセスできるようにする意図があった
      大学時代、自宅では古いPentium 4を使っていたが、一般的なブラウザではタブを1つ開くのに30秒ほど待たなければならなかった
      だから主に Dillo を使い、JavaScript が必要な記事は Google キャッシュを経由して Firefox に渡していた
      ネットワークも遅かったので、HTML だけを取得する点が大きな助けになり、Dillo は何年もの間ずっと非常に高速だった
    • 選択肢として NetSurfも試したことがあるか気になる
      同じく非常に軽量だ
    • zramup スクリプトで zram スワップを設定しておくと役に立つかもしれない
      doas /sbin/modprobe zram
      doas /sbin/zramctl --find --size 1024M
      doas /sbin/mkswap /dev/zram0
      doas /sbin/swapon /dev/zram0 --priority -1
      Firefox ではないとしても、残念ながら国家行政サイトのように JavaScript が必須なシングルページ作業には Luakit が悪くないかもしれない
    • そのネットブックではどんな OS を使っているのか気になる
      最近 Intel Atom のネットブックを手に入れたので、軽くて実用的な OS を探しているところ
      Debian も試したが Firefox があまりに遅く、今なら Dillo で再挑戦する価値があるかもしれない
  • 拡張システムが興味深く、w3m のローカル CGI スクリプトを思い出した
    w3m のローカル CGI は、man ページビューア、ブックマークシステム、urimethodmap と組み合わせた追加プロトコルの実装に使える
    Dillo にも同様に man プラグインやブックマーク用 DPI プラグインがあるようで、man: のようなユーザー定義スキームも可能そうだ
    w3m 以外にこうした方式をサポートするブラウザがあるとは知らず、HTTP まで同様のプラグイン構造の上に載せた個人プロジェクトを作っていたので、2つ目の参考事例ができた
    [0]: https://dillo-browser.github.io/old/dpi1.html
    [1]: https://github.com/dillo-browser/dillo-plugin-man

    • Dillo では多くの機能が DPI として実装されている
      file:, vsource:, ftp: のような「ウェブサイト」を実装するプラグインもあれば、Cookie・ダウンロード・ブックマーク処理のような機能を担うプラグインもある
      別プロセスなので、ブラウザを閉じてもダウンロードは継続する
      [1]: https://github.com/dillo-browser/dillo/tree/master/dpi
      ~/.dillo/dpidrc でプロトコルをプラグインバイナリに関連付け、外部プラグインとして gemini:, gopher:, さらには git: も可能だ
      少し前までは HTTPS も DPI プラグインとして実装されていたが、今はブラウザ本体に取り込まれている
    • 拡張システムは単純で扱いやすい
      Dillo プラグインを書くための薄い Go ライブラリを作り(https://github.com/boomlinde/dpi)、Gemini プロトコルプラグインも作った(https://github.com/boomlinde/gemini.filter.dpi)
      最近まで Dillo では https も DPI プラグインとして実装されていたと認識している
    • 記憶では、Arachne も似たようなことをしていた
  • Renato Bravo に連絡を取ってみることを提案する
    https://www.youtube.com/channel/UCuklruLsO-CFoKK_rjNXrXg
    https://www.youtube.com/watch?v=A6mb9qt2-3o
    上の動画で Renato は「ese es mi compañero Jorge」、つまり「彼が私の同僚 Jorge だ」と言っている
    LinkedIn で Renato Bravo を見つけたが、同一人物かどうかは分からない

    • いい考えだ
      Jorge と同じチリの Valparaíso 地域の出身なら、おそらくこの人かもしれない
      LinkedIn は使っていないが、誰かがメッセージを送ってくれるとありがたい
      [1]: https://cl.linkedin.com/in/renatobravo
  • 以前はサイトが完全に壊れるかどうかを確認するために Dillo でよくテストしていたが、Dillo があまりに古くなってしまったので NetSurf、w3m、elinks に移った
    復活は、特に低消費電力システムにとって心強い
    ただ、自前ホスティングの Mercurial リポジトリから、Microsoft GitHub という米国大企業所有の Git リポジトリへ移るのは残念で、それでもメンテナがメールパッチを受け付けるというので、アカウント作成や利用規約への同意が強制されるわけではない

    • 自前ホスティングが消えた主な理由がまさに自前ホスティングだったことを考えると、その不満は理解できる一方で少し奇妙にも聞こえる
    • GitHub へ移したのは、プロジェクトの可視性を高め、より多くの貢献を呼び込むための最初の一歩として妥当だと判断したからだ
      GitHub は少なくとも今後 5〜10 年は存続すると信じられるので、メインのウェブページにリダイレクト案内を出しておける
      それでも、自前ホスティングや federated forge に移るほうがよいという点には同意する
      関連する issue があり、現在の問題は Codeberg のような別の forge の無料アカウントでは macOS のような他プラットフォームで CI パイプラインを回す方法がないことだ
      長期的には実機を確保して自前ランナーを立て、複数アーキテクチャでもテストしたい
      [1]: https://github.com/dillo-browser/dillo/issues/39
      以前のプロジェクトではメールサーバまで自前ホスティングだったため巨大な単一障害点が生まれ、実際に大きく失敗したので、それを避けたい
      メールパッチ用にメーリングリストも検討しているが、sourcehut と googlegroups 以外で無料提供しているところをあまり知らない
  • 以前、Live CD の Puppy Linux で Dillo を使っていた記憶がある
    目標とする最小コンパイラは何か、長期計画があるのか、ファジングをするのか、CMake のような現代的ビルドシステムへ移行するのかが気になる

    • まだ目標最小コンパイラは決めていないが、CI に追加するのは難しくなさそうだ
      長期計画は、まず Dillo を死なせず、ディストリビューションから削除されないようにすることだ
      その次は使える自由時間次第だが、少なくともメンテナンスは続けたい
      ファジングの前に他ブラウザのテストスイートを追加すればレンダリング問題を多く見つけられそうで、特に自作の HTML/CSS パーサにはファジングが面白いかもしれない
      configure.ac を触ってみたところ、複数プラットフォームを対象にすると非常に苦痛で、クロスコンパイルも壊れている
      CMake サポートが他システムでどうかを確認したうえで Automake 系を安全に外せるか見たいが、3.1 リリース前に大きな変更は入れたくない
  • GitHubからコードを取得してビルドしてみたところ、デフォルトサイトがまだ dillo.org のままで、アクセスしようとするとブラウザが落ちた
    duckduckgo.com でも同様に落ち、OpenSSL の assert 失敗に関係しているようだった
    mbedTLS で再コンパイルすると、それらのサイトにアクセスできた
    このスレッドにログインして返信しようとしたが、ユーザー名とパスワードを入力してログインしても、エラーは出ずにログアウト状態のままだった

    • テストしてくれてありがとう。デフォルトサイトは新しいウェブサイトに変更する必要がある
      システム情報と OpenSSL のバージョンを含めて GitHub issue を立ててくれれば、再現を試みることができる
      ログインの問題は、Cookie が無効になっているためである可能性が高い
      https://dillo-browser.github.io/old/dillo3-help.html
      https://dillo-browser.github.io/old/Cookies.txt
      Dillo はデフォルトで全 Cookie が無効化されているため、サイトごとに手動で許可する運用が推奨される
      echo "news.ycombinator.com ACCEPT" >> ~/.dillo/cookies.txt
      その後、Cookie 設定を再読み込みさせるために DPI デーモンを再起動すればよい
      dpidc stop
  • Dillo がまだ関心を集めているのを見るのはうれしい
    以前 scuttlebutt で入手した Dillo プラグイン をかなりたくさん持っている
    dillo-adb, dillo-dat, dillo-finger, dillo-git, dillo-gopher, dillo-gemini, dillo-ipfs, dillo-ssb, dillo-ytdl があり、望むなら zip にまとめて送るので、fork してプロジェクトで引き継ぐこともできる

    • その大半は Charles が作ったもののようで、彼は scuttlebutt-web インターフェース を保守しているので、ホームページからダウンロードできる
      https://celehner.com/projects.html#dillo-plugins
      dillo-browser 組織配下の GitHub にコピーを保管する件も、すでに Charles と話してある
      zip ファイルのコピーを保管できるよう、issue を立ててアップロードしてくれてもよい
  • はるか昔に蒔いた種から続く作業が今も続いているのを見ると感慨深い