We just need money and willingness to press forward no matter what challenges come into developers direction, to avoid a Linux monoculture.
And no, the fact that ChromeOS and Android use Linux kernel doesn't matter, as it is hardly exposed to userspace.
I'm very curious what troubleshooting a system like this would look like.
I mean this is already an issue today where people “reboot” their system which really just sleeps/wakes it and are surprised that their problems aren’t fixed.
I think it would be a good thing for UX if an OS made this explicit and had a correct “factory reset” behavior for individual apps. It would make troubleshooting a breeze.
It does kinda suck because under this model to ensure correctness apps either can’t share any state between them or the entire forest has to be reset together.
Application state can be unrecoverably wrong with any kind of storage, be it files or persistent object tree.
And therein lies one of the many challenges of a system like this. It's fine as an experiment - but turning it into something usable for any serious purpose is unlikely to happen.
There are much more reliable and usable ways to implement automatically persistent systems. The way databases use transaction logs is an example.
See, e.g., https://www.thepunctuationguide.com/apostrophe.html
Casual English is fairly fluid. People rarely talk exactly according to the rules of English class.
- Upgrade software: right now, my "txt" files are independent from "/usr/bin/emacs". I can upgrade emacs to the later version, and use it to re-open the same documents. This does not seem possible if by file is "text window + object pointer + editor code".
- Move/copy files between machines -- I can copy most of the files, but not objects. I can also save older versions, send them by email or messengers, and so on.
- Recover from bad software -- the other day, my computer decided it wants to have a full-screen uncloseable window. A reboot fixed this right up. Good thing it was not persistent.
- Recover from crashes. What do you do if you write a presentation, and a programming error causes program to stop responding if you ever draw a green circle of certain size? In regular OS, you restart your software, load the latest savefile, and avoid green circles in the future. In PhantomOS, looks like you will be screwed.
The only thing that Phantom seems to offer is snapshots, but they are pretty extreme (the whole system is reverted), and even then, it only helps with some classes of bugs, the ones which are obvious enough that you notice them right away.
- You can install new version of class code. Of course, app code have to do migration by hand, but that's the case in nowadays world - if you change data file format, you have to convert.
- There's no problem to migrate object tree over the net. Even storing it to a file is not a problem.
- Persistence does not _forbid_ to restart things.
It just does not restart 'em on reboot. Eggs in your fridge are (more or less) persistent :), but you still can throw 'em away and put in fresh ones.
We're living in a persistent world and do not suffer too much from it, right? Non-persistence of software world is just innatural.
We're very used to it, and that's all.
- What do you mean "app code have to do migration by hand"? I'd say that most of the existing file formats need no migration -- images, videos, music basically don't change; and even very complex file formats like Microsoft doc only change with major versions, not with the minor ones -- MS word had tens of thousands code updates (service packs, localization, etc..) but only a dozen or so file formats.
- What do you mean by "restart" in "Persistence does not _forbid_ to restart things."?
if by "restart", you mean "kill all the threads related to object", then I don't think it will help in most cases. If you have a bug in "Draw()" function, this bug will still be there after thread restart.
If by "restart", you mean "wipe all the state, and start from the clean slate", then won't this destroy all the documents user made?
---
We live in persistent world, and we do suffer a lot from it, we are just very used to it. I have to wash my dishes every day, buy new clothes, and repair my car. I would love to be able to "save" the make, model, and license plate # of my car, then "restart" it to get a brand-new car with the same properties.
Default persistence of everything is annoying, and moving it to software is just unnatural :)
It would be good to have an OS that brings back the idea of persistent state. Plenty of programs have to run without stopping so require thinking of long term behavior (power plants, various spacecraft, medical implants, etc). People without stopping and in fact halting them is greatly discouraged.
Famously, during the moon landing, the computer had an error and crashed, multiple times [1]. The landing was still a success because while the navigation state was explicitly saved, everything other state was reset. Good thing the designers did not use persistent memory!
[1] https://www.wired.com/story/apollo-11-mission-out-of-control...
Well, just kidding, I'm agnostic, there's no such thing as my gods. ;)
Key point is code that 'very carefully verifies'. Forced RAM nullification on reboot does not help per se.
And there's no need to reboot in any case. If you feel you're busted, in persistent env you still can clear all state and recreate it from some other state.
It's just very traditional to think of files, not RAM as storage.
Memory mapped files, btw, are quarter a step to Phantom.
I actually prefer the old days: turn the thing off and walk away. Screw state.
I am here to answer any question, please ask.
If you have some collaboration or experiment with Phantom in mind, I'll be happy to discuss. I'm looking for practical but simple use case for Phantom OS.
Sounds like we will have to format the hard drive and re-install everything every week or even more often.
Sort of how drivers that have to deal with sleep/wake have to be tweaked.
Whem machines got sleep/wake it was a definite step forward for usability (and other things like machine efficiency)
Previous discussion (6 months ago): https://news.ycombinator.com/item?id=19672610