You know those words you see on a car’s side mirror that say ‘objects in the mirror are closer than they appear’? In spite of that warning, it’s always a bit surprising when a car comes zooming past, out of the blue, when you thought it was way back in the distance.
I had that sort of experience yesterday morning. During my weekly check-in with Alastair from the Holo hosting dev team, he was practically bouncing in his seat. The reason for his excitement, in his words, was that “Holo is ready”. Alastair normally brings a critical, analytical mind to his work. (He ought to; he’s an engineer.) So when I saw him get excited, I knew there was a good reason for it.
Before you get too excited, though, Holo isn’t going to be in beta tomorrow. He simply meant that it’s finally time to start testing the entire hosting and routing infrastructure.
There have been some big milestones in the past half year. But the next milestone, hosted Elemental Chat, is the one that brings all the pieces together. It depends on:
- The Envoy service and Chaperone browser library (I’ll get to them in a bit),
- Network plumbing to help hosts reliably punch through home firewalls, including a proxy server,
- A registration flow to get hosts onto the network,
- The resolver service, a ‘matchmaker’ that connects web users to hosts,
- Centralised and decentralised routing infrastructure to securely deliver web users’ requests to their chosen hosts,
- An operating system that brings Holochain and the Envoy together on HoloPorts.
Alastair told me that all these foundations are solid now. The routing infrastructure has been in place for a long time, Holochain’s big bugs (including lockups when a host fails to create an app instance for a web user) have been eradicated, the proxy server and gossip protocol are getting some performance boosts, and the weird edge cases involving a user closing their browser too soon have been addressed.
If you’d gotten used to the rapid HoloPort updates over the turn of the new year, like I had, you were probably concerned by the slowdown in the following months. Alastair explained the reason for that too: during our previous release cycles, we involved testers as early as possible. This gave the dev teams a lot of insight into what was and wasn’t working, but it also created a lot of extra work. Our pre-release testers have been absolutely wonderful — they’ve dedicated big chunks of their free time to helping us chase down bugs. But it’s been a lot of work for them, and the communication and coordination have demanded a lot from our small team as well.
So for this release (and the previous minor release), the Holo and Holochain dev teams have put everything through much more rigorous testing before it even reaches internal QA. Once it passes, we expect to have a lot fewer pre-release cycles before it goes out to all HoloPorts — perhaps none at all. And then the fun begins, as all the HoloPort owners invite the web to try out this peer-to-peer chat app for the first time!
We also intend to hire a QA and software delivery manager to streamline this whole process in the future. If you have experience juggling QA, community testers, and deployments, this might be you!
I could tell that Alastair was relaxed about the future of Holo development. With this solid foundation, he said, developing and delivering new features like HoloFuel and the Service Logger app (which tracks resource usage and bills app publishers) is going to get easier and faster.
So what are Envoy and Chaperone?
Envoy is a service that lives on every HoloPort and connects its Holochain runtime to the centralised Holo routing infrastructure and, ultimately, the web user on the other end. It provisions a hApp instance for a user and asks the user's browser to sign data that Holochain is about to store and publish on their behalf.
Chaperone, on the other hand, is a library that runs in the user’s browser. It handles registration and sign-up, using cryptographic magic to keep the user's secrets (password and private key) from ever leaving the browser. That means they'll never get stolen in a massive database hack, and the HoloPort never has the power to do things the user doesn't want.
The Holo devs have often found themselves working against the centralised assumptions baked into web browsers and the HTTP protocol. Many of the challenges came from security restrictions that keep you safe in the centralised world, but they don’t make sense in a cryptographically secured P2P world where you’re in control of your keys.
In the process of meeting these challenges, the Holo devs came up with a final design that I think is more user-friendly. Previously you had to sign in on every new Holo-hosted page you visit, even if you’d been there before or were already signed in on another browser tab. Now your session stays active across browser tabs and even after quitting and restarting your web browser. This is nothing special for traditional web apps, so it’s great to see it coming to Holo. It means that dApps are finally going to start feeling pretty usable.
If you like technical details, you might want to read this old blog post about Chaperone and Envoy. It was written when the devs were still deep into creating and debugging these components.
Right now we’re in internal QA testing. We expect to invite the pre-release testers into hosted Elemental Chat soon (perhaps by the time you read this) — first as users, then as hosts. We don’t expect to find any big bugs, but we hope we’ll discover edge cases that we hadn’t hit during development. If no critical edge cases show up, we’ll release hosted Elemental Chat to all hosts and invite the web to try it out.
Looking forward to seeing you there sometime soon! (If you have an invite code, of course 😉)