Live data from Hacker News

HTTP/3 is everywhere but nowhere

httptoolkit.com

371–380 of 504 posts

Re: HTTP/3 is everywhere but nowhere

#371

Earlier quoted context omitted.

> side note: sad that .NET and C# are not considered "major I've said it before on here, but the tech community severely underrates .NET today. It's not Windows only (and hasn't been for ~8 years) plus C# is a very nice language. F# is also an option for people who like functional languages. I'd highly recommend giving it a try if you haven't already.

.NET suffers from the long lasting reputational taint of Microsoft. It was seen as the sworn enemy of open source and Linux, and for good reason. Today’s MS is not what it was back then. But long memories are not a bad thing, really. If .NET suffers a bit from some unfair perception, perhaps that can remind MS and others what happens when you take an aggressively adversarial approach.

Why hasn't Java been tainted the same since Oracle bought Sun and now 100% controls Java's development? I am continuously surprised to see they continue to make major investments in the platform. Project Valhalla was started in 2014 and is still going strong. I keep waiting for Oracle to cancel all major Java improvements, then milk the remaining corpse.

Re: HTTP/3 is everywhere but nowhere

#372
post #231

Earlier quoted context omitted.

More than just that it came from MS. For a long time, .NET was completely proprietary, and only ran on Windows. Now it is open source and cross platform, but it is still fighting the momentum of being seen as Windows-only.

Can you name some examples of popular .Net applications on GNU/Linux or *BSD operating systems?

Sonarr/Lidarr and Jellyfin as a start, Ryujinx was one too in game emulation space until Nintentdo DMCA'd everything into oblivion.

These are user-facing applications anyway, not back-end ones which is the more common use-case of .NET (where Linux is the most popular OS).

Re: HTTP/3 is everywhere but nowhere

#373

Earlier quoted context omitted.

Where would you store the other 96 bits. In the body?

Ipv6 packet format was needed either way, but only with the 32-bit address space at first (the other 92 bits set to 0). You simply tell your system to start using v6 instead, and everything else stays the same. No dual-stack. Next step would be upgrading all those parts like DNS, DHCP, etc to accept the 128-bit addrs, which again can be done in isolation. Then finally, ISPs or home routers can start handing out longe…

There are two ways for me to interpret "simply tell your system to start using v6".

If it means upgrading every program, then your plan works but it's the same as how things work today. You're telling people to do a thing, and they aren't bothering. The "simple" step isn't simple at all.

If it doesn't mean upgrading every program, then your rollout fails on the last step. You start handing out longer addresses and legacy programs can't access them.

Re: HTTP/3 is everywhere but nowhere

#374
post #303

Earlier quoted context omitted.

Major reason for that is BSD Sockets and their leaky abstraction that results in hardcoding protocol details in application code. For a good decade a lot of software had to be slowly patched in every place that made a socket to add v6 support, and sometimes multiple times because getaddrinfo didn't reach everyone early enough.

> results in hardcoding protocol details in application code Are you suggesting that this could have been implemented a different way? Example: IP could be negotiated to upgrade from v4 to v6? I am curious about your ideas.

I think in principle, an application didn't need to know the exact format of an IP address, even if connecting directly to an IP. A simple idea that could have made application code much more IP-agnostic would have been for SOCK_ADDR_IN to take the IP in string format, not as a four-byte value. That way, lots of application code would not need to even be recompiled to move from a 4 byte IPv4 address to a 16 byte IPv6 address, whereas today they not only need to be recompiled, they need to be changed at the source level to use a new type that allows for both.

Of course, code that operates on packets, in the TCP/IP stack of the OS would have still needed to be rewritten. But that is far less code than "every application that opens a socket".

Of course, this only applies to code that uses IPs only to open connections. There's lots of application code that does more things with IPs, such as parsing, displaying, validating etc. All of this code would still need to be rewritten to accept IPv6 addresses (and its much more complex string representations), that part is inevitable.

Re: HTTP/3 is everywhere but nowhere

#375
post #231

Earlier quoted context omitted.

