On the heels of the recent Holochain Core releases, which have removed obstacles to running apps over the public internet, in release 0.0.41-alpha3, we’ve turned our attention back to improving performance, enhancing the developer experience, and supporting our automated testing infrastructure. We’re highlighting two significant changes that come with this release—the integration of hApp bundles and offline full chain validation. Holoscape release 0.0.5-alpha has also had some performance gains, thanks to the new conductor, as well as many UI fixes and improvements. Developers will enjoy some nice features, in particular, a much more robust debug view.
- Holochain Core 0.0.41-alpha3: New development features for hc run
- Holochain Core 0.0.41-alpha3: Offline full chain validation
- Holoscape 0.0.5-alpha: Improvements to developer and user experience
- Holoscape 0.0.5-alpha Demo featuring the Communities hApp!
Holochain Core 0.0.41-alpha3: New development features for hc run
In Dev Pulse 58, we discussed hApp bundles and promised that they would be coming to the development conductor, hc run. They are now available in Holochain Core Release 0.0.41-alpha3, enabling you to start a collection of bridged DNAs and a UI in development mode with one command, without having to write or maintain a conductor config file. This makes manual testing easier, as well as more consistent with the actual user experience—you can replicate the same setup that users will have when they download, install, and run your app.
As we've written before, it is best to use hApp bundles from the start so you don't have to worry about writing conductor configs down the line. However, in order to make this development workflow really work, we needed this feature to be included in hc run. We're glad that this release will enable you to begin incorporating hApp bundles in your development process.
To give you a sense of what working with hApp bundles will look in practice, check out this video that uses bundles for a hApp. You can see why this feature is needed—for rather complex hApps like Peer Chat.
There are also two new parameters in hc run that might be of use to you:
- You can pass an agent name via the --agent-name parameter. This lets you run multiple instances of the same DNA on one machine.
- You can connect your instance to sim2h and direct it to a particular server with --networked sim2h --sim2h-server wss://<host>:<port>.
Here are some additional changes included in this release:
- For the purposes of testing, we’ve changed the default config for passphrase hashing so that it doesn’t take forever to start up Holoscape. This means that keys created with the old config can’t be decrypted when starting the new conductor, so you will have to have users create new keys. It also means that it’s not quite as secure as before, but we believe this will strike the right balance of security and ease of use while we’re in alpha.
- We’ve fixed a bunch of bugs related to gossip and pending validations. Delayed validations have been added to stats. We’ve also ensured that FetchEntry is sending complete data to nodes so that instances can be properly distinguished from one another. An unneeded petgraph dependency was removed, and the validation queue no longer accumulates copies of the same entry indefinitely. Instances will no longer merge the gossip list with the authoring list (which assumes a full-sync DHT), but will instead rely on sim2h_worker.
- We’re using Gzip-encoding to reduce the size of .dna.json files by about 75%. Instead of one big string that can get unwieldy, files will now output a list of strings. Note that small zomes (under 1 KB) will still yield a single string.
- You can now run any of the existing tests with env vars, which are picked up inside the in_stream crate to drop connections, messages, or packets and see how they operate under unreliable network conditions (i.e., as in the real world).
- The proc-macro-attribute is now a separate crate so that rule macros and attribute macros can be exported at the same time.
Holochain Core 0.0.41-alpha3: Offline full chain validation
In addition to the changes mentioned in the last section, Holochain Core 0.0.41-alpha3 also enables the validation of full chains when working offline. When your node publishes an entry to the DHT, validators expect you to provide a “validation package.” This package can contain the public entries from your source chain, the headers, both, or neither, according to how that entry type is validated. Previously, your node would have had to supply the package to every validator at validation time, meaning they could only do their work if you were online. This is fine if you’ve just published an entry, because you’re likely to subsequently remain online for at least a little while. However, if a few hours have passed and one of the validators has disappeared, the newly elected validator can’t do anything until you return.
Every public entry has a corresponding header that gets published to the DHT as a separate entry. If an entry’s author is offline, a validator should be able to gather all the pieces of the validation package right from the DHT. This is now implemented as a fallback if the faster, more direct communication method fails.
Holoscape 0.0.5-alpha: Improvements to developer and user experience
- Splash screen and other UI improvements—When you start Holoscape, you'll now automatically see a splash screen, with hApp UIs shown in a tab drawer. There are also tweaks to the system tray menu and other styling changes that make the overall experience more visually attractive.
- Revamped hApp Store—Though still a prototype, it is much more responsive and informative, showing the download/installation progress and status. You can now install a hApp bundle from a zip without unzipping it first. We've also fixed a few rendering bugs.
- More powerful debug view—The state dump is now much faster, showing changes in real time and only reloading portions of the state that have actually changed. Even better, all tables are searchable; for example, you can now find out which nodes hold which entries. You can also filter your instances’ source chain and DHT entries by type or hash, making it easier to get insights quickly into the current state of data consistency.
In addition, each instance now shows you an at-a-glance summary, beyond the information on held entries and running zome functions (introduced in Holoscape 0.0.4-alpha).
Be sure to watch the Holoscape 0.0.5-alpha Demo and app walk-through! We would love for you to test the Holoscape 0.0.5-alpha and share your experiences and feedback on the Holochain Forum!
Holochain Core Concepts and Tutorials
We want to hear from you! Help us create documentation that would benefit your understanding of Holochain and aid you in building apps. If you have already read, explored, or completed the Holochain Core Concepts and Tutorials, we would appreciate your input through this quick survey! Please take a moment to tell us about your experience and how we might help you further!