Summary

We’ve developed a standard release process for all of the main repos, reflecting the ongoing evolution of the Holochain Project and the need to ensure that further development is done sustainably, with automation in mind. We also have a report from DevCamp #4, which was all about game development with Holochain. It turns out, something as fun-oriented as designing a game can help you learn more about Holochain’s potential than anything else.

Highlights

1. Streamlined Release Process and Progress Toward Automation
2. DevCamp #4 Success!

Details

Holochain Dev Pulse July 15–July 22, 2019

1. Streamlined Release Process and Progress Toward Automation

As Holochain has matured, we have evolved from using a single repo for everything (Holochain Core) to five different repos for the primary components of the Holochain ecosystem:

1. Holochain-Rust: The core Holochain framework written in Rust, a container API for running it (with Rust and Node implementations), and an HDK-Rust library for writing zomes
2. Holonix: Extensible and standard dev environment based on NixO
3. Lib3h: The P2P communication Rust library
4. Holochain Persistence: Provides content addressable storage (CAS) and entity value attribute index (EAVI-style) API
5. Holochain Serialization: Provides serialization features and drivers for Holochain types

While we have made these differentiations, we have not yet had an automated release process or anything standard across the various repos. This has led to a number of different problems. Holochain Core, for example, was doing things differently than the other crates due to some legacy processes. On top of this, we had to deal with inventing different release processes and tooling conventions for every crate.

Automated Release Process

Our processes shouldn’t be so difficult that they cannot be automated, and the last thing we want to do is repeatedly reinvent the wheel. Therefore, we now have a standard release script for each of the repos.

To begin with, it’s much faster — we can ship five releases for five repos in about half the time it took us to ship one release for Holochain Core just a couple of months ago. It’s not automatic, but it’s pretty fast.

An added benefit of standardizing the release process is that it makes it easier for us to split crates more over time; eventually, they will become more of a library, letting us decouple the way we release things (like the HDK or the Conductor) that don’t have much to do with the other repos. You may have been impacted by a recent release where the Conductor was changed to a new version, but the HDK was not pulled across with the latest version. This resulted in not being able to write any Rust code. We apologize for the inconvenience this may have caused. Decoupling the HDK and Conductor binaries could have mitigated the pain this week, where the release process was not working as effectively as possible. We have yet to determine the release cycle for this, but will keep the community informed.

Bot Scan

In the future, our goal is to add more automation to the process. We are considering making a bot that can scan repos for passing builds in development and then automatically update the version, commit, and push a release. This way, we could do scheduled and regular releases easily.

2. DevCamp #4 Was a Success!

An invite-only DevCamp took place from June 27 to July 2. We invited key developers in the community who are committed to building on and expanding their knowledge about Holochain.

The focus of the DevCamp was on building games in an agent-centric manner. As you might have expected, it was an amazing experience.

There were some really great in-depth questions and thought provoking discussions. A lot of the attendees were able to independently navigate and get answers to questions.

Dev Camp

Goals for DevCamp #4
We designed DevCamp #4 with the goal of ensuring a smooth and easy Holochain installation process. Based on feedback, observing user experiences, and doing DevCamp dry runs, the Holochain installation process is now much better than it was a few months ago and miles ahead of a year ago. There were only a handful of issues in a group of 20 people, and all were eventually resolved. Everyone was able to install Holochain and begin the app development process on Day 1.

Guide to Implementing Your Game

In-depth Holochain Learning and App Development
The process of designing games using Holochain turned out to raise all kinds of interesting questions. For example, if you were to create a version of Twitter, you’re already locked into a database-centric, single-source-of-truth mindset. But with Holochain, you have to flip that on its head. It is a way to write distributed protocols, and games are the ultimate version of a protocol. In this way, learning to how to design a game with Holochain— the process of designing rules and how players are expected to act — helped everyone learn more about the potential in other domains. While previous DevCamps focused on things like entries and writing zome functions, this DevCamp helped shake up people’s perception of what Holochain can really do.

Code

There are many more examples of Holochain around out there as a result of this DevCamp. All of these games are shared, and hopefully, will continue to be developed:

•Connect Four
•Nim
Tic-tac-toe
Prediction

Game Demo!
We’re excited to share this Prediction Game Demo! We’ll be sharing and releasing other game demos from DevCamp in the near future.

There were so many excellent and creative examples!

Prediction Game

Improvements Made to Holochain Core
One of the great things about this DevCamp was that for the first time, it influenced Holochain Core development and allowed us to implement some improvements based on the feedback from attendees. For example, there was a quirk around validation where committing an entry meant validating it on the local chain and validating it again in one’s DHT shard. This resulted in unexpected behavior, which meant that sometimes the validation didn’t work as it should. Now, there is a fix that ensures the validation works more consistently.

Building Community and Deepening Developer’s Skills
We hope that the conversations that were had at the DevCamp continue and that the individuals who participated might teach Holochain app development and become leaders in the Holochain community. We envision that some of the attendees of this DevCamp will actually teach the next one. We can provide the materials, while they drive the process. The Holochain Core Team does not want to be the single source of truth in terms of Holochain education. We would like to bootstrap the community and encourage others to share their knowledge.

Dev Community

Big Thanks!
A special thanks goes to Willem, the course designer and instructor, for making everything seem effortless. In fact, Willem put in about a month’s worth of work on DevCamp, along with various other people on the team (David Meister, Ashanti, Eric Bear, @dhtnetwork, Art Brock, @Duffy), to ensure a positive DevCamp experience.

Thank you!

Quotes from DevCamp Participants
“Distributed open systems are getting very real now! Want to make the move from online to onchain? Start now, fast! The Holochain DevCamp #4 was a fantastic and playful journey, not only into Holochain and the Holochain HDK, but also the pioneering programming language of Rust. Rust experts are rare — so be clever, learn it now and become sought after! What a nice little side effect of diving into Holochain. CV++, so to speak!” — Phy community member

“Also, I’d like to take the opportunity to thank Willem and Bear; the DevCamp was excellent. Using a game is a perfect project. CLI focussed the audience, who were high calibre and completing demos by the end of the six days. This is giving us a warm feeling about the technology and the dev environment reaching a working maturity.” — RedGrid Lead Engineer, Mike Gamball

“DevCamp was very nice. We all learned things about Rust and Holochain, and walked away more confident in our ability to write hApps.” — Comet Developer and Creator, @mightyalex200

Development Status: