Grimwire and WebRTC: An Interview With Paul Frazee

Using the data channel to replace servers.
You know what I think about the data channel in WebRTC – it being the most fascinating aspect of it. I've been trying to figure out in the past several months what's this project Grimwire exactly is, which got me to Paul Frazee, who is developing this framework.
What it essentially does, is offer a mechanism that turns web browsers into web servers within a larger network. And with where Paul is headed, this means decentralization of networks.
Here's what Paul had to say to me about his project.
What is Grimwire all about?
Grimwire is about host-independent software. It's a toolset for running Web services from the page, and it includes facilities for exchanging links so applications can discover each other and configure together. You might think of it as "HTTP over WebRTC"... and over Web Worker channels, and Web Sockets, and to Javascript functions. It's Ajax to anywhere.
The motivation is to pick up where projects like Diaspora left off with meaningfully private and user-owned software. There's a rich community of Web developers that can't tap into their software and tweak it without owning the network in the first place. That's a missed opportunity. Where's our Emacs? What kind of creativity could we open up if the web app could be rewritten with modules in the clients? That's where Grimwire is focused: unlocking more control, more creativity and more privacy.
What excites you about working in WebRTC?
RTC is an enormous improvement for Web privacy. It creates encrypted connections between pages, so there's less need to rely on cloud services to reach each other. Users can use those connections for the sensitive data and use the cloud for the public content. The signalling services have to track meta-data, but Grimwire can be downloaded and run privately so that you can protect yourself and your friends.
Making the Web a P2P platform is going to have some seismic effects in terms of flexibility. It'll mean you can spin up a new service just by opening a static JS app and broadcasting it on a relay. I'm very excited to see how dev communities leverage that.
Can you give an example or two of services you believe this framework is good for?
The two first applications I wrote were chat and mail. There's really no limit on what you can do. Since the p2p messaging uses Ajax, choosing to implement something over WebRTC doesn't lock you into it. You can switch between the cloud and a peer by just toggling the URL.
Grimwire's link-exchanging system is very semantic. It uses relation types and meta-data so you can describe an endpoint instead of hard-code your URLs. That matters a lot for letting users choose their software; you can query the links on the network and say, "here's X and here's Y - pick one." Think in terms of having an "Open file" dialog for the Web, where the Web now includes JS functions and Workers and peers. Now, what can you imagine doing with that?
From a privacy perspective, anything you do on Facebook or GMail could be done better here. The messages don't traverse through their servers, so they can't scan them for advertisements or give them to government agencies. Messages flow directly when both users are online. Users are going to value having that option.
Backend. What technologies and architecture are you using there?
Node.js and the file system. I might add redis as an optional backend, but grimwire is meant to be user-deployable so you can set up networks on LANs and get meaningful privacy. So it's built with a vertical scaling limit and just the one dependency, which is node.
You know what I think about the data channel in WebRTC – it being the most fascinating aspect of it. I've been trying to figure out in the past several months what's this project Grimwire exactly is, which got me to Paul Frazee, who is developing this framework.
What it essentially does, is offer a mechanism that turns web browsers into web servers within a larger network. And with where Paul is headed, this means decentralization of networks.
Here's what Paul had to say to me about his project.
What is Grimwire all about?
Grimwire is about host-independent software. It's a toolset for running Web services from the page, and it includes facilities for exchanging links so applications can discover each other and configure together. You might think of it as "HTTP over WebRTC"... and over Web Worker channels, and Web Sockets, and to Javascript functions. It's Ajax to anywhere.
The motivation is to pick up where projects like Diaspora left off with meaningfully private and user-owned software. There's a rich community of Web developers that can't tap into their software and tweak it without owning the network in the first place. That's a missed opportunity. Where's our Emacs? What kind of creativity could we open up if the web app could be rewritten with modules in the clients? That's where Grimwire is focused: unlocking more control, more creativity and more privacy.
What excites you about working in WebRTC?
RTC is an enormous improvement for Web privacy. It creates encrypted connections between pages, so there's less need to rely on cloud services to reach each other. Users can use those connections for the sensitive data and use the cloud for the public content. The signalling services have to track meta-data, but Grimwire can be downloaded and run privately so that you can protect yourself and your friends.
Making the Web a P2P platform is going to have some seismic effects in terms of flexibility. It'll mean you can spin up a new service just by opening a static JS app and broadcasting it on a relay. I'm very excited to see how dev communities leverage that.
Can you give an example or two of services you believe this framework is good for?
The two first applications I wrote were chat and mail. There's really no limit on what you can do. Since the p2p messaging uses Ajax, choosing to implement something over WebRTC doesn't lock you into it. You can switch between the cloud and a peer by just toggling the URL.
Grimwire's link-exchanging system is very semantic. It uses relation types and meta-data so you can describe an endpoint instead of hard-code your URLs. That matters a lot for letting users choose their software; you can query the links on the network and say, "here's X and here's Y - pick one." Think in terms of having an "Open file" dialog for the Web, where the Web now includes JS functions and Workers and peers. Now, what can you imagine doing with that?
From a privacy perspective, anything you do on Facebook or GMail could be done better here. The messages don't traverse through their servers, so they can't scan them for advertisements or give them to government agencies. Messages flow directly when both users are online. Users are going to value having that option.
Backend. What technologies and architecture are you using there?
Node.js and the file system. I might add redis as an optional backend, but grimwire is meant to be user-deployable so you can set up networks on LANs and get meaningful privacy. So it's built with a vertical scaling limit and just the one dependency, which is node.


