Show HN: Dillo 3.1.0 released after 9 years (dillo-browser.github.io)

430 points by rodarima ↗ HN
As commented before[1], I've been working on the past months to get the Dillo back to life and today I'm happy to release the 3.1.0 version, after almost 9 years since the last one.

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

During this time:

- A new mailing list was created[2] which is beginning to get some messages and patches. It is available in gmane via NNTP at gmane.comp.web.dillo.devel.

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

- A LiberaPay page[3] which received the first donations (thanks!).

[3]: https://liberapay.com/dillo/

- Some more bugs where fixed and new features where added (details in the release page and/or changelog).

Thanks to all the people that contributed with patches and tests. Now let's see if we can make it land in some distros!

111 comments

[ 4.5 ms ] story [ 231 ms ] thread
Dillo just shows how fast the web without css, js and fonts is. It loads before you even lift your finger from the keyboard.
Dillo supports a minimal amount of CSS. The issue it's mainly JS.
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

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.
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.

Ditch js altogether and just provide a minimal WASM interpreter. A dillo-compatible page could then ship with a js runtime as a shim.
20 tabs for less than 1MB of RAM. At one point I used it for programming docs browsing.
People working on developer docs would do well to make them work well in terminal-based browsers, too. This should be the norm.
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.
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

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.
Yes, same -- for me a '98 Toshiba laptop running NetBSD. Nicer to use compared to lynx but not bloatware.
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.

Links+ it's still posting releases, it's 2.29 right now.

http://links.twibright.com/

The thing is, does it support CSS? I remember trying it a few years later and everything was unusable :-(((
Thank you very much!!!
btw, "Dillo is a fast and small graphical web browser"
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; }
Yes, email hn@ycombinator.com. Dang is very responsive.
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.

Thanks, I reported it too by email.
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.

> 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.

Fixed at HN side (thanks dang).
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.
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

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.
You probably can't try out a browser in the browser, because of the CORS rules.
You could if the host domain acted as a VPN/proxy
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.

There is WebKit browser in browser: https://trevorlinton.github.io/
That's not a browser (even if you renamed it to "webkit browser"), and not working
Technically it is a web browser engine (WebKit) ported to JS and it works in the latest Firefox (shows a tiger).
I love these minimal browsers. Much better than the modern-style web for sure.
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 :(

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.
I think it is still the default browser for Tiny Core Linux.
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)..?

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

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.
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.

OK, thanks for clarifying the goal.
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).

I think not, Dillo it's much faster than Netsurf, and it's often more stable.
If you combine performance & stability of Dillo with better HTML5 support of Netsurf, you could get a great lightweight alternative to mainstream browsers.
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.

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/

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?
> 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...

I loved Dillo! great to see new activity
TIL of Spartan Protocol. I love Dillon, how is it handling modern security features like new versions of TLS or SSL?
> 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.

It's in the changelog summary:

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

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
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.
nothing! I look forward to testing it out, just haven't had the time yet
Are you also considering ladybird?
I hope to, though I'm a little concerned its design and dependencies will be harder to handle
Ladybird is much more heavyweight at this point, it uses hundreds MB of RAM, not tens MB like Dillo.
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.
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.

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 :-)
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).

> 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.

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.

(comment deleted)
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.

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
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

nice :) thanks for the pointer
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.

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.

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.
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).

Unless Netsurf compiles with TinyCC, cparser or cproc, sadly both gcc and clang are bloated.
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.

Thanks.

Will try this on NetBSD :)

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.

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.
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. :)