About Security
One of the good things about using the chrome code infra-structure is to be able to reuse the multi-process and IPC communication layer, so you can basically sandbox the application process with few syscalls giving the applications access the resources through IPC by asking to the host process.
This host process works as a "userspace kernel" controlling access to the host resources and can be the only process to have a better access to the OS resources.
This is the same architecture used by the chrome browser by the way that can even launch "untrusted code" in a very insecure fashion (as in out of the control of the user)
In this platform, the applications can be considered "trusted", because the user will install the apps he wants that will be digitally signed and only accessible via the public key over the DHT that routes the app manifest. The app manifest then is used to distribute the application in p2p fashion, as in torrent. Later you can decide if you help to serve the application or not.
And even when they can be considered trusted (contrary to the browser), their process will have almost non-existent access to the host system and they will have to route all the resource calls over IPC throught the main host process.
About peers.. in the beggining it will only be used to distribute applications and contents (access to blobs/files and structured data over a key-value store), but later i intend to use the same peers sharing content to be used as peers (if they authorize of course) to serve the RPC api in distributed fashion.
Only the "host process" have real access to the peers, but eventually IO events could be routed to the applications process from the peers so the daemon application process can act upon it (can be grouped only by peers that share the same RPC api for instance). For instance it can add to a pool of peers and route method calls working in a distributed fashion and working as alternative to a centralized service on the cloud.
About Corba:
Yes, its RPC like Corba was, implemented over gRPC (which is basically RPC-over-HTTP2) with bidirectional streaming support.
Because its gRPC, there a lot of drivers for almost every language out there, so this gives a way to call the methods of an application from Python or Go, etc.
Its not that the novelty of the project im making lies in any component im using, im even trying to use kind of boring technology.. but i think that once they are put together in one piece, that combination can make really cool things.
Just by running the not-yet-finished version i have here, there are a lot of cool things i can make here that i didnt see anywhere else. I think the advantage here lies in do this in the cathedral fashion, where you can combine things and make them work together smoothly to make it easy on developers and users.
About the targets:
iOS will the the only target out of this for now, because of the restrictive environment Apple impose on iOS applications. Even Android will be able to run this as the multi-process version of Chrome can with no problems.
But even iOS could eventually be added as a target, by running the multi-process architecture in one process, as Chrome already does in iOS.
To be true, i'm very interested in the aspect of applications running as in a network that can rely on others applications api to communicate and share...
As in, i'm most interested in how this runs more like a web browser (or a application browser as i like to think) does now, than just a UI application platform like Electron, Dart or Xamarin. I think it can be really competitive here too, but i'm trying to aim at a broader category, something that i've always dreamed to have, but never saw anything into that direction, that would fill that void.
But unlike the browser, i want this platform to "get out of the way" and let the application shine without the user even being aware the the applications is managed in a multi-process architecture.
The cool thing also is that you can create some sort of browser-like window to present the application process rendered framebuffers, instead of each app having its own window.
Also there's a cool factor about being able to own your digital life/property, being independent of the cloud, and only eventually(when its the best option) getting things from there.
The cool thing about going through a well-defined RPC api as a middleware, is letting the application decides if it wants to use and synchronize local resources or if it wants to talk to a mothership somewhere in the cloud..
By having a well defined api in Protobuf will also with time help into automation.. like sending a message into this chat app to someone from a python command line tool.. or getting text from blog entries from that blog app.
Imagine a search application being able to index the content of your social network messages only if you allow them to? And once you dont want that app anymore, that content it created remains with you as long as you want. Not having to loose all of your friends contacts, because its your digital property, and give access to it, only to the apps you want to?
How many social networks could not compete with Facebook just because facebook monopolizes the list of friends and you can get it out of there and export to the other social networks..
Also, you dont depend of any centralized app store to distribute your applications, you just pass over a address that is the public key of your digital signature where only you can change the manifest when you want to update to what application resource it needs to point (a new version for instance)
Or you can just use it to share your mail inbox with yourself so you can synchronize to the same application that uses it into the machine on your job desk.
Oh.. this text is pretty big now, but i need to add the fact that applications will export entry points as in pages, so you can access that resource directly.. eg: "/login", "/inbox"
and things are url addressable.
The intention is to help the user (or any tool) and if he/she wants, he/she can launch the "app X" at "page Y" because we have a central point that can manage this sort of things.