HN紹介:Dilloブラウザの復活
(dillo-browser.github.io)- 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開発者の管理下にない
セルフホスティングへ移行したプロジェクトインフラ
- DilloはGitHub中心の運用からセルフホスト型インフラへ移行しつつある
- 重要なデータはcgit serviceが提供するgitリポジトリに保存される
- リポジトリはCodebergとSourcehutに複製されている
- Gitリポジトリでソースを確認できる
- プロジェクト関連の主要リンクとして、Website、Git、Bug tracker、Mastodon、IRC、Mailing list、Liberapayが提供されている
リリース、ドキュメント、貢献方法
- latest release 3.2.0をダウンロードし、
README.mdの手順に従ってビルドできる - 最新の変更点はGit repositoryから直接クローンできる
-
ドキュメント
- User Manual: すべての機能の使い方を扱い、ブラウザと一緒に配布されてローカルで読める
- Topic Guide: Dilloとmpvを設定してURL上のマルチメディアファイルを開く方法など、マニュアルにない追加トピックを扱う
- Developer Documentation: ブラウザ内部の設計と実装を扱い、開発者に推奨される
-
貢献方法
プラグインで拡張されるプロトコルサポート
- プラグインは標準入力と標準出力で相互作用し、新しいプロトコルサポートを追加する
- 提供されているプラグイン例は次のとおり
- さらに多くのプラグインはgit repositoriesで確認できる
- 新しいプラグインを追加するには、リポジトリへのリンクと短い説明をメールで送ればよい
1件のコメント
Hacker Newsのコメント
macOS 12.7のM1 Macで問題なくビルドでき、インストールは macOS の案内どおりに
brew installパッケージと OpenSSL 3 を入れたうえで、./configureの前に OpenSSL のパスを設定するexportを実行すればよかったその後
make、sudo make install、dilloで起動するとすぐに動作し、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
CI では include フラグなしでも通るようだが、Mac を持っていないのでテストには限界がある
低スペックなハードウェアには、もっと高速で軽量なブラウザが本当に必要
SBC、Raspberry Pi、数年前のノート PC も他の部分は快適なのに、いつもブラウザの性能が足を引っ張る
結局は一部の要件のために Ryzen 7 と RAM 16GB が必要だと受け入れることになり、最大の計算負荷が MS Teams とウェブメールだという点がやるせない
驚くほど遅く、分かりにくく、バグも多く、タブも頻繁に落ちるので、ソフトウェアがそうあってはいけない例のように感じた
Microsoft がこれで問題ないと判断したのはいまだに不思議で、Slack はどうなのか気になる
競争があまりないから、そこまで頑張って作らないのかもしれない
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年以上うまく使ってきた素晴らしいソフトウェアだと感じる
Dillo には、画像デコード、HTML/CSS パース、ネットワークプロトコル、ローカルファイルアクセスのような、頻繁に攻撃対象になる複雑な部分に対するサンドボックスがない
大学時代、自宅では古いPentium 4を使っていたが、一般的なブラウザではタブを1つ開くのに30秒ほど待たなければならなかった
だから主に Dillo を使い、JavaScript が必要な記事は Google キャッシュを経由して Firefox に渡していた
ネットワークも遅かったので、HTML だけを取得する点が大きな助けになり、Dillo は何年もの間ずっと非常に高速だった
同じく非常に軽量だ
doas /sbin/modprobe zramdoas /sbin/zramctl --find --size 1024Mdoas /sbin/mkswap /dev/zram0doas /sbin/swapon /dev/zram0 --priority -1Firefox ではないとしても、残念ながら国家行政サイトのように JavaScript が必須なシングルページ作業には Luakit が悪くないかもしれない
最近 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
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 プラグインとして実装されていたと認識している
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 は少なくとも今後 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 のような現代的ビルドシステムへ移行するのかが気になる
長期計画は、まず 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 stopDillo がまだ関心を集めているのを見るのはうれしい
以前 scuttlebutt で入手した Dillo プラグイン をかなりたくさん持っている
dillo-adb,dillo-dat,dillo-finger,dillo-git,dillo-gopher,dillo-gemini,dillo-ipfs,dillo-ssb,dillo-ytdlがあり、望むなら zip にまとめて送るので、fork してプロジェクトで引き継ぐこともできるhttps://celehner.com/projects.html#dillo-plugins
dillo-browser 組織配下の GitHub にコピーを保管する件も、すでに Charles と話してある
zip ファイルのコピーを保管できるよう、issue を立ててアップロードしてくれてもよい
はるか昔に蒔いた種から続く作業が今も続いているのを見ると感慨深い
[1]: https://sources.debian.org/src/gzilla/0.1.5-3/bytesink.doc/
Jorge に連絡を取るのを手伝えるかもしれない