We’ve been testing the Holo hosted version of Elemental Chat for two weeks now, and so far everything is working well. Most messages arrive quickly, even as new participants join and post messages.

At time of writing, there are 245 participants who’ve posted 5405 messages in 94 channels!

We are seeing some performance issues; messages sometimes take a while to arrive in the browser. But we knew we’d see things like this. What we are not seeing is big slowdowns as more people join and write more messages.

The 245th participant is getting pretty much the same experience as the first. In fact, performance and reliability have been better than we expected so far.
A screencast of two web browsers, side-by-side, testing Elemental Chat’s performance. Each browser is serving to a different agent, each of whom is sending and receiving messages with only one second of lag.

Speed improvements coming soon with sharding

Currently Holochain is operating in ‘full-sync’ mode, which means that every node gets every message. This is not that different from a proof-of-stake blockchain (except that there's no costly consensus step), and it means there’s still room to make things faster.

If you’ve followed the Holochain project for a while, you’ll know that this isn’t the final design. Holochain intends to become fast and cheap enough for everyday applications by splitting the data processing burden up into manageable chunks or ‘shards’ (also known as ‘neighbourhoods’) of participants. We call this rrDHT. (If you want to know more about how rrDHT works and why we built it, you can read this tech deep dive.)

a Holochain DHT showing overlapping peer neighbourhoods

Once sharding is implemented in Holochain, we expect performance to be a lot faster, even as thousands of participants join. The good news is that this work is already complete and ready to be merged and tested!

What’s next?

Elemental Chat is still in pre-release testing, and we should begin inviting the public to use it once the HoloPort Alpha Program starts. We’ve already been taking email addresses for pre-registration; register if you’d like to try it out too!

Once the Holochain team has finished testing sharding, it’ll be included in a new Holochain release, deployed on a small set of HoloPorts, and tested by our pre-release testers. Once it passes that round of testing, it’ll be deployed on all HoloPorts.

Holochain v0.0.102 released (breaking changes)

Holochain has seen another update. The biggest item is a breaking change for validation callbacks: the must_get_* host functions have finally landed, which means get and friends can no longer be used in validation callbacks. You can read more about this change in the last Dev Pulse.

Holochain now compiles on Windows too! Damien, a hApp developer and Holo alumnus, contributed a patch that fixes a compatibility bug in the Lair keystore. You can now use the Windows-native Rust toolchain to build Holochain and your DNAs. This doesn’t mean we’re officially supporting Windows yet, but it does look like you can use it as your primary development OS now.

There are also some performance improvements, bug fixes, and added/changed conductor API endpoints. Read the full changelog for details.

What’s next?

  • Sharding code is finished and being tested. I expect there’ll be a bit of performance tuning and bug fixing before it’s released, but the core dev team is planning to include it in release v0.0.103.
  • The HDK is about to parallelise all sorts of expensive functions — getting entries, getting links, and making zome calls to other peers, zomes, and cells. This should make those functions a lot faster if there’s a lot to do — no more looping over calls in serial. This is already in develop and should be included in the next release as well.
  • The HDK is also about to support countersigning as a built-in feature. This set of host functions and entry types will abstract away the complexity that makes countersigning difficult to do well. At first you’ll need to solicit and gather countersignatures in your code, either synchronously or asynchronously, but eventually there will be affordances to make this process even simpler. The first iteration will likely come in the release after sharding.

Thanks to Documentation Drive participants!

I’m grateful to everyone who joined in the community-led Holochain Documentation Drive. I’m especially excited about new and updated introductory materials, including a hApp building tutorial and a client tutorial. I’ll be publishing the edits to the Developer Portal soon.

If you want to get involved in the ongoing documentation improvement efforts, you can:

Cover photo by Danielle Cerullo on Unsplash