Dev Pulse 104
This week’s release brings few developer-facing features, but it’s a big one in terms of performance. Holochain v0.0.107 is set to unleash an explosion of progress for the HoloPort Alpha Program.
V0.0.107 is for Holo hosting
Even though we’ve released a number of Holochain versions with plenty of features and fixes, the version on the HoloPorts is over three months old. That’s mainly because we switched to a new database engine called SQLite. This change held long-term promise for making Holochain infinitely scalable via sharding, but in the short term performance was much slower than the previous database engine, LMDB. The Holo team decided it would make an unacceptable experience for Elemental Chat testers, so they decided to stay with the LMDB version until the SQLite version could match its speed.
I’m excited to share that the SQLite version is now even faster, more efficient, more stable, and more reliable than the LMDB version. The dev team has recently made optimisations and bug fixes to the database layer and gossiping, and data is now getting stored and gossiped faster, while HoloPorts can comfortably host more users per machine.
“I’m also getting really good results. We easily pass LMDB parity targets.”
— Alastair Ong, Holo engineer, after running Elemental Chat stress tests on Holochain v0.0.107
After chatting with Alastair, I learned that every performance benchmark has been surpassed: some are slightly better, while others are orders of magnitude better. One Elemental Chat benchmark, designed to measure the time it took for all agents to reach consistency, went from a hefty 10.23 minutes to a tiny 36 seconds (a 17× improvement). These performance gains come with significantly reduced resource consumption; another test was able to host seven times more agents on the same hardware.
(And we suspect that things are even better than that — perhaps up to 100× better for some metrics. The main bottleneck now appears to be our testing framework, not Holochain itself.)
Now that the Holo team can move to this version, they’ll update Elemental Chat and the Holo suite of apps to take advantage of it. Service Logger, Holo Hosting App, HoloFuel, the HoloPort registration flow, and the client/host connection components will get features and fixes that have been planned for a while.
And it also means we can start inviting more hosts and Elemental Chat testers to participate — which paves the way for the HoloPort Alpha Program! If you’re a HoloPort owner, here are the instructions for registering in the program.
v0.0.107 Is for the Dev Camp
You may have heard the news that the community-led Dev Camp 8 starts next week. In order to support the Dev Camp, we wanted a fairly stable version of Holochain so that participants have a good experience. This release comes after a lot of improvements, so we’re confident that it’s a good baseline for them to start building on.
Of course, there will be weekly Holochain releases throughout the Dev Camp, so it’ll keep getting more solid. We intend to keep updating participants about breaking changes and new features
Holochain v0.0.107 changelog
- Relaxed chain top ordering properly merged (#985): This feature was scheduled for last release, but an incomplete merge caused it to be non-functional.
- Only one agent full-sync (#978): This interim fix allows a conductor hosting multiple agents in the same DHT (such as a Holo host) to only involve one of their agents in DHT syncing, which reduces gossip traffic dramatically in full-sync DHTs. This feature is behind the configuration parameter
network.tuning_params.gossip_single_storage_arc_per_space, and is disabled by default. Native Holochain installations are unlikely to benefit from it. (Holo hosts, on the other hand, see up to a 50× increase in the number of cells they can comfortably handle.)
- Fix SQLite connection parameters (#978): These fixes resulted in big speedups for HDD-based HoloPorts and should be helpful for native Holochain installations too. As part of these fixes, you can tune the durability of writes with the configuration parameter
db_sync_mode, which mirrors SQLite’s
- Web happ bundle helpers (#991): These internal fixes help the upcoming Holochain Launcher manage installed hApps more easily.
Dev Camp excitement building
Well, even though I’m not a developer (at least not anymore), I thought I might help out with Dev Camp. So I’ve been privileged to listen to the back-room conversations of the organisers and support team, and they’re getting really excited! With 1500 applicants, it’s been a bit overwhelming, but they’ve changed the format in ways that will support everyone better.
The Holochain community stretches the globe, so it’s appropriate that the Dev Camp is shifting to support people who aren’t in the ideal time zone. Although the sessions will favour people in the Europe, Middle East, and African time zones, they’ll be recorded, and there will also be live support sessions for the Americas and Asia-Pacific. And there will also be a dedicated Discord server for anytime conversation — both among participants, and from support volunteers. And lastly, the Dev Camp section of the forum will be there for more lengthy discussions.
The app you’ll be building, called Tragedy of the Holocommons, is a turn-based game in which players try to consume natural resources cooperatively without causing them to collapse. It will exercise and grow your understanding of eventual consistency (a very important concept in hApp design), CRUD chains, links, anchors, signals and more in a format that lets you learn with your peers and gain wisdom from experienced developers.
Each Dev Camp is hosted by a slightly different team of community members. It takes a lot of work, a lot of care and time, to organise something this big, and they’re doing it all for free. It’s truly a labour of love, and I want to thank the current team Nastasia, Alex, Tim, Guillem, Hedayat, Lily, Peter, Tats, Sid, and the many other contributors for everything they’re doing.
Still time to register!
But it starts next week, so do hurry! It’s free, the curriculum sounds really fun, and it’s got a great crew of leaders, facilitators, teachers, and mentors. It’ll last six weeks (with a break in the middle), with weekly live sessions for Europe time zones and support sessions for Asia-Pacific and the Americas. There’ll also be a Discord server where you can talk with participants and the support team any time you like. Now go and sign up!
Holochain In Action: Composability in the real world
During today’s AMA, the conversation turned to composability. The developers among you are familiar with that term, but for those of you who aren’t, it means “the ability to easily glue chunks of software together to make new things”.
Why do we care about this? Highly composable software modules, which try to do only one thing and do it well, can unleash an explosion of creativity among the developers who find them and start playing with them.
It sounds like a good way to build software, doesn’t it? We think so too, and so do many of the developers who build with Holochain.
“The composability of a Holochain application is a very fundamental thing about it, so [during Dev Camp] we will cover the architectural things that follow from it: how do you build applications differently, knowing that they can be composed from so many different parts?”
— Nastasia Emelianova, Dev Camp 8 lead organiser
“This is one of those features or capacities of the framework that stands to accelerate what’s possible in app development. [Knowing that Dev Camp will get that out] in a way that’s intelligible [to developers] early enough so that they’re not doing it the hard way, but actually learning from the get-go, that you can lean on the expertise of others and the things that others built — that’s what I’m super excited about.”
— Mary Camacho, Holo executive director
The latest Holochain In Action session, number 18, takes a deeper look at the Elemental Chess hApp. This time it looks at how the app is actually just a collection of composable modules — profiles to allow players to give themselves human-readable names, invitations to allow them to invite each other to a game, joining_code to manage access to game spaces, and hc_turn_based_game which is the engine that powers the games. On top of this are a zome that actually implements the rules of chess and a UI that brings it all together.
Their exploration of hc_turn_based_game shows the power of composability — when all the heavy bits are already built, it becomes quick and easy to build a new game. They’ve already done tic-tac-toe, and I hear they’re working on Elemental Go (the game, not the programming language) next.
Subscribe to blog posts by email!
Yeah, it’s kind of old-fashioned, but email newsletters are also kind of cool again. If you like reading the Dev Pulse and other Holochain blog columns, but don’t like having to check the blog all the time, make life easier on yourself — just subscribe. 😉 You’ll find the form below the comments section.