Those of you who own HoloPorts are probably waiting with bated breath (and a little impatience) for the promised update that will unlock the admin area and grant you access to the test release of HoloFuel. Those who are following the GitHub repos can see that there is activity, but it’s hard to get a sense of exactly what’s happening and what it means for HoloFuel. Read on for a summary.
The developer community is organising another DevCamp! If you’ve been intending to get into hApp development, now might be the right time. The DevCamps are a great way to connect with other learners and be supported by the existing (and very supportive) hApp dev community. It’s free, online, and coming up at the end of July.
- Holo Hosting Release Team closing in on next HoloPort software release
- Sign up for Holochain DevCamp 7!
Holo Hosting Release Team closing in on next HoloPort software release
When you’re unable to see the daily activity of the development teams at Holo, it’s hard to see what’s going on. The GitHub repos for all the components (except HoloFuel’s DNA and UI) are available, but a stream of commit messages without any greater context isn’t always helpful. The regular Dev Updates on Twitter are pretty informative in that regard, but for those of you who don’t follow them, I’ll summarise everything that’s happened since the last HoloPort software release.
Back in February we eagerly shared our expectation of an imminent update that would allow HoloPort owners to log in and start using real hApps, particularly the test version of HoloFuel. By now you know that the story didn’t turn out that way, and that we’ve been ‘very close’ a lot of times. So what’s happening? Is this Holo thing just a tip with no iceberg underneath?
We recognise your continued frustration, we’re grateful for your continued support, and we’re impatient to ship this thing too. Our product team’s velocity has skyrocketed in the past month, mainly due to the creation of the ‘Release Team’. This team is made up of members of the Holochain, hAppy, and Holo teams, and their singular focus is to get HP Admin and HoloFuel working yesterday.
Because this team embodies knowledge of all the components that go into HoloFuel, there are very few information gaps and resulting slowdowns. And because they’re working on nothing else, they’re tackling blocker after blocker in quick succession. As an observer it’s quite exciting to see the activity in their chat channel; a bug is identified and the team swarms on it to get it resolved quickly. I’m seeing turnaround times ranging from a few minutes to a weekend, depending on the complexity of the issue.
How far have we come so far?
So what are the issues we’ve seen? Here’s a close-to-complete list. (tl;dr Holochain CPU and network performance, DHT consistency issues, and bugs in HoloFuel.)
- Conductor loses its source chain history on HoloPort software update—fixed
- Corrupt source chain state for HoloFuel test nodes—fixed
- HoloFuel nickname can’t be changed—fixed
- Auto-update server hardware failure—fixed
- HoloPort Nano disk image issues—pending
- Performance bottlenecks checking for pending transactions—fixed
- Multiple zome calls (e.g., checking for pending transactions while completing a transaction) slowing down UI—fixed
- Various HoloFuel DNA and UI lockups—fixed
- Accepted transactions not completing—fixed
- Declined transactions not backing out properly—fixed
- High amount of chatter between conductor and sim2h server—partially fixed
- UI talks to DNA excessively while idle—fixed
- Difficult HoloPort factory reset—fixed with simpler USB key procedure
- Inability to troubleshoot HoloPort without keyboard and monitor—fixed with remote SSH login option
- HoloPort registration issues—fixed
- Cheques being applied mistakenly to the wrong transaction—fixed
- Inability to have multiple pending transactions—workaround implemented, fix pending
- Two transaction initiations with identical details are treated as same transaction—fixed
- Balance inconsistencies for agents with declined transactions—fixed
- Fragility when stopping and starting a node with pending transactions—fixed
- Multiple inconsistencies between conductor and sim2h server over held DHT data—fixed, awaiting performance optimisation
- Failure to complete a transaction over a slow internet connection—fixed
- Multiple transaction confirmation messages created in offline mode and not being processed, causing bottlenecks—fixed
- Duplicate receipt creation during high-latency conditions, causing chain corruption—fixed
- High background CPU and network usage when validating transactions—mostly fixed
- Inefficiency retrieving validation data from the DHT, causing high CPU usage and network chatter on initial join—mostly fixed
- Slow UI updates after transactions have been completed or declined—pending
- Latency in various parts of the system—in progress
Most of these bugs don’t surprise us; they’re a consequence of developing complex software with multiple parts. I’m glad the dev teams decided to focus on releasing HoloFuel first; as a complex hApp it’s the most likely one to push against problems in Holochain itself. HoloFuel has in many cases been the first integrated test of Holochain’s plumbing.
On the other hand, some of the issues of the past few months have caused us to take a harder look at Holochain’s codebase. As I’ve written about in past Dev Pulses, we’re working on changes in a few areas:
- Debugging has shown places where the core could use simplification, not only making it easier to debug future issues but likely making it faster and leaner as well. This will make everyone happier, including HoloPort Nano owners.
- We’ve identified ways to simultaneously improve DHT consistency and reduce network chatter.
- We’re looking at simpler, more robust ways to express certain actions that require agreement among validators, such as source chain fork detection and entry updates.
- We’re in the process of replacing wasmi, our current WebAssembly engine. It was the state of the art when we started building, but there are others that perform hundreds of times faster. We’re prototyping a replacement based on wasmer, which runs WASM code at near-native speeds. We’ve found it also has a much smaller startup cost and simpler memory management, and we’re feeling cautiously optimistic that zome and validation function calls could be thousands of times faster with this replacement.
- We’ve replaced our existing storage engines with LMDB, a very fast database engine, and are looking at ways to use it more effectively.
This journey has definitely been a marathon rather than a sprint—at times it’s been exhausting for both team and supporters. But we’ve covered a lot of ground, especially in the past month, and I’m excited to see the finish line banner flapping not too far away.
What’s next for HoloFuel?
The guide for this marathon has always been consistency first, then performance. With HoloFuel now running correctly, we’re inviting our Core Community Testers, a group of dedicated and skilled volunteers who’ve committed to running it through a battery of Test Fuel transactions and opening up their HoloPorts for our devs to download logs. This is helping us examine performance at a small scale with high-quality data, and is in keeping with our practice of starting small and growing at a sustainable pace. After it passes this round, we’ll open up to a larger group of HoloPort owners who have volunteered for pre-release testing. Once all is proven to be working well, we’ll move to broad alpha testing.
Note that this isn’t the final version of HoloFuel. We’re using this version to collect data so we can improve HoloFuel, Holochain, and Holo Host to the point where they become a viable alternative to cloud hosting and a superior competitor to blockchain.
Sign up for Holochain DevCamp 7!
Our next session of the six-week, community-run online Holochain dev training is starting on July 28th. If you’ve got a decentralised app idea and looking for an appropriate framework, the community invites you to join and learn along with a group of experienced and friendly hApp devs. You’ll be developing a small app called LeaP (Learning Pathways) with Udemy-like functionality, where people can publish their courses and enroll in existing ones. This app will have enough complexity that you’ll get the chance to work with lots of useful Holochain-friendly design patterns. The back end (the Holochain DNAs) will be written in Rust and the front end will be in TypeScript, using Apollo GraphQL as a communication layer between the two.
If you’re unfamiliar with Rust or Holochain, the facilitators will guide you through the basics so you can apply your knowledge of other languages or frameworks quickly. The main focus will be on creating well-designed Holochain apps.
There are two live sessions per week (recorded for those who can’t make the time), asynchronous homework assignments with code review, and a private area of the forum for discussions. And it’s all free, so what are you waiting for?
Apply at https://holochain.typeform.com/to/ptZ79fac . We’ll see you there!
- Holochain Core: 0.0.49-alpha1 (blessed) | Changelog
- Holonix: 0.0.79 (blessed) | Changelog
- Tryorama: 0.3.4 (blessed)
- hc-happ-scaffold: 0.1.0 (blessed) | Project
- Holoscape: 0.0.9-alpha (contains Holochain Core 0.0.47-alpha1) | Download
Blessed (available via https://holochain.love)
- Holonix: 0.0.79
- Holochain Core: 0.0.49-alpha1
- hc-happ-scaffold: 0.1.0