Show HN: Dillo 3.1.0 released after 9 years
430 points
13 days ago
| 27 comments
| dillo-browser.github.io
| 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!

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

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

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

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

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

reply
anthk
13 days ago
[-]
I think not, Dillo it's much faster than Netsurf, and it's often more stable.
reply
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.
reply
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.

reply
niutech
12 days ago
[-]
Dillo Plus supports external media playback (https://github.com/crossbowerbt/dillo-plus/#external-media-p...), maybe it could be backported to Dillo?
reply
mikae1
13 days ago
[-]
OK, thanks for clarifying the goal.
reply
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.
reply
rodarima
13 days ago
[-]
reply
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.

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

reply
anthk
13 days ago
[-]
Links+ it's still posting releases, it's 2.29 right now.

http://links.twibright.com/

reply
oblio
12 days ago
[-]
The thing is, does it support CSS? I remember trying it a few years later and everything was unusable :-(((
reply
idatum
13 days ago
[-]
Yes, same -- for me a '98 Toshiba laptop running NetBSD. Nicer to use compared to lynx but not bloatware.
reply
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!
reply
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

reply
niutech
12 days ago
[-]
You can run Python in every web browser using PyScript (https://pyscript.net) or Brython (https://brython.info).
reply
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; }
reply
dang
13 days ago
[-]
Should be fixed now. Thanks!
reply
fallingsquirrel
13 days ago
[-]
5 minute bugfix, on a Saturday no less. Incredible
reply
Sabinus
13 days ago
[-]
Dang is a treasure.
reply
rodarima
13 days ago
[-]
Thanks!
reply
philipkglass
13 days ago
[-]
Yes, email hn@ycombinator.com. Dang is very responsive.
reply
ptx
12 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.

reply
rodarima
10 days ago
[-]
Thanks, I reported it too by email.
reply
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.

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

reply
rogeliodh
13 days ago
[-]
btw, "Dillo is a fast and small graphical web browser"
reply
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.
reply
agumonkey
13 days ago
[-]
20 tabs for less than 1MB of RAM. At one point I used it for programming docs browsing.
reply
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.
reply
anthk
13 days ago
[-]
Dillo supports a minimal amount of CSS. The issue it's mainly JS.
reply
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

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

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

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

reply
rodarima
13 days ago
[-]
It is on the Arch Linux repository now :-)

  # pacman -Syu dillo
reply
marttt
13 days ago
[-]
I think it is still the default browser for Tiny Core Linux.
reply
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
reply
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.
reply
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.
reply
Palomides
13 days ago
[-]
nothing! I look forward to testing it out, just haven't had the time yet
reply
SahAssar
13 days ago
[-]
Are you also considering ladybird?
reply
Palomides
13 days ago
[-]
I hope to, though I'm a little concerned its design and dependencies will be harder to handle
reply
niutech
13 days ago
[-]
Ladybird is much more heavyweight at this point, it uses hundreds MB of RAM, not tens MB like Dillo.
reply
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. :)

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

reply
zamadatix
13 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.
reply
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.
reply
niutech
13 days ago
[-]
Probably HTML 4.01 spec.
reply
khimaros
9 days ago
[-]
dillo supports some HTML5
reply
vouaobrasil
13 days ago
[-]
I love these minimal browsers. Much better than the modern-style web for sure.
reply
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 :(

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

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

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

reply
anthk
13 days ago
[-]
Unless Netsurf compiles with TinyCC, cparser or cproc, sadly both gcc and clang are bloated.
reply
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.

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

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

reply
zem
13 days ago
[-]
nice :) thanks for the pointer
reply
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.
reply
kome
13 days ago
[-]
I loved Dillo! great to see new activity
reply
johnklos
12 days ago
[-]
I just compiled and uploaded dillo 3.0.5 for NetBSD/m68k... Now I need to try 3.1.0!
reply
johnklos
12 days ago
[-]
...and it compiled just fine, and ran fine on first launch. Excellent!
reply
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.
reply
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

reply
krylon
13 days ago
[-]
Thank you very much!!!
reply
ptek
13 days ago
[-]
Thanks.

Will try this on NetBSD :)

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

reply
rodarima
13 days ago
[-]
Thanks! You should be able to login most forums that don't require JS. Keep an eye on the cookies configuration[1] which are disabled by default.

[1]: https://dillo-browser.github.io/user_help.html#cookies

reply
hanniabu
13 days ago
[-]
screenshots?
reply
rodarima
13 days ago
[-]
reply
iamthejuan
13 days ago
[-]
Click Home.
reply
iamthejuan
13 days ago
[-]
Chuck Home.
reply
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.

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

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

reply
niutech
13 days ago
[-]
There is WebKit browser in browser: https://trevorlinton.github.io/
reply
bmacho
13 days ago
[-]
That's not a browser (even if you renamed it to "webkit browser"), and not working
reply
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).
reply
niutech
13 days ago
[-]
reply
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

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

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

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

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

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

reply
rodarima
13 days ago
[-]
TLDR: Dillo is a fast and small graphical web browser. It kind of died in 2017 and this is the first release after 9 years from the last one.

You can read the main website for more details[1].

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

And the release page[2], which explains a bit of the history of the project and the current state.

[2]: https://dillo-browser.github.io/latest.html

reply
bckr
13 days ago
[-]
You could have used this comment to tell us what it is.

It’s a minimalistic web browser that works on low powered machines

https://dillo.org/

reply
rodarima
13 days ago
[-]
Please don't link to dillo dot org, see: https://dillo-browser.github.io/dillo.org.html
reply
bckr
13 days ago
[-]
Thanks
reply
riffic
13 days ago
[-]
nah someone else in the thread already did that.
reply