The real problem is deeper than this. The actual question to ask is:
"What if we just stopped distributing and blindly executing untrusted binary blobs?"
A trusted compiler in the OS, and some set of intermediate representations for code distribution would solve a massive amount of security issues, increase compatibility, and allow for future performance increases and disallowing suspect code patterns (spectre, rowhammer, etc). Specializing programs at install time for the local hardware makes way more sense than being locked into hardware machine code compatibility.
I think it's more a case that browsers take security into account at the feature design phase, whereas other applications don't. That's actually a huge step in the right direction. Same thing with mobile OSes, which have a very preferable decision to sandbox individual applications, instead of running them with full user permissions & full user data access, like desktop OSes do.
Now, whether the browsers or mobile OSes actually are secure because of that, is a separate thing, but those are good steps to take.
Besides proton/wine/VMs for gaming which are all very good, console/computer emulation for gaming is solid in Linux, including literal plug and play joystick support.
REU is a bit of a cheat, and for some releases people are using cartridges with far higher capacities than ever sold back in the day. Cross-platform tools and emulation are also huge dev speedups.
But a big thing is that back then, games were often made on a timescale of months, and with a budget. Hobbyist dev has no limits to how much time they want to sink into doing something properly. Ideas & techniques have had many years/decades to percolate into existence.
I use onion addresses to have basically a hash-addressable socket on the internet, which can be relocated without any additional configuration. It can even work without any inbound ports on the firewall.
However, I haven't done any serious roaming with such a configuration; has anybody tried it?
Yes. I can't stand that IPFS basically took the Freenet model, stripped out all the anonymity & privacy, and added the weird "interplanetary" marketing push.
I don't even have a Facebook account. But with my relatives that do, this stuff leaks in from seeing their coworkers' & acquaintances' posts and escalates over time once there's even the slightest hook with the algorithm. Any reasonable political opinion they might have in thumbs-upping some innocuous content eventually routes into the algo feeding more extremist content.
Most people don't outright block offtopic material, they just gloss over it, and it still ends up with influence because that's what Facebook optimizes for. Plus people will still take the occasional click of curiosity to see what some posts are all about, even if they're not really into that content.
Yes, if you do have the discipline to take a zero-tolerance personal policy and immediately block even inoffensive things that just touch into the realm of polarizing, you can probably keep your feeds clean. But most people (eg, non-HN types) don't understand what Facebook is doing and don't think to actively defend against it, and just absent-mindedly consume the feed with no click discipline.
Facebook (and most other businesses in the space) is a system of manipulating and editorializing individuals' social communication in order to extract engagement-related profit.
This is not a common carrier, but an active distorter.
What do you define "social media" as? If it's communication kept within circles of family, friends, colleagues, and enthusiast/interest groups, I really don't see much problem with it, just as forums/blogs/etc before it.
The two big problems poisoning this well are:
1) monetization usually reaches for manipulating people's personal socialization stream, and
2) public broadcast of personal content to the feeds of strangers, usually the most inflammatory subset because of point 1.
Across USB-C land, there's the various USB3s as well as Thunderbolt, DisplayPort, PCIe, and probably others, too, all sharing the same connector with arbitrary overlaps or omissions of compatibilities across the N-dimensional matrix.
I think this is par for the course in that subfield.
Part of it is the speed at which things change, both in the software ecosystems and in the change requests to sites. The reliance on comprehensive frameworks (which often need tons of workarounds and glue anyway) also reduces people's desire or experience in actually constructing good abstractions.
Compound this with the fact that startup environments generally don't care about anything other than shipping & pivoting, and want to defer all aspects of longevity.
The same problems exist all over the place, but I think are pretty prominent in these situations in particular.
Even if you like one, you should (_after_ you finished learning the first) also go through the other alternatives, for perspective. And even though you found one that worked for you, doesn't mean that others won't click even better.
The only way you can truly evaluate the choice between tools is to be familiar with all of them, but yes just start with one arbitrary one that seems fine, instead of trying to learn them all before deciding. But at the end you should know something about all of them.
"What if we just stopped distributing and blindly executing untrusted binary blobs?"
A trusted compiler in the OS, and some set of intermediate representations for code distribution would solve a massive amount of security issues, increase compatibility, and allow for future performance increases and disallowing suspect code patterns (spectre, rowhammer, etc). Specializing programs at install time for the local hardware makes way more sense than being locked into hardware machine code compatibility.