ideas
ideas copied to clipboard
Portable Desktop Container Software with Identity Provider Integration for OS Agnostic Software Portability
Project description
Currently if I want to install software on my operating system of my computer, it has to install directly on the operating system. I have to deal with compatibility issues that containerizaiton solves. With the emergence of container technology, we have portable software that can be deployed and reduce of operating system compatibility. However containers have been mainly scoped to web applications. I would like to bring it to the desktop/laptop environment, where regardless of my operating system, I can install a client, that allows me to tunnel directly to the container and is abstracted from me the user, to the software directly. It would be amazing as well, that the client application also allows me to sign in with my identity provider wether it be Microsoft, or NVIDIA, or Apple, or Facebook, and it passes the token of credentials while I'm tunneling into the container. This allows it the container for example if is running Microsoft Word, it remembers who I am, so the container pulls my user settings from O365. This could apply to so many softwares, wether they are open source or proprietary, the container approach to desktop applications, with identity provider integration, this will be ground breaking just as containers are to web apps, and same strategy but to desktops. Another benefit as well for enterprise is the client can have policy enforcement and support for private container registry. For example if a user is on the client that is not on a certain enterprise policy enforcement, it can't access the private container registry for the enterprise with its own patching of software. Also if a container version becomes deprecated, the client will not allow it to load. Similarly can be done to the non private public version of the client, that it will leave open every vendor to upload their desktop container software, for the globe to pull. This makes it amazing so we don't need to deal with software compatibility issues, have to understand IT and running containers so much, where it's abstracted, and also prevent installations of vulnerable software as well as it also gets the benifit of containers that are isolated.
For example in the old days there was playstation 1, where the CD was the game. If the game brakes, I can go buy another CD of the game, but the memory card allows to remember my current saved state.
Same can be done with the desktop container idea, that for example I pull the container image from the public/private desktop container repository (similar to the playstation CD disk containing the game, but this would be in the Cloud instead), and the memory card/user settings would be also stored from the identity provider with the credentials, such that when I sign in, it passes in who I am to the container, and the container "remembers" who I am as user settings get applied.
And as the container gets patched, my same user credentials go with it when I go into it. And the old container version can be deprecated as well by its version.
This will be amazing because I can now fully be able to run Linux as my OS :) And not need to deal with compatibility issues.
Relevant Technology
Containers, identity provider support, tunnels, docker, docker hub at least, Windows/Linux/MacOs/ChromeOS/OS Agnostic
Complexity and required time
Complex but not incredible as building off an existing technolgy, containers.
Complexity
- [ ] Beginner - This project requires no or little prior knowledge of the technolog(y|ies) specified to contribute to the project
- [ ] Intermediate - The user should have some prior knowledge of the technolog(y|ies) to the point where they know how to use it, but not necessarily all the nooks and crannies of the technology
- [x] Advanced - The project requires the user to have a good understanding of all components of the project to contribute
Required time (ETA)
- [ ] Little work - A couple of days
- [ ] Medium work - A week or two
- [x] Much work - The project will take more than a couple of weeks and serious planning is required
Categories
- [ ] Mobile app
- [ ] IoT
- [ ] Web app
- [ ] Frontend/UI
- [ ] AI/ML
- [ ] APIs/Backend
- [ ] Voice Assistant
- [x] Developer Tooling
- [ ] Extension/Plugin/Add-On
- [ ] Design/UX
- [ ] AR/VR
- [ ] Bots
- [ ] Security
- [ ] Blockchain
- [x] Futuristic Tech/Something Unique
@wnadim92, so essentially you want desktop apps to run on containers and have a client running as a separate process in background which takes care of AUTH (Can you elaborate more on the AUTH please??). Also, a typical user's machine such as Win/MacOS do not have inherent support for containers as the linux kernel does(cgroups and namespaces). Win/MacOS are essentially running containers on a linux VM(atleast docker does this!). So most of the applications will be running inside a VM now .. is that understanding correct? ... not sure if this would have performance implications when the apps increase ... However, it is surely a viable idea!
@rajaParmar Thank You! The Auth would be like this.
On my desktop host OS, (whether Linux, Windows, MacOS, ChromeOS, etc),
I would open the application. The application has identity providers listed and a local sign in as well. It would not limit me to one identity provider as the container apps may have different sign in requirements depending on the identity provider.
For example if on the front end of the client application I sign in to Google, and Microsoft, if I open a container application that I would sign in with Google account or Microsoft, those get passed to the container the credentials from the front end that I already signed in to.
If a container supports both, it should prompt the end user to choose the credential provider for that specific container.
Then when the container launches, it would have the identity credentials to it and its user settings would get applied just as though if I directly installed the application directly on the OS, but however this would be the container and abstracted is the connection to it for the end user.