A few keen-eyed readers pointed out that I never wrote a follow-up article on last year’s DevCamp. They’re absolutely right; all I wrote since the start was this small update halfway through the course. It’s time to write something!

As you may have heard, over 1800 people signed up for the DevCamp, which amazed us all. This was a huge increase from the previous DevCamp’s roughly 200 registrants. More and more people are hearing about Holochain, among them developers who may go on to create some really wonderful apps.

I’m so grateful to the DevCamp organisers. I think they did a fantastic job presenting a pretty demanding subject to a huge group of people, all online and spread out across time zones. They facilitated with enthusiasm, structure, patience, and compassion. This was a big project, and they faced it courageously and skillfully. (Did you know that they were all volunteers, doing it simply because they love the project?)

The organisers did have some selection criteria to make sure it would be a rewarding experience for participants — this was, after all, meant to train people to build Holochain apps, so it probably would only be useful to people who intended to build Holochain apps. Roughly 1000 of the registrants were selected for participation, and roughly 400 enrolled once they were accepted.

Over the course of the DevCamp’s two-month schedule, we did see a drop in participation. Live session attendance dropped by 67% between the beginning and the end of the course. This might sound disappointing, but it’s actually quite good — various studies say online courses see from 85% to 97% dropout rate. This shows that an above-average number of people committed themselves to learning a pretty demanding subject.

Not knowing why individual participants decided to leave, I have some guesses: some may have found the course load or meeting times didn’t work for their schedules, others may have decided that Rust or Holochain development wasn’t for them, and still others may simply have joined because they wanted to learn a little bit about the project but not develop an app.

Some Holo team members helped with the DevCamp too, which gave us the opportunity to do some research. We learned a few important things:

  • People don’t get interested in Holochain simply because it solves a technical problem for them. Instead, they get involved because they believe in the values it represents — agency, accountability, privacy, cooperation, voluntary participation. They want to join a movement, not just use a piece of tech.
  • Holochain’s community is unique among open-source communities — it seems stronger, more closely knit and supportive, with passionate people who are willing to give their time to help newcomers. (The DevCamp organisers are a case in point!) Reputation revolves around commitment to helping others grow, rather than crowing about one’s accomplishments.
  • It’s not just one ‘community’ either — there are many communities who value slightly different things or are focused on different aspects of the project. There are a lot of different perspectives about what matters. In a way, the tech and the social structures mirror each other.
  • DevCamps are a special way to experience the health of the community — it might be that the community is the most valuable part, because they create a supportive space for learners and help them become part of the Holochain community at large. The Discord server, in particular, was a great addition to DevCamp 8, and resulted in a lot more active conversations than the forum had had in previous DevCamps.
  • There’s a steep learning curve. Not only is Rust a new language for most, but Holochain is quite different from either cloud or blockchain. Many DevCamp participants had already participated in a DevCamp but wanted to reinforce or refresh their knowledge. The strong, supportive community also helps people gather the courage to meet this challenge.
  • Many participants feel like there was still so much to learn by the end of the course. In fact, we learned that some had already participated in a DevCamp and wanted a refresher. This reinforces what we learned about the learning curve, and suggests that a community, ongoing events, and self-serve resources for alumni would be useful.
  • Not everybody can participate in a DevCamp or online learning community. Time constraints — busy life or time zone differences — are the biggest barriers. Most people participated asynchronously, replaying the recorded session videos and chatting on Discord. We would do well to develop more self-serve resources for those people. (Fortunately, the organisers have published all of DevCamp 8’s session videos on YouTube, which is a great start!)
Session 1 of the DevCamp

Holochain 0.0.122: big gossip performance improvements

Most of the recent Holochain releases have been maintenance releases.

But today’s release brings big New Year news. I’ve been looking forward to sharing this one!

Recently one of the core developers has been troubleshooting a performance bottleneck we saw in the Elemental Chat tests. Gossiped DHT ops were being integrated at a rate of 40 per second, which seemed unusually slow because it didn’t involve a lot of processing.

If you’re not familiar with the mechanics of the DHT, here’s how it works: when an agent commits an element to their source chain, it results in the creation of a number of DHT operations. These operations are messages, sent to peers on the DHT, that update their local DHT shard. Here’s an example of the ops produced by a ‘create app entry’ element:

  • A StoreElement operation stores the header in the neighbourhood of the new header’s hash.
  • A StoreEntry operation stores the entry, and a copy of the header, in the neighbourhood of the new entry’s hash.
  • Finally, a RegisterAgentActivity operation stores a copy of the header in the neighbourhood of the author’s public key, allowing those authorities to detect source chain forks or serve up source chain segments to other validators.

Each of these operations has to be ‘integrated’ by the authorities in the neighbourhood — that is, validated and stored in their DHT shard. This happens initially, at publish time, when the author first sends out these operations. But it also happens on an ongoing basis, as new peers join the DHT and start building their shard, or as peers disappear and cause remaining peers to increase their coverage. These peers share this information through gossip, which happens at regular intervals — more frequently for new data, less frequently for historical data.

In the Elemental Chat tests, the historical data gossip loop was slowing down HoloPorts. Part of this was because sharding wasn’t yet turned on, which meant that everybody gossiped everything with everybody else. But that ended up being a great way to catch this performance problem.

The solution was to optimise the table that stores the operations, along with the queries that manipulate it (#1167). Now, operations are integrated at a rate of 1000 per second — a 25× increase!

There are other changes you should know about as a developer:

  • The conductor API lets you manually insert elements into a source chain. This will be used to build source chain redundancy for Holo hosting, as well as source chain backup and restore for natively installed Holochain instances. (#1166)
  • Breaking: The Path abstraction for working with links has changed. (#1167)
  • Breaking: You can now query a source chain by ranges — either between two sequence numbers, between two hashes, or the most recent element plus a certain number of preceding elements. All range queries are inclusive. (#1142)
  • The above breaking changes mean that Holochain 0.0.122 is compatible with HDK 0.0.118.

Read the full changelog.

That’s the news from the start of 2022. I’m looking forward to sharing more this year as our projects move towards beta status and see wider adoption among developers!

Cover photo by Tegan Mierle on Unsplash