Many words have already been said about last week’s Holochain release. And it’s finally here! The first release candidate for the upcoming Beta of Holochain! We’re not quite ready for most devs to jump in, but we’re very very close — we plan to release the official 0.1.0 beta in late January, and the constellation of developer and end-user tools around Holochain are being updated as we speak. In fact the core team has already published a second release candidate, 0.1.0-beta-rc.2, to support new needs discovered as components were being updated.
What makes it very, very close but not quite there? A number of things changed in this release — anticipated functionality was turned on, deprecated functionality was turned off, and APIs changed in subtle ways. We prepared for this leap in many ways, but couldn’t anticipate every single dependency. As the developers working on components and tooling updated to Holochain 0.1.0-beta-rc, they uncovered some issues with functionality they’d depended on. This triggered some Holochain core updates to make the new release candidate functional in each of these situations.
One example is that Holochain now requires all zome calls to be signed. This is a huge leap in maturity, as it means that a user can protect their running hApps from malware on their device. But it also means big changes to every client that accesses Holochain. It took a few rapid iterations to smooth out incompatibilities and nail down a good dev experience.
We’re also working on integration of all the dev and userland tooling. From our developers’ perspective, many things are ‘done’, but they wouldn’t feel mature to a new dev visiting https://developer.holochain.org. There are also some rough bits for existing developers accessing the dev tools via Holonix, the Holochain dev environment— while the code may be tested and working, it doesn’t necessarily mean they’re integrated into the dev environment consistently, and some components are only available and working if you enter Holonix via a particular GitHub branch.
While individual changes might have been surprising to devs working on core components, at a high level it’s not a surprise. This is exactly what a release candidate is about — creating a hypothesis that a certain bundle of functionality is ready for release, then testing that hypothesis. This means we’re actually tackling the heavy integration and tooling work now, with the intention that it will be complete well ahead of actual beta in January.
Here’s a list of all the most important components and their current status.
- Holochain: currently at 0.1.0-beta-rc.2 and available on crates.io and via Holonix (note: the version at https://holochain.love is still at 0.1.0-beta-rc.1).
- Rust client: the
beta-rc-untestedbranch is working with Holochain 0.1.0-beta-rc.2, and one Linux-related bug needs to be fixed before a release is made.
- Tryorama, the testing framework: The code has been updated and a new release has been cut, but it was discovered that the new zome call signing requirement made it challenging to write tests. Holochain 0.1.0-beta-rc.2 allows you to grant a capability for all functions in a zome at once, which resolves this problem, and Tryorama is being updated to eliminate the need for adapting existing tests to signed zome calls.
- Launcher CLI, a new
hcsubcommand that spawns a running app in a Launcher window: Complete and integrated into Holonix, but requires better integration for a smooth dev experience.
- DevHub: bug-free but requires the most up-to-date versions of Holochain and the Launcher, and further testing, before a release will be cut.
- Launcher: A version is ready for internal testing using Holochain 0.1.0-beta-rc.2. Our next steps are to update DevHub integration and test everything together before creating a release with downloadable installers.
- The new scaffolding tool: currently waiting on a Tryorama release and a few bugfixes.
Happy holidays! Very soon (probably next week) we'll be ready to invite you to start using Holochain, whether that means updating and testing your hApps, getting started with hApp development, or using a hApp via the Launcher. I’ll be back next week to report updates to this list, along with release notes.