What do you want from a net module? We're having an ok time using the built-in io_uring support in the stdlib, but there's not yet a generic event loop that abstracts over epoll/io_uring/select/kqueue/whatever Windows has.
We don't need anything. Like any technology it has pros and cons. The pro side being it improves performance for users with certain network conditions.
That all depends on the congestion control algorithm. Different implementations of TCP can use different algorithms while still being compatible. The same is true of QUIC.
To derive maximum benefit (or even just most of the benefit) of a tailored congestion control algorithm, you'll want to control both sides, keeping them in sync as you iterate improvements and changes. And maintain different flavors for different application environments. Only huge companies like Google and Facebook will be able to do this effectively.
QUIC does have more than just different congestion control For example it has forward error correction which can be very important for lossy connections.
There are other improvements that can't really be added to TCP either such as roaming between IP addresses. (MPTCP exists but IIUC requires make-before-break which is not always possible).
My personal opinion would prefer to improve those networks vs going UDP for http(s). Until spoofing, amplification attacks on UDP are properly tackled and not causing most internet outages, I'm not really looking forward to a UDP web (http/3)
Does http3 have a problem with amplification on the first answer packet?
I'm not sure spoofing is something transport protocols have to solve though. Authenticated bgp and source filtering is the layer for it and we needed it for decades already.
> Until spoofing, amplification attacks on UDP are properly tackled
This is already addressed by QUIC (the transport protocol used by HTTP/3). Those things are no more of a problem for HTTP/3 than they are for HTTP/2 or HTTP/1.
I have the opinion that we don't need anything past HTTP/1.1 on 3G internet. Anything better is a luxury which is not necessary. But that's my threshold of comfort.
Luxury! Back in my time we had to wait for the mailman to bring us our webpages on printed out paper! That we had to read by the light of candles which we had to make ourselves! These young kids with their fancy "HTTP is a requirement" mindset.
/s of course. But what a wonderfully arbitrary threshold to set it at 3G+HTTP/1.1 :)
I don't know about average web pages, but websites that I use regularly are loading quite fast. 3G in my village is something around 10 Mbits/s, youtube is absolutely fine, for example.
PS may be it's not strictly 3G, but it's displayed as 3G on my phone.
You would be right if 3G didn't jump down to 2G randomly, 4G does not have this flaw, 5G is meaningless.
HTTP/1.1 is the final transport for humanity, but you need fiber (external IP, preferably static, but operators/governements are not helping) to sell something.
HTTP/2 has head of line blocking issue.
HTTP/3 wont become a standard outside of biased actors like Google.
A lot of the world has killed off 2G (e.g. in Australia it all got shut down 3–5 years ago), and it’s on the chopping block in a lot of the rest of the world (e.g. looks like the remaining 2G services in the USA goes EOL by the end of next year). 3G is also already on the chopping block in many places (e.g. looks like next year in the USA, and in Australia its spectrum has steadily been being reallocated in recent years, and the biggest telco is scheduled to kill it altogether in 2024). Fortunately after that it’s designed in compatible ways, so 4G and 5G and whatever comes after that can all coexist.
For the HTTP versions, I’d put it more this way:
HTTP/1.1 is the baseline that will continue to work forever.
HTTP/2 is normally a significant improvement over HTTP/1.1, but it has one crucial flaw which makes it worse than the alternative of half a dozen HTTP/1.1 connections on connections with high packet loss.
HTTP/3 is the best of both worlds, roundly better than HTTP/1 and HTTP/2, but because it’s using UDP, it’ll have some teething issues for a few years because of badly-configured corporate equipment. But it will become widely supported in server software—there’s no reason for it not to.
You're probably not serving millions of users every day though.
Btw, most production setups don't really have to do anything to support it, as pretty much all load balancers already do. And there isn't any big performance gain if it's only intranet traffic.