.NET suffers from the long lasting reputational taint of Microsoft. It was seen as the sworn enemy of open source and Linux, and for good reason. Today’s MS is not what it was back then. But long memories are not a bad thing, really. If .NET suffers a bit from some unfair perception, perhaps that can remind MS and others what happens when you take an aggressively adversarial approach.

More than just that it came from MS. For a long time, .NET was completely proprietary, and only ran on Windows. Now it is open source and cross platform, but it is still fighting the momentum of being seen as Windows-only.

Until I can do apt-install, it's got a problem with availability.

Re: HTTP/3 is everywhere but nowhere

#376
post #273

Earlier quoted context omitted.

It's not about different teams, it's that System.Windows.Forms is exactly what the namespace says. It's Windows Forms. It's a fairly thin wrapper over the Windows API. It's never going to be adapted to be cross-platform and isn't really something they've put any development work into for many years at this point. If you want a cross platform UI, use WPF with Avalonia. Or if you want something entirely from Microsoft…

JS is the only true cross-platform UI; sadly.

You spelled qt wrong

Re: HTTP/3 is everywhere but nowhere

#377

Earlier quoted context omitted.

Can .net produce cross platform libraries/executables like Go does? With Go I can develop on Mac and create executables for windows and Linux

Mono's been on Linux for like 20 years, maybe longer... C# is like Java, can run basically anywhere.

I think being on linux and being decent on linux are not the same, and there's .net problem.

Re: HTTP/3 is everywhere but nowhere

#378

Earlier quoted context omitted.

> It removes tons of overhead and cruft Can you elaborate? Here, or with links? What kinds of overhead and cruft?

* The header is a fixed length. * You can't fragment packets. * The redundant checksum header was removed. * No more private addressing (unless you're a glutton for punishment). * No more NAT (see above). * Simpler routing. * Doesn't require DHCP. It benefits hugely from the lessons learned with IPv4.

IPv6 packets can still be fragmented, but only at the source. IPv4 fragmentation has only worked this way in practice for a long time.

Private addressing is still needed with IPv6, it's a crucial part of how address allocation works, and it's the only way to reliably connect to a client-like IPv6 device on the local network, since its public IP address will change all the time for privacy reasons, assuming it respects best practices.

Routing is only simpler if the ISPs actually hand out the large prefixes they are supposed to. Not all of them do.

DHCP is still required for many use cases. So now you have two solutions for handing out addresses, and you need to figure out when to use SLAAC and when to use DHCP. This is strictly more complex than IPv4, not simpler. SLAAC is mostly just unnecessary cruft, a cute little simple path for limited use cases, but it can never replace DHCPv6 for all use cases (e.g. for subnets smaller than a /64, for communicating additional information like a local DNS server or NTP server, for complex network topologies, for server machines etc).

Re: HTTP/3 is everywhere but nowhere

#379
post #340

Earlier quoted context omitted.

I'm not an expert on HTTP/3, but vehemently disagree about IPv6. It removes tons of overhead and cruft, making it delightful for datacenter work. That, and basically guaranteeing you don't have to deal with the company you just acquired having deployed their accounts with the same 10/16 subnet your own company uses.

>That, and basically guaranteeing you don't have to deal with the company you just acquired having deployed their accounts with the same 10/16 subnet your own company uses. I always found that to be a desperate talking point. 'Prepare your network for the incredibly rare event where you intend to integrate directly' (didn't anyone hear of network segmentation?). It makes a lot more sense to worry about the ISP unilat…

> It makes a lot more sense to worry about the ISP unilaterally changing your prefix - something that can only happen in IPv6.

ISPs unilaterally change your DHCP address on IPv4 all the time. And in any situation where you would have a static address for IPv4, your ISP should have no problem giving you a static v6 prefix. This argument makes no sense at all.

Re: HTTP/3 is everywhere but nowhere

#380
post #377

Earlier quoted context omitted.

Mono's been on Linux for like 20 years, maybe longer... C# is like Java, can run basically anywhere.

I think being on linux and being decent on linux are not the same, and there's .net problem.

Can you link to anything recent which could support your argument?
Post reply on HN