1P by GN⁺ | ★ favorite | 댓글 1개
  • Dillo는 오래되거나 작은 머신과 느린 연결까지 겨냥하는 빠르고 작은 그래픽 웹 브라우저로, Linux·BSD·MacOS·Cygwin 기반 Windows·Atari에서 실행됨
  • C/C++와 적은 의존성, 자체 실시간 렌더링 엔진, FLTK GUI 라이브러리를 조합해 큰 페이지에서도 낮은 메모리 사용량과 빠른 렌더링을 추구함
  • HTTP, HTTPS, FTP, 로컬 파일을 기본 지원하며, 어떤 언어로도 작성 가능한 플러그인으로 새 프로토콜을 확장할 수 있음
  • 프로젝트는 웹 진입 장벽을 낮추고 개인 보안·프라이버시와 소프트웨어 효율성을 중시하는 방향을 유지함
  • 최신 릴리스는 3.2.0이고, 주요 데이터는 자체 git 저장소에 보관되며 Codeberg와 Sourcehut에도 복제됨

작고 빠른 그래픽 브라우저

  • Dillo는 빠르고 작은 그래픽 웹 브라우저임
  • Linux, BSD, MacOS, Cygwin을 통한 Windows, Atari에서 실행됨
  • 구현 방식

    • C와 C++로 작성됐고 의존성이 적음
    • 자체 실시간 렌더링 엔진을 구현함
    • 큰 페이지에서도 메모리 사용량이 낮고 렌더링이 빠름
    • 빠르고 군더더기 없는 FLTK GUI 라이브러리를 사용함
  • 기본 기능과 지향점

    • HTTP, HTTPS, FTP, 로컬 파일을 지원함
    • 어떤 언어로도 작성 가능한 플러그인으로 확장 가능함
    • GPLv3 라이선스의 자유 소프트웨어임
    • bug meter로 작성자가 웹 표준을 따르는 데 도움을 줌
    • 웹 진입 장벽 낮추기, 오래되거나 작은 머신과 느린 연결 지원, 개인 보안과 프라이버시, 높은 소프트웨어 효율성을 목표로 함
    • 기능 사용법은 User Manual에서 확인할 수 있음
    • dillo.org 도메인은 더 이상 Dillo 개발자가 통제하지 않음

자체 호스팅으로 옮긴 프로젝트 인프라

릴리스, 문서, 기여 경로

  • latest release 3.2.0을 내려받고 README.md 지침에 따라 빌드할 수 있음
  • 최신 변경 사항은 Git repository에서 직접 클론 가능함
  • 문서

    • User Manual: 모든 기능 사용법을 다루며 브라우저와 함께 배포돼 로컬에서 읽을 수 있음
    • Topic Guide: Dillo와 mpv를 설정해 URL의 멀티미디어 파일을 여는 방법 등 매뉴얼에 없는 추가 주제를 다룸
    • Developer Documentation: 브라우저 내부 설계와 구현을 다루며 개발자에게 권장됨
  • 기여 방법

    • Dillo로 웹을 탐색하다 동작하지 않는 부분을 찾으면 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에서 확인할 수 있음
  • 새 플러그인을 추가하려면 저장소 링크와 짧은 설명을 이메일로 보내면 됨

댓글과 토론

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

    • macOS 설치 안내에 OpenSSL 경로 설정을 추가해야겠다고 봄
      CI에서는 include 플래그 없이도 되는 듯하지만, Mac을 직접 갖고 있지 않아 테스트에는 한계가 있음
  • 저사양 하드웨어에는 더 빠르고 가벼운 브라우저가 정말 필요함
    SBC, Raspberry Pi, 몇 년 지난 노트북도 다른 부분은 쾌적한데 항상 브라우저 성능이 발목을 잡음
    결국 일부 요구사항 때문에 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는 그래픽 모드도 지원함
    • 이건 꽤 과장된 얘기라고 봄
      적당한 저가형 데스크톱/노트북 CPU와 RAM 4GB면 MS Teams를 돌리기에 충분하고, 더 실용적이고 효율적인 메일 전송 에이전트가 있는데 굳이 웹메일을 쓰는 이유도 잘 모르겠음
  • 상황을 생각하면 Dillo가 이어진다는 소식이 반가움
    2009년쯤 나온 Intel Atom N270 넷북 두 대와 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를 썼는데, 일반 브라우저는 탭 하나 여는 데 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이 괜찮을 수 있음
    • 그 넷북에서 어떤 운영체제를 쓰는지 궁금함
      최근 Intel Atom 넷북을 구했는데, 가볍고 쓸 만한 운영체제를 찾는 중임
      Debian도 시도했지만 Firefox가 너무 느렸고, 이제 Dillo로 다시 시도해볼 만할지도 모르겠음
  • 확장 시스템이 흥미롭고, w3m의 로컬 CGI 스크립트가 떠오름
    w3m 로컬 CGI는 man 페이지 뷰어, 북마크 시스템, urimethodmap과 결합한 추가 프로토콜 구현에 쓰일 수 있음
    Dillo도 비슷하게 man 플러그인과 북마크용 DPI 플러그인을 갖고 있어 보이며, man: 같은 사용자 정의 스킴도 가능한 듯함
    w3m 말고 이런 방식을 지원하는 브라우저가 있는 줄 몰랐고, HTTP까지 비슷한 플러그인 구조 위에 올린 개인 프로젝트를 만들고 있었는데 두 번째 참고 사례가 생김
    [0]: https://dillo-browser.github.io/old/dpi1.html
    [1]: https://github.com/dillo-browser/dillo-plugin-man

    • Dillo에서는 많은 기능이 DPI로 구현되어 있음
      file:, vsource:, ftp: 같은 “웹사이트”를 구현하는 플러그인도 있고, 쿠키·다운로드·북마크 처리 같은 기능을 맡는 플러그인도 있음
      별도 프로세스라 브라우저를 닫아도 다운로드가 계속됨
      [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년은 살아 있을 것이라고 믿을 수 있어서, 메인 웹페이지에 리다이렉트 안내를 걸어둘 수 있음
      그래도 자체 호스팅이나 연합형 forge로 옮기는 편이 더 낫다는 데 동의함
      관련 이슈가 있고, 현재 문제는 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 이슈를 열어주면 재현을 시도해볼 수 있음
      로그인 문제는 쿠키가 꺼져 있어서 그럴 가능성이 큼
      https://dillo-browser.github.io/old/dillo3-help.html
      https://dillo-browser.github.io/old/Cookies.txt
      Dillo는 기본적으로 모든 쿠키가 비활성화되어 있으므로, 사이트별로 수동 허용하는 편이 권장됨
      echo "news.ycombinator.com ACCEPT" >> ~/.dillo/cookies.txt
      이후 쿠키 설정을 다시 읽도록 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으로 묶어 보내서 포크하고 프로젝트에서 이어갈 수 있음

    • 대부분 Charles가 만든 것으로 보이고, 그는 scuttlebutt-web 인터페이스를 유지하고 있어서 홈페이지에서 내려받을 수 있음
      https://celehner.com/projects.html#dillo-plugins
      dillo-browser 조직 아래 GitHub에 사본을 보관하는 문제도 이미 Charles와 이야기했음
      zip 파일 사본을 보관할 수 있도록 이슈를 열고 업로드해줘도 좋음
  • 오래전에 심은 씨앗에서 이어진 작업이 계속되는 걸 보니 뿌듯함