Http3 support?

Not at the moment, sadly.

I’ve kept a branch of our container HTTP/3-ready since (checks notes) 2019, which you can check at GitHub - discourse/discourse_docker at http3.

The reason we have not rolled that out widely is due to a collection of problems in the overall ecosystem:

  • Nginx development slowed to a crawl, and they are not keeping up with new web tech anymore, like HTTP/3 or Early Hints.

  • Nginx’s modular architecture meant that we could add it via a module, and my branch uses Cloudflare’s nginx module, quiche, for that. But Cloudflare has moved away from nginx too, and that module was never considered production-ready.

  • I considered migrating to a more modern web server, like Caddy, but changes like that are super hard when you release self-hosted software that people will customize.

  • Moving to HAProxy would be an easier sell, but we use nginx for static file serving, which HAProxy won’t do.

  • The fact that OpenSSL maintainers basically sabotaged QUIC and halted the progress of the entire ecosystem for the equivalent of a decade.

All the above, plus all the inherent problems of the TCP → UDP move that is part of this, meant that this change was too risky for us to take.

Which is super sad, given that in the average household of the last 4 years, most of the traffic is already HTTP/3, as every big player has migrated to it years ago, like YouTube, Amazon, Shopify, Instagram, Twitch.tv, etc. This further increases the gap between big tech and small sites, and it’s a shame that we weren’t able to be early adopters here, as we were with SPDY, HTTP/2, and Brotli.

Given all that, if you want an easy 1-click solution to this whole mess, you can use Cloudflare in front of your Discourse instance.

10 Likes