3 ms·
How do you get individually installed apps to selectively share data with other installations? I imagine something like diaspora tried solving this problem. Is
by iamwil 12y ago
How do you get individually installed apps to selectively share data with other installations? I imagine something like diaspora tried solving this problem. Is there a general solution for any app?
- kentonv 12y agoThis is something we're still building (Sandstorm is still in alpha), but what we have in mind we call the Powerbox. The idea is that one app can say to the system "I implement such and such protocol at such and such endpoint". Later on, some other app can say "I need something implementing such and such protocol". The system itself displays a picker, showing the user all of their other apps that may satisfy the requirement. When the user makes a choice, the requesting app is told how to contact the providing app and is implicitly given permission to do so, whereas prior to the exchange the apps had no ability to talk to each other. The user can inspect these connections later and potentially revoke them. This is a whole lot easier for the user than going to the providing app and editing an ACL, then going to the requesting app and giving it an endpoint address, etc. The way this is implemented under the hood is in terms of Cap'n Proto capability-based RPC. Blog post on that: https://blog.sandstorm.io/news/2014-12-15-capnproto-0.5.html https://blog.sandstorm.io/news/2014-12-15-capnproto-0.5.html
- iamwil 12y agoThat's pretty neat it's like the android intent system. How does the system get the list of all other apps that satisfy the requirement? I'm guessing all apps register with sandstorm server somewhere that has a centralized list of other servers? It'd be neat to have standard protocols, in the same way we have standard media types.
- kentonv 12y agoThe system knows about other apps installed on your server, but not necessarily apps on other servers. To connect to something on another server you will usually want to obtain a Cap'n Proto capability to it. You might do this through, say, a messaging app that has the ability to embed capabilities. Your friend sends you a message with a capability to some object on their server, and then your messaging app publishes that capability on the receiving server, such that it will now appear in the powerbox for other apps on that server. Alternatively (less cool, but more practical), you might just drop a URL into the Powerbox and Sandstorm will connect to it and turn it into a capability.