3 ms·
I'd like to see an OS where "your profile" is entirely in the cloud and every device you register becomes just another node. Your laptop, phone, desktop, smart
by hoosieree 4y ago
I'd like to see an OS where "your profile" is entirely in the cloud and every device you register becomes just another node. Your laptop, phone, desktop, smart watch, and homeserver are all just nodes with different capabilities. Some have touchscreens, some have GPUs, some have lots of memory, some are always-on, others are ephemeral.
I'd like to play a game on my phone but have my desktop's GPU render frames for me like Stadia.
I want my server to pick the next song in the playlist on my phone to match the tempo of the heart rate it hears from my watch.
I'd like to type "make -j" and have it transparently use every core ...on every device I own.
These things can be done today with ad-hoc hacks, but an OS designed around these ideas would mean you could write lots of programs very differently.
- msmenardi 4y agoMake "the cloud" a decentralized mesh network of people in your area and you're getting somewhere. I love the idea of a unified OS between all your devices, I guess Apple users have that experience already!
- Decabytes 4y agoThis is interesting and I have never really thought about this. Could you expand a little bit more on it? Would the still be stored locally or would the profile have all of your content (kind of like if your drop box was also your OS). And would these devices need to be always connected to the internet, or would they have capabilities on their own, and just be able to hook up to the cloud for more compute Also how is this different from sshing into a system to do work and running jobs on a Linux box?
- hoosieree 4y agoThose are great questions. You could get 60% of the way there with Dropbox syncing your OS, with a few caveats (screen brightness should be per-device). But if you start drafting an email on your phone, you probably would like to finish writing it and send it from your laptop. Gmail and Outlook do this today, but only because their phone app and their desktop app are working together with a remote server. If I was building a prototype, I'd start with an always-connected model and "eager" state updates, because caching is hard. To support concurrent writers who both want to be able to undo each other's edits suggests using an OT[1] or CRDT[2] as the basic data type, rather than files. Each node regularly advertises its current capabilities (as well as things like impending sleep states or battery life) to a central scheduler which sends tasks to nodes and collects results. Note - a lot of these ideas come from a project by my colleagues called unis[3], but applied to the topic of operating systems. There are some interesting design choices. Does the dispatcher make all the scheduling decisions, or can the user explicitly say things like "it's ok if Minecraft drops frames, but that background rendering job has to be done by 5pm"? Synced settings are not qualitatively different from multiple clients SSHing into a Linux server, but if any client can suddenly turn around and start acting like a server on a whim, that would be cool. [1]: https://en.wikipedia.org/wiki/Operational_transformation https://en.wikipedia.org/wiki/Operational_transformation [2]: https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type https://en.wikipedia.org/wiki/Conflict-free_replicated_data_... [3]: https://github.com/periscope-ps/UNISrt/blob/develop/sphinx/guides/introduction.rst https://github.com/periscope-ps/UNISrt/blob/develop/sphinx/g...