Open ripdog opened 10 years ago
This sounds like another example of what we want to solve with "device drivers" (something we've been thinking about lately). A "device driver" is a sandstorm app that has direct network access, but which must be approved by the server's administrator. They would be used to interface with external protocols, like IRC, WebRTC, telephony, or even bittorrent -- these can be thought of as the "devices" of the cloud. A device driver's job would be to turn that protocol into semantic capabilities (Cap'n Proto interfaces) which could then be granted to other apps via the powerbox.
Hi, How far did you go inot the "device driver" path ? I could definately use a bittorrent client on my sandstorm instance.
Hi! Short answer: not there yet; it'll be some time longer, like a lot more than a week, before we feel confident that this tech works fully. We have part of the "plumbing" ready for now, but aren't happy with the user interface yet.
Hi! I see. Do you need any help for beta or even alpha testing ? I'd be glad to participate
What's the name of your future app, BTW ?
@memento - Currently everyone is a beta tester. :) We do weekly releases that include all the latest features. But this one isn't ready yet.
We intend to port Transmission to Sandstorm once we're ready. We actually probably won't write a BitTorrent device driver for this, but instead will have Transmission request a "full network access" capability. Only the server administrator is able to grant such a capability, though, so Transmission will only work on your own personal server, not on Oasis. TBH, it would be costly (in terms of compute, bandwidth, and legal bills) for Oasis to support BitTorrent clients, so this limitation is probably for the best.
Hi, Still very interested. Any help needed ? What's your repository ?
Have a great day
@kentonv: is this issue blocked by something?
@marinintim Technically it's now possible for an application to request IP networking as a capability through the powerbox. However, it will take some significant effort to port Transmission to use this capability. The most direct approach would require making Cap'n Proto API calls from Transmission code, but this would have to be instrumented at an extremely low level which is hard. An easier approach would be to implement some sort of in-app network proxy which converts regular connections into Cap'n Proto IpNetwork calls, but our previous attempt to implement this failed (we couldn't fully convince Linux to redirect all traffic through the proxy).
Probably some hybrid approach is needed, in which the low-level networking code in Transmission is instrumented to connect (non-transparently) through a proxy, which in turn makes the appropriate Cap'n Proto calls.
This is a fairly complex project and unfortunately does not seem like it would pay for itself, so it's tough to say when we'll be able to spend time on it. If someone wants to volunteer and is comfortable working in low-level C/C++, we could provide instructions on what to do!
@kentonv: maybe I could try? Proxy idea seems interesting.
@marinintim By all means. Let me know if you have any questions. (Email kenton@sandstorm.io for faster response time.)
I would love to be able to replace my rtorrent+nginx+rutorrent setup with a sandstorm app, so I do hope this will be possible one day. Thanks!