Inspired by @jeffz 's solid-rest-browser I am wondering whether or not it is possible to “host” a private pod inside the browser (e.g. via a web extension). I will try to write down my ideas and a possible very high level implementation suggestion. If you have suggestions, if you think something isn’t feasible the way I proposed or even think the idea itself is not desirable, I would be glad to hear your thoughts
First of all a private pod is a bit contrary to the idea of linked data. It couldn’t be used to host a blog, chat with other people, or share any other kind of data easily with others.
In essence I see a private pod as an extension to the file system, which allows to specify which files can be accessed by different apps in the browser. This would allow to view, process and manage files stored locally through apps inside the browser or installed software.
Advantages of local pods
- User won’t need to install applications which can run in the browser
- No need to trust a server
- Less bandwidth usage (not unnecessarily uploading and downloading files) -> less energy usage and higher accessibility
- Offline use
- Easy to install (if it is possible with service workers, doesn’t apply for web extension implementation) -> attracts new users
Disadvantages of local pods
- No possibility to share data
- (likely) no valid webid
- Could lead to unexpected behavior if the app thinks it uses a public pod (e.g. sending sending an invalid url to another pod/server)
- Maybe browser lock-in (it seems hard to share the local pod between e.g. Chrome and Firefox)
My proposal is to implement private pods within the browser, so they work on all OS and are easy to install. It could be done with a web extension and probably a service worker would be possible too (I think ipfs did something similar, but I am not sure what their limitations regarding scope and availability are). The web extension/service worker would be responsible for:
- Intercept requests to the private pods (e.g.
- Allow POST/GET/… as specified by the solid API-specification
- Implement as many parts of the solid server specification as possible (I think most things should be feasible, but I guess not all)
In the same way the file systems gives multiple installed apps to access local data, a local pod could give online apps a controlled access to local pod data. This means that online apps can more easily read and store data locally (which in turn has several advantages as highlighted above). The main disadvantage I see, is the lack for linked data, but as people could have a local and a online pod and transfers between those could be easily implemented I think the benefits would outweigh the disadvantages by far.