Someone really needs to develop a lightweight VM container that we can stuff software in. Like, you know how you can buy DOS games on steam, and it just gives you dosbox preconfigured to play the game?

That, but for all software on all OSes

The idea would be to have a standardized-as-much-as-possible VM interface, and then your OS can implement that. New OS just needs a new implementation.

The point is protection against compatibility problems: it should be possible to run a PC game from 1982 and a video editing program from 2005, in the same way and be sure that you'll still be able to run them in another 30 years.

@foone Well, we did have Java, and Flash. Both made the mistake of object loading from the network which made them instant virus loaders. WASM is New Safer Java but dumb because it's built in a web browser.
@mdhughes @foone wasm is not tied to web browsers and it's not even particularly convenient to use from javascript
@mdhughes, I'm assuming that by ā€œit'sā€, you mean ā€œit isā€ rather than ā€œit hasā€ā€¦

@mdhughes When you make your sandbox "safe enough to run untrusted code" it's expected that some suit will immediately demand that it does.

Also, that era had a totally different mindset. Like, just send a COM object at a networked computer and expect it to run over there.

@foone this... would be the holy grail of virtualization 😲
@foone uxn pretty much is this idea @neauoire
Archival with a universal virtual computer (UVC) ⁑ Dercuano

100R — uxn

@gabrielbezerra @foone

That's a solution for a different problem - letting you write games/other software now that can run on many machines in the future. (Also its capabilities and performance are strictly limited by design, which is totally legit.)

I think what Foone is dreaming of is more like a super-duper version of VMWare or other hypervisor, to let you run *existing* software targeted to any OS, under any other OS/hardware.

And hell yeah that would be a huge step forward.

@foone This is basically just Java If It Didn't Suck.

The idea behind Java was pretty much exactly this. In practice it was too advanced for its time, and by the time it was "usable" it was unusable for that purpose because of the breaking changes it took to get it to "usable" rendering the old code unusable.

@foone sounds like an operating system with extra steps.

@foone
Isn't this also the idea behind game consoles?

And java.

Write once, test everywhere...

@foone unfortunately, I think xkcd has something covering this:

https://xkcd.com/927/

Also see, Java, POSIX...

The issue, I think, boils down to "why don't we all agree to live by the same rules". That's an open question that's probably existed in some form since the dawn of man and I suspect isn't going to be resolved any time soon.

Standards

xkcd

@foone If you don't care too much about it being virtualized, you're basically describing libretro (the thing retroarch is based on)

Were it not for nvidia drivers despising VMs, we'd have this already.

@foone something like... docker ?
@philippe @foone Docker is no hypervisor. It's not even a container runtime actually. You can't use it to universally run any software on any platform.
@foone Some people have tried doing this with qemu. It kinda works.
@foone you can do that with docker. I know a lot of Game + Wine in docker setups. You could probably do similar with anything. For Windows you can use Windows docker containers for similar

@foone

this is isomorphic with the concepts behind atomic linux, kinda, and a lil like Tails...seems it ought to be doable if a reasonable machine management interface were available so you don't need to be a weird systems entity to configure it

@foone #FirstThought: What OS/2 specific game are you trying to run on a newer OS?
@foone there are now <current Linux epoch time> standards for lightweight VM containers.
@foone sounds like unikernel

sure, its not quite what you want, but I think it gets the idea across
https://unikraft.org/
Unikraft is a fast, secure and open-source Unikernel Development Kit.

Unikraft is a fast, secure and open-source Unikernel Development Kit which enables you to build custom, minimal, immutable ultra-lightweight unikernel virtual machines quickly and easily.

Unikraft: A fast, secure and open-source Unikernel Development Kit.
@foone some kind of player for VM products? A VM-ware Player?

@foone i'm not sure how useful this is outside of software as art

ime the biggest use case for "i want to run ancient software" is when you have ancient hardware, and virtualization famously does not work very well for that

@foone mind you it's still super worth it to preserve art

but it's not useful for _all software_. regretfully.

@whitequark @foone not even subscription-unencumbered video and photo editing software and the like? Being able to pass on a valid *legal* license to someone - or some organization - who needs just the features that were available ca. 2001 and doesn't want some company's spyware injector running in the background might be valuable. Not necessarily for economic reasons, but security and compliance.
@dobbymoodge @foone right, Adobe.

@whitequark @foone You said it, not me šŸ˜‰

But my point is old software that became useful before it was saddled with intrusive subscription licensing is still useful, and being able to run it legally on modern systems would be great. The scenario that jumped to mind is donating legal licensed software to non-profits or community organizations that may be targeted for audits because of the folks they serve. Adobe tools were the example I picked, but lots of software could be used this way.

@foone I encountered FlatHub last week because someone was saying how bad it was—but is that kind of thing what you’re talking about? (Note I know next to nothing about FlatHub, and I’m really asking to see if I understood the point of it in the first place.)
@foone You mean something like distrobox?

@foone I started doing this and turned away from it towards baseline-real hardware.

The reason why is because a VM implies supersetting: if you emulate Microsoft Windows, you need at least the same I/O and timing thresholds. Fine, you say, we'll just make an emulator that does that.

Well, now you have to configure that. So then you have to make stuff to configure display settings and input devices and whatnot. You have users and they want features. They want it to support their offbrand graphics tablet and their eInk display and use it as a software radio. They want it to support both OpenGL and Vulkan. Gradually, you've started to invest the effort of an operating system into this universal VM and it is no longer lightweight, it is the web browser, nobody can control it but the largest corporations, and the software for it kinda sucks because it struggles to express things properly from the beginning and it is allowed to use way too much power all the time.

That's the terrarium problem. You can keep a terrarium confined by either being extremely pragmatic(which is uxn) or by expressing software in the hardware context, because it's slower moving - it has a certain spec and the spec can be validated against the real boards. With hardware, software is also kept honest because they have to hit that spec too. No web browser shenanigans.

Then you add some additional compatibility at emulator level and you have a desktop system where most programs are using the amount of power and I/O they actually need.

@foone my not-so-hot take: this is what Zones were on solaris (albeit with extra steps). container+os emulation/translation layer. but needs packaging. my also-not-hot take: itanium-based x86 emulation in the 2000s. (also, docker is *not this*. sadly)

@foone that's the general idea behind flatpack and snap. But obviously only for Linux variations...

I think the os licensing model of the commercial vendors get in the way of this otherwise reasonable idea!

@foone you might like Justine's cosmopolitan, here is an example Cosmo app/os https://justine.lol/cosmopolitan/deathstar.html which builds on top of the αcτµαlly pĪ“rταblε εxεcµταblε https://justine.lol/ape.html

Justine is easily the most influential technologist in my life

@foone i personally am starting to think that the jvm was a good idea with an absolutely terrible implementation. wasm+wasi might possibly work as a language vm