Show HN: Dillo 3.1.0 released after 9 years

(dillo-browser.github.io)

430 points | by rodarima 13 days ago

28 comments

  • rodarima 13 days ago
    Forgot to mention that we are also on Fedi: https://fosstodon.org/@dillo

    Here are some cherry picks:

    - Dillo on the Kindle: https://fosstodon.org/@dillo/112181258739093008

    - Dillo on an old Samsung phone: https://fosstodon.org/@dillo/112327798958777998

    • mikae1 13 days ago
      Stupid (and unthankful) question perhaps, but have you considered working on https://ladybird.dev instead? Kling and the small team seem to be making great progress.
      • rodarima 13 days ago
        AFAIK, Ladybird goal is to build an independent web browser from scratch that can render the "modern" web.

        Dillo original goal[1] is to provide access to the web to places with very bad internet speed or latency as well as old or resource constrained computers.

        [1]: https://dillo-browser.github.io/old/interview.html

        I don't think we will ever implement JS support, as that would increase a lot the minimum requirements to run Dillo and make the attack surface on the browser much bigger.

        • niutech 13 days ago
          Rather than joining Ladybird, it would be great to see a merge of Netsurf and Dillo as a very lightweight alternative to Blink/Webkit/Gecko/Goanna-based browsers.

          For low bandwidth or slow computers, also try Carbonyl Terminal (https://github.com/niutech/carbonyl-terminal).

          • shiomiru 13 days ago
            If you like Carbonyl, but want something simpler, you may also find my TUI browser Chawan[0] interesting. It supports CSS and JS (kind of...), but unlike Carbonyl, it has its own browser engine written from scratch. It also bears similarities to Dillo, in that it's easy to add custom protocols.

            [0]: https://sr.ht/~bptato/chawan/

            • niutech 13 days ago
              Very nice! Are there any binary packages to test it on Linux/WSL? Have you considered support for UTF-8 half-blocks or Sixel for graphics?
              • shiomiru 13 days ago
                > Are there any binary packages to test it on Linux/WSL?

                Some kind strangers have created unstable packages on the AUR[0] and NixOS[1]. The former is quite recent, the latter is somewhat older.

                > Have you considered support for UTF-8 half-blocks or Sixel for graphics?

                In fact, there is experimental support for the sixel & kitty protocols, but for now it's slow, ugly, and only works with PNG.

                You can play around with it by putting the following in ~/.config/chawan/config.toml:

                    [[siteconf]]
                    host = 'm\.xkcd\.com' # regex for URL matching; .* also works
                    images = true # try `cha m.xkcd.com'
                
                but you will see that it's undocumented for a reason...

                [0]: https://aur.archlinux.org/packages/chawan-git

                [1]: https://search.nixos.org/packages?channel=unstable&show=chaw...

          • anthk 13 days ago
            I think not, Dillo it's much faster than Netsurf, and it's often more stable.
            • niutech 13 days ago
              If you combine performance & stability of Dillo with better HTML5 support of Netsurf, you could get a great lightweight alternative to mainstream browsers.
              • anthk 13 days ago
                Often by using Dillo's minimal CSS web sites get far less broken than with Netsurf.

                With Dillo I'd just had as a 'new' feature, audio and video links opened with xdg-open (or any other plumber) and better Unicode support, which might be reduced due to FLTK, but FLTK itself calls XFT, so I doudt it, as I happened to perfectly open Motif based stuff compiled against XFT with the full coverage of the Unifont font set.

        • mikae1 13 days ago
          OK, thanks for clarifying the goal.
  • goosedragons 13 days ago
    Brings back memories. I used to use Dillo on Damn Small Linux on my hand me down laptop with 32MB RAM which even then was a pitiful amount for web browsing.
    • rodarima 13 days ago
      • anthk 13 days ago
        Dillo is my daily browser among Links under an N270 netbook.

        I might submit a photo with the device running Dillo.

    • oblio 13 days ago
      I've never browsed on anything faster than Links with image support and JS support. Before CSS took of it was stil usable and web pages loaded INSTANTLY.

      I don't I'll ever see anything like it again, despite 10-100x the computing power and 10-100x the bandwidth increases.

      • anthk 13 days ago
        Links+ it's still posting releases, it's 2.29 right now.

        http://links.twibright.com/

        • oblio 12 days ago
          The thing is, does it support CSS? I remember trying it a few years later and everything was unusable :-(((
    • idatum 13 days ago
      Yes, same -- for me a '98 Toshiba laptop running NetBSD. Nicer to use compared to lynx but not bloatware.
  • niutech 13 days ago
    2024 is a breakthrough year - first Netsurf 3.11 released after many years (https://news.ycombinator.com/item?id=38804205), Servo picked up from the dust, Ladybird getting better every month and now Dillo 3.1 resurrected after 9 years!
    • ptx 13 days ago
      I wonder if we'll see a revival of Grail [0], Guido van Rossum's browser from the the late 90s with support for Python-based applets. :)

      His draft paper [1] from 1996 mentions some limitations due to lack of support for threading, which is no longer an issue. And maybe the JIT that's currently being worked on will help with the "rather grim image of performance".

      On the other hand, the restricted execution mode in Python that Grail relies on has long since been removed (much like Java's corresponding features). Maybe OS-level sandboxing features (e.g. Capsicum, pledge, Landlock, etc.) could be used instead?

      [0] https://en.wikipedia.org/wiki/Grail_(web_browser)

      [1] https://grail.sourceforge.net/info/papers/restofus.html

  • rodarima 13 days ago
    By the way, there is a CSS bug in HackerNews that we discovered today[1] that is causing most of the rules to be wrongly parsed. I'm not sure if hn@ycombinator.com is the proper place to report it.

    https://lists.mailman3.com/hyperkitty/list/dillo-dev@mailman...

    Here is the bad rule:

        input[type=\"submit\"] { font-family:Verdana, Geneva, sans-serif; }
    • dang 13 days ago
      Should be fixed now. Thanks!
    • philipkglass 13 days ago
      Yes, email hn@ycombinator.com. Dang is very responsive.
    • ptx 11 days ago
      And another HN bug, I think: Comments are wrapped in "span" elements (which are inline elements) but contain "p" elements (block elements) which is not valid:

        <span class="commtext c00">...<p>...<p>...</span>
      
      The W3C HTML validator says: "Element p not allowed as child of element span in this context."

      This causes Dillo to render the text in grey from the second paragraph on.

      • rodarima 10 days ago
        Thanks, I reported it too by email.
        • ptx 10 days ago
          I wonder if HN sticks to the current HTML markup (which is full of validation errors!) to preserve compatibility with third-party clients that scrape and parse it?

          In that case, maybe we could get a query parameter along the lines of "useValidMarkup=1" (or a user setting might be better) to produce valid HTML for the benefit of niche browsers that expect it while preserving the current (invalid but stable) markup by default.

          • rodarima 8 days ago
            > I wonder if HN sticks to the current HTML markup (which is full of validation errors!) to preserve compatibility with third-party clients that scrape and parse it?

            I don't think so, but if it does I recommend they instead stick to the HTML (4.01 or 5) spec by default.

            > In that case, maybe we could get a query parameter along the lines of useValidMarkup=1" (or a user setting might be better) to produce valid HTML for the benefit of niche browsers that expect it while preserving the current invalid but stable) markup by default.

            They can guess the browser by the User-Agent and serve a "patched" version if needed (bluedwarf.top does it). But I would recommend doing against this, as it reduces the incentive for clients to get fixed and moves the responsibility to webmasters.

  • rogeliodh 13 days ago
    btw, "Dillo is a fast and small graphical web browser"
  • thriftwy 13 days ago
    Dillo just shows how fast the web without css, js and fonts is. It loads before you even lift your finger from the keyboard.
    • agumonkey 13 days ago
      20 tabs for less than 1MB of RAM. At one point I used it for programming docs browsing.
      • cxr 13 days ago
        People working on developer docs would do well to make them work well in terminal-based browsers, too. This should be the norm.
    • anthk 13 days ago
      Dillo supports a minimal amount of CSS. The issue it's mainly JS.
      • kristopolous 13 days ago
        It'd be interesting to make a "less ambitious" JS in the same way that embedded chips have these less ambitious "dialects" of c and c++.

        Like a js-mini that doesn't have the bells and whistles like opengl, bluetooth and midi support

        • anthk 13 days ago
          It exists, Duktape and Quickjs, but even on bigger browsers the support it's subpar.

          Shockingly, edbrowse parses JS pages well enough to login and post in some sites.

        • baq 13 days ago
          Ditch js altogether and just provide a minimal WASM interpreter. A dillo-compatible page could then ship with a js runtime as a shim.
        • cxr 13 days ago
          That's a category error. JS is a programming language. All the bells and whistles you mention are part of Web platform machinery with APIs through JS-level bindings accessible to programs written by website authors. The language/dialect has little to do with it; you're envisioning a different stack that would require a new browser engine, not a language.
  • h4sh 13 days ago
    the best dillo experience on macos is probably with https://github.com/crossbowerbt/dillo-plus/ ( I couldn't get dillo to compile easily on macos, it doesn't seem to detect ssl libraries installed on the system)

    you can do this to compile it on macos (tested on M1):

    install https://www.xquartz.org/ to have X11

    brew install fltk libjpeg #you might also need openssl@3 but unsure

    git clone https://github.com/crossbowerbt/dillo-plus/; cd dillo-plus

    # update the 1.3.8_1 fltk version sed 's/1.3.8_1/1.3.9/g' Makefile.options.MacOS > Makefile.options

    make -j8

    # find binary in ./src/dillo

    maybe someone should make a brew package (for both this and dillo-plus)..?

  • LAC-Tech 13 days ago
    Really cool. Will grab it when it hits the arch repos. Might make a comfy set up where I bookmark some low resource websites and use dillo to browse them. Fond memories from tiny linux distros that ran entirely in a few MB of ram using dillo.
    • rodarima 13 days ago
      It is orphan in Arch, but I will check tomorrow if I can apply for maintainer. In the meanwhile I have the AUR package[1] dillo-git:

      [1]: https://aur.archlinux.org/packages/dillo-git

      • rodarima 13 days ago
        It is on the Arch Linux repository now :-)

          # pacman -Syu dillo
    • marttt 13 days ago
      I think it is still the default browser for Tiny Core Linux.
  • Palomides 13 days ago
    how does dillo compare with netsurf? I've been considering porting netsurf to an unusual platform, but if dillo has substantially better handling of modern pages, I might use it instead
    • marttt 13 days ago
      I think Netsurf renders pages closer to what they "should" look like in a mainstream browser. However, a huge bonus for Dillo is that it is really easy to switch off CSS, images, etc if the page doesn't look "good", and only render the text (IMO this is also very much encouraged by the UI). I recall having some rendering annoyances with Netsurf, but this was at least 5 years ago.
    • rodarima 13 days ago
      What prevents you from doing some tests? We have seen Dillo running in a lot of old and not very common machines (Atari), so you may have some work already done.
      • Palomides 13 days ago
        nothing! I look forward to testing it out, just haven't had the time yet
    • SahAssar 13 days ago
      Are you also considering ladybird?
      • Palomides 13 days ago
        I hope to, though I'm a little concerned its design and dependencies will be harder to handle
        • niutech 13 days ago
          Ladybird is much more heavyweight at this point, it uses hundreds MB of RAM, not tens MB like Dillo.
  • forgotmypw17 13 days ago
    Yes! Thank you so much. I love this browser, and I'm really grateful to you for maintaining it.

    I test my websites with Dillo diligently, so I have some re-testing to do now. :)

  • cookiengineer 13 days ago
    Do you test the engine against acid3?

    I think what we need would also be something like acid4 as a test suite, because CSS4 with its flow-root rework is kinda hard to implement for browser engines from the CSS2.1 age. Basically everything has been changed when it comes to the parser's grammar and lexical approach. Things like nested conditions in CSS through media queries or supports queries are impossible to implement without rewriting the parser from scratch.

    Do you plan on implementing all the event/media/supports related stuff from an isolated CSS perspective, including pointer events, transitions and animations?

    Because having the @supports queries unified across the board would help a lot supporting older browsers without animations or without a tweening engine.

    • zamadatix 12 days ago
      Things like WPT (Web Platform Tests) and Test262 have largely replaced the old Acid test line, albeit they aren't as flashy/fun/user friendly so they don't have as much public attention as the Acid tests did.
  • khimaros 13 days ago
    is there a document or code reference that describes the subset of HTML/JS/CSS which is supported by dillo? i've seen a number of people wishing for realistically achievable "HTML-lite" that could be targeted as an alternative to separate protocols like Gemini and dillo's baseline feels like it would be a good starting point.
    • niutech 13 days ago
      Probably HTML 4.01 spec.
      • khimaros 9 days ago
        dillo supports some HTML5
  • vouaobrasil 13 days ago
    I love these minimal browsers. Much better than the modern-style web for sure.
    • ptek 13 days ago
      ugh tell me about it. Especially with all the frame works added :(.

      And the CSS wizards who remove the underline on the link, so when I'm helping people over the phone they can't find the link :'-(

      And the damn trackers :(

  • 627467 13 days ago
    TIL of Spartan Protocol. I love Dillon, how is it handling modern security features like new versions of TLS or SSL?
    • rodarima 13 days ago
      > TIL of Spartan Protocol

      You can browse spartan pages with a Dillo plugin[1], as well as Gopher, Gemini and others.

      [1]: https://dillo-browser.github.io/#plugins

      > how is it handling modern security features like new versions of TLS or SSL

      We support OpenSSL 1.1 and 3 (and any other API-compatible), LibreSSL and mbedTLS 2 and 3. You can choose the one you like/trust more at link time.

    • Whitespace 13 days ago
      It's in the changelog summary:

      > Add support for OpenSSL, LibreSSL and mbed TLS for HTTPS, which is now enabled by default.

  • sylware 13 days ago
    If you are interested in dillo, have a look at netsurf, another css renderer, but this one has the big advantage to require only a plain an simple C compiler, not a gigantically complex c++ compiler.

    That said, more noscript/basic (x)html browsers, the better, even written with computer languages with an extremely complex syntax (rust/java/etc).

    • anthk 13 days ago
      Unless Netsurf compiles with TinyCC, cparser or cproc, sadly both gcc and clang are bloated.
      • sylware 13 days ago
        I did a plain and simple C port of bzip2 busybox code for plain and simple C compilers: on bzip2 compression, tinycc is really slow, ~2 times slower than gcc (13.2 -O2)... but cproc/qbe gets... ~70-80% of gcc speed. Switching to cproc/qbe would clearly be a win for a lean open source stack (which de-facto excludes c++ and similar ultra-complex syntax computer languages).

        In my project list: a minimal linux kernel with gcc-cleaned C code.

  • zem 13 days ago
    awesome work! dillo used to be my standard documentation browser when projects started using html for their docs, it was snappy and opened files almost instantly
    • rodarima 13 days ago
      You may like this plugin[1] to read local man pages as properly formated HTML pages.

      [1]: https://github.com/dillo-browser/dillo-plugin-man

      More plugins: https://dillo-browser.github.io/index.html#plugins

      • anthk 13 days ago
        The gopher one it's broken upon using a URL with no selector: gopher://sdf.org for instance. it defaults to a 0 one so it doesn't show up right, you need to state gopher://sdf.org/1/ by hand. Otherwise, it works great.

        On the man plugin, for the users with mandoc/mdoc, I found a bug, '-T html' should be '-Thtml' without spaces. Then works fine.

      • zem 13 days ago
        nice :) thanks for the pointer
  • marttt 13 days ago
    Made my day, massive thanks! Dillo must be my all time favorite browser by far. Responsiveness, modular UI and excellent config file -- everything about it is pure joy, really.
  • kome 13 days ago
    I loved Dillo! great to see new activity
  • johnklos 12 days ago
    I just compiled and uploaded dillo 3.0.5 for NetBSD/m68k... Now I need to try 3.1.0!
    • johnklos 11 days ago
      ...and it compiled just fine, and ran fine on first launch. Excellent!
  • anthk 13 days ago
    The coverage on CJK fonts it's still bad, even on supported fonts. Also, a tip: <audio> and <video> tags should be able to be redirected into a media player, or xdg-open.
    • rodarima 13 days ago
      There are a lot of features waiting to be included in Dillo. We focused on solving bugs first and tried to get as few features as posible to get the 3.1.0 out as soon as posible.

      Apart from CJK, there are other issues with fonts that we have to solve too. Feel free to open more issues: https://github.com/dillo-browser/dillo/issues

  • krylon 13 days ago
    Thank you very much!!!
  • ptek 13 days ago
    Thanks.

    Will try this on NetBSD :)

    • jmclnx 13 days ago
      me too :) actually NetBSD is where I use Dillo the most! Congratulations to the Dillo Team.

      And https://daemonforums.org/ works great with dillo, with dillo you can even log into daemonforums. The ID ywill not be saved, but AFAIK no other forum allows login when in dillo.

  • hanniabu 13 days ago
    screenshots?
  • throwaway984393 13 days ago
    I can still vaguely remember when the web was mostly just HTML, images, css, and the occasional plugin content like Flash, Java, and RealPlayer. You could really do a lot of stuff in a tiny package. Now you have to run a pseudo-operating system to deliver bizarre bloated applications via text. Technology didn't used to make me sad...

    I once shipped Dillo in a tiny memory resident distro, it was fantastic. Happy to see its return.

  • floxy 13 days ago
    Anyone ever compile a browser with emscripten to wasm? So that you could try out a new browser without having to download and install it? I think that could be genuinely useful in instances like this (try-before-you-buy-browser-in-your-browser), instead of just a recursive curiosity.
    • littlestymaar 13 days ago
      Please bring a new step of “The birth and death of JavaScript” [1] to the real world (but still not the nuclear war part of it, thanks).

      [1]: https://www.destroyallsoftware.com/talks/the-birth-and-death...

    • bmacho 13 days ago
      You probably can't try out a browser in the browser, because of the CORS rules.
      • crznp 13 days ago
        You could if the host domain acted as a VPN/proxy
        • genewitch 13 days ago
          the cloudpilotemu project can use this host browser as a proxy thing so you can sync your emulated (in the browser) to your PC as well as give the emulator internet access, likely one way to have a browser in a browser.

          I didn't try it out, though, i just read it in the documentation.

      • niutech 13 days ago
        There is WebKit browser in browser: https://trevorlinton.github.io/
        • bmacho 13 days ago
          That's not a browser (even if you renamed it to "webkit browser"), and not working
          • niutech 12 days ago
            Technically it is a web browser engine (WebKit) ported to JS and it works in the latest Firefox (shows a tiger).
    • niutech 13 days ago
    • rodarima 13 days ago
      This was already asked the last time[1], but I think it would miss the point of Dillo.

      [1]: https://news.ycombinator.com/item?id=38853053

      • yjftsjthsd-h 13 days ago
        In some ways it would miss the main use of dillo, but at the same time if you were going to embed a browser like that surely dillo is a great option precisely because of how light it is.
  • cxr 13 days ago
    From <https://dillo-browser.github.io/dillo.org.html>

    > we have setup a new website based on GitHub pages (so hopefully it won't dissapear soon)

    Why cede control of your namespace to GitHub, though? You can host stuff on GitHub Pages without having to go through github.io to get there. Just grab another (cheap) domain and set up a CNAME record to point to GitHub Pages.

    • rodarima 13 days ago
      Because I considered it a good starting point as I can place a redirect notice there if we move to another place, without worrying we will lose the DNS again. If you want to help, feel free to do so :-)
      • cxr 13 days ago
        dilloproject.org

        This cost me $17.32 for two years—so this time next year, even if there's not $11 or whatever available, there'll be a whole other year to come up with it.

        NearlyFreeSpeech.NET (which this isn't using right now; it's just on a free static host) allows anyone to deposit funds into an account for sites hosted there, not just the person behind the site, which means it can in theory stay up indefinitely, even if the person in charge is incapacitated and/or stops putting their own money into it (so long as they don't actively take an interest against its continued operation).

    • fn-mote 13 days ago
      > Just grab another (cheap) domain

      The post explains how they lost their long-held domain name. At least GitHub won't dry up and blow away if you miss a payment.

      They're all cheap at the start... and do not necessarily stay that way.

      The very end of the post makes it clear this is a temporary situation.

      • cxr 13 days ago
        wat

        They didn't lose dillo.org because it suddenly became not cheap. They didn't "lose" it at all—they were never in control of it. The post explains that it lapsed because whoever had it didn't renew, and it wouldn't matter much, because the person who was in charge is no longer involved with Dillo, anyway, which would have made dillo.org a true zombie site.

        > The very end of the post makes it clear this is a temporary situation

        There's no such thing when it comes to namespaces. Which is my whole point.

        If they had grabbed dilloproject.org (or whatever) today, they could continue using that no matter where they're actually hosting the pages in the future. Once you're in somebody else's namespace, though, the only thing you can do is abandon it after adopting a new one and hope that a redirect suffices.

  • riffic 13 days ago
    Again I love how posts like these have no context what a Dillo is. While it's not hard to find that info out on my own, it could have also been done by the poster.

    kudos on shipping code I guess.