On Holochain

The First Ever Holochain Dev Immersive: Cultivating a New Industry for Web Developers

A junior software developer’s reflection on a life-changing program about Holochain app development and the emerging ecosystem of tools and trends.

Wesley Finck
Living Systems Network

--

Cooperative Holochain programming in action at the Holochain Developer Immersive

I recently had the pleasure of attending the first ever Holochain Developer Immersive education program, hosted by Holo, in beautiful Austria. Here, a handful of software developers, including myself, were taught the ins-and-outs of Holochain application development for two weeks by an incredible team of instructors and organizers. It was an amazing opportunity full of valuable material and incredible people.

The Purpose of the Program

Holochain is a complex technology; it takes time to understand the components and different aspects of the architecture, especially considering that it forces developers to think quite differently about the systems they build. Not only that, for the time being Holochain apps, or “hApps”, can only be written in Rust, a less common language which in itself is a challenge to get familiar with. Both the novel architecture and the requirement to use Rust make deliberate developer education essential for a healthy, thriving ecosystem of hApps. Developers are the foundation of Holochain, without them, no apps will be created. The more hApp developers there are, the more apps will be created and the more interesting and innovative design patterns will be explored and established.

To seed this ecosystem, Holo is scaling up educational efforts so that there can be smoother on-ramps for developers to build with Holochain and get up to speed as quickly as possible. Part of this effort includes in-person education programs, the first of which took place in July 2022. This was a pilot program, so the cohort was smaller than normal and we knew there would be be bumps and kinks to work through along the way. The organizing team was ready to adapt the curriculum as we worked through it, in an attempt to discover the best way to teach the many new technical concepts that Holochain presents.

Not only that, but we were within walking distance of hiking trails and a river to cool off in during the heat. All in all, it was a perfect place to dive fully into Holochain for two weeks with an intimate group of peers.

To add to the immersive experience, this program took place in a beautiful mountain village in Tirol, Austria, in a rustic ski chalet. It had plenty of bedrooms, a large dining and common space, an industrial kitchen, a lounge room and a theatre room which acted as the lecture hall. Not only that, but we were within walking distance of hiking trails and a river to cool off in during the heat. All in all, it was a perfect place to dive fully into Holochain for two weeks with an intimate group of peers.

A view from up the hill right behind the building we stayed in (with the orange/red roof)

Week 1: Learning the Ropes

For the first few days, we learned about Rust, getting familiar with the syntax and many of its features. A typical day consisted of a morning and an afternoon lecture, with time in between to work on exercises and problems. During these periods, content was delivered differently than a typical university lecture with the main difference being the pace and interactive dynamic between the instructor and students. Marcus Phillips, our main instructor, has years of experience educating developers via HackReactor and has developed and refined his own unique craft of teaching technical concepts.

Often, the lecture felt more conversational. Questions about the content were raised and Marcus would engage in a conversation with that person to help them reframe their understanding, helping them see it from different perspectives. It was my first encounter with truly student-centred learning.

Rather than having a fixed rigid structure, Marcus would set a certain pace and adapt it depending on the feedback of the participants. If no one raised a question, Marcus assumed we all understood what he was talking about and continued at the set pace. This meant there was a responsibility on the students to voice any questions or confusion. Often, the lecture felt more conversational. Questions about the content were raised and Marcus would engage in a conversation with that person to help them reframe their understanding, helping them see it from different perspectives. It was my first encounter with truly student-centred learning.

Outside of lecture, we spent our time working through programming exercises that had been prepared for us. These exercises were meant to help us become more familiar with Rust, at least the aspects of the language which are most relevant to hApp development.

A group of participants working through developer exercises between lectures

After the first three days, when we finished the Rust curriculum (a day earlier than expected), we shifted focus to Holochain. Here we had Guillem Cordoba as our main lecturer. Guillem is a long time contributor to the ecosystem, having led past dev camps and having created many foundational educational materials, like the Holochain gym. The teaching format stayed mostly the same as we worked through the Holochain part of the curriculum, with less exercises in the first couple days as we needed to cover a certain amount of material before we could work through Holochain specific exercises. This marked the end of the first week and we had the weekend off to relax, explore, or catch up on some of the exercises.

A frequently visited, beautiful and relaxing river within walking distance of where we stayed

Week 2: More Holochain & a Hackathon

At the start of the second week, we hit the ground running, getting fully into Holochain and the main concepts. The goal was to get us to a point of familiarity such that we could build or design something during the last two days of the program, which was the Holochain hackathon period.

During the hackathon, some of us decided to build something from scratch, while others chose to focus more on conceptual design, discussing possible hApp ideas in order to familiarise themselves with the technical affordances and constraints rather than implementing a specific app.

I decided to take an existing hApp, Notebooks (not surprisingly, written by Guillem), and extend its feature set. Notebooks is a proof-of-concept collaborative markdown editor, similar to hackmd, yet is completely distributed and built using Holochain. As you may know, I am quite into note-taking and especially networked note-taking, so I decided to add bi-directional linking (a common and powerful feature of modern knowledge management applications) to the Notebooks hApp during the hackathon.

It went surprisingly well, and I was able to get a basic prototype working with some fun features — like showing a list of all notes when typing `[[]]`. I could tell that the previous week and a half of learning about Rust and Holochain had made a significant difference as I was able to navigate the backend Holochain code quite comfortably and implement the logic for the bi-directional linking relatively quickly without any major roadblocks. It wasn’t until I got to the front end user interface (UI) that I encountered challenges (since I am still very inexperienced with front-end development). Despite this, I still managed to get something working on the front end in time to share it with the other participants to test out during the hackathon demo!

What the `[[]]` feature looks like in the UI of Notebooks

Even for me, someone who has been working with Rust and Holochain for nearly a year, it was incredibly valuable to go through this curriculum and better understand the fundamentals of Rust, which makes it much easier to navigate Holochain code and the Holochain development kit.

Exponential Composability and the Development Experience

As we got into the Holochain part of the curriculum and explored some of the existing tools and resources available to assist the application development process, it was clear to me the immense potential of Holochain — at least from a developer perspective.

With tools like the hApp scaffolding, open dev modules, launcher and dev hub, the barriers to app development and deployment have already been significantly lowered — and this is only the beginning. Even at this late alpha stage, it’s clear that the benefits of community support and composability are paying off. In fact, I think this could be one of the core value propositions of Holochain to the developer: the development experience and community support.

A screenshot of the app library in the Holochain Launcher

Developers only need to think about app logic and some basic things around scaling (like dht hotspots, for instance). The steps needed to build and deploy a collaborative web application are, in theory, quite minimal — which is phenomenal! This makes tinkering and prototyping much easier. All the developer needs to do is get the users to install the app, and Holochain handles all the networking/scaling/data resilience and many other core architectural aspects of web applications. For example, no server needs to be set up because the users host themselves and share the load of the application network.

Not only that, but as the ecosystem of modules grows, building an app continues to become easier — exponentially. This is why I call it exponential composability. As more developers build apps and decompose the functionality into reusable components/modules, like those on open dev, more and more of the functionality they plan to implement in their idea will have already been created, thereby lowering the total amount of work that is required from them.

I think this hints at what a thriving Holochain internet may look like. Because it will be so easy for developers to compose applications, and the fact that users host themselves, I imagine we will see many custom apps tailored specifically to the groups using them — while remaining interoperable with other custom applications. In some ways, the hackathon demonstrated this potential. In only the course of two days, I was able to extend notebooks to have bi-directional linking. Although this is a note-taking feature growing in popularity, there are no usable collaborative applications (that I’m aware of) that have integrated this feature nicely. With Holochain, it was a trivial change to Notebooks.

The combination of affordances offered by Holochain, like being agent-centric and self-hosted, creates a much more fertile networked computing substrate for many kinds of ideas to be tested out and evolve.

It really feels like we are at the cusp of a Cambrian explosion of collaborative applications. The combination of affordances offered by Holochain, like being agent-centric and self-hosted, creates a much more fertile networked computing substrate for many kinds of ideas to be tested out and evolve. There is no need to pay hosting fees and thus applications face fewer (or at least different) economic constraints. There is no underlying constraint of the software system needing to extract value in some way to pay the hosts of the service (at least for Holochain native apps, not holo hosting, which still has similar constraints). Simply put, it’s easy to picture a much more composable and evolutionary medium for application development.

Beyond the Curriculum — Ideas, People and a Growing Community

My experience so far with the Holochain developer community has been incredible; everyone is friendly and supportive. The only downside being that most of these interactions are online-only, fundamentally limiting their quality. This was one reason why this immersive was so phenomenal — we all got to experience the supportive nature of the Holochain developer community in person. There is an important lesson here for us as well: as hApp developers, we should always prioritize in-person connections, with the goal of any apps to strengthen and support these kinds of interactions.

Throughout the program, I was continuously stunned by the incredible crew of people I got to spend time with. Everyone brought interesting perspectives, experiences, thoughts and ideas to our space. There was no shortage of engaging conversations to participate in during meals or off time. For me, this was the real highlight. Getting to spend two week learning about Holochain with other people who find it really cool was a dream come true, really. In fact, never before have I felt it so easy to connect with other people and jump right in to such engaging conversations!

For instance, on the technical front, there is so much rich material to discuss as the possibility space of design patterns and user experience (UX) to be built on top of Holochain is so nascent and unexplored. Having these kinds of cutting-edge, thought-provoking discussions is deeply engaging. On the broader societal front, we all want to bring forth communication and coordination tools that address deeper, root problems. These shared desires naturally lead to conversations about our monetary and financial systems, governance and societal organizing attractors, as well as individual and cultural co-evolution, among many other topics (many of which will likely continue and expand at DWeb Camp 2022 while some of us reconvene and cross-pollinate).

A typical chatty scene during meal time

By the end, it was clear that we all wanted to stay in touch and pursue collaborations together where possible and appropriate. There was a sense of professional craftsmanship and cooperation like I’ve never felt before.

In many ways, this is one of the greatest values of becoming a Holochain developer. You enter a space where people are friendly and cooperative, where people want to help and pass on knowledge. For example, I have had incredible mentorship for nearly a year working with Sprillow. Ultimately, it’s a space where people want what’s best for those around them and the world at large. It is distinctly different than the competitive nature of mainstream tech industries.

Making this Possible: LSN Regenerative Culture Education Grant and Holo Scholarship

My trip to this program was made possible through the generous support of both Holo, the program host company, and Living Systems Network (LSN), the member-funded society I have been part of since the beginning of this journey.

As mentioned above, Holo is committed to fostering a thriving developer ecosystem, and on that front they were offering scholarship to attend this developer immersive program, which I was fortunate enough to receive.

Additionally, LSN has recently launched a granting program for members to receive financial support to pursue projects or educational opportunities which strengthen our mission and align with our values around regenerative social systems.

If you are in the Vancouver area and are interested in any of our work, come by the garden, we’d love to collaborate!

What Comes Next for Holochain Developers?

The immersive was an incredible opportunity and life-changing in many ways. The most memorable aspect being the network of incredible people I met and will continue to encounter throughout my career. Even so, the program still has lots of refining to go through and Holochain is still in an alpha state. We are still a ways off before day-to-day users will be using Holochain applications — maybe even without knowing it!

Before we reach that point, developers need to be motivated enough to work with the technology and build on it. Currently, the developer experience can be clunky and challenging. To push through all the difficulties they really have to be sold on the bigger vision of the technology — which doesn’t scale. What we really need is a suite of tools for developers that make the experience of building and deploying hApps more enjoyable that other technologies and frameworks — so developers don’t need to be sold on the bigger vision. Given the potential for exponential composability and the existing developer tools, this is certainly possible!

For all the grand ideas about new forms of coordination, we must not forget the importance of UX. People should not have to use applications out of ideological belief or theoretical arguments, but because of the tangible value they provide in their life.

Another area of deep importance that we had not explored much at the immersive is UI/UX (user interface/experience) design. Holochain offers many new possibilities for web applications and online interactions. Yet these possibilities are only made tangible once there is an interface through which people interact, and such interfaces are made by concrete decisions about interaction design and implementation. For all the grand ideas about new forms of coordination, we must not forget the importance of UX. People should not have to use applications out of ideological belief or theoretical arguments, but because of the tangible value they provide in their life. To me, this is the beauty of UX.

Excitingly, many new UX possibilities are afforded through Holochain. To make the most of the interoperability and composability, these affordances need to be mirrored in the UI. Not only in a way that is enjoyable and intuitive to users, but in a way that also helps them shift their perspectives on what application are and can be (especially the relationship between a UI and data since multiple UIs can access and present the same data) as well as their own agency in relation to their interaction with software systems. My guess is that a new field of UX will blossom specifically for interoperable and composable P2P applications.

Lastly, it’s critically important that the developer community and culture continue to develop. The easier it is for new Holochain developers to feel a sense of belonging and purpose among their peers, the stronger the community, and the ecosystem of applications, will become. Additionally, this is an unconventional industry. We need to help each other find ways to sustain ourselves in this field. My career path is not easily replicable, and that’s a bad thing.

Anyone, anywhere, should be able to discover Holochain, access great materials to learn about it, connect with communities they can serve, and participate in a growing and supportive network of incredible peers collaborating to build a new kind of internet. With the first ever dev immersive completed and more to come, we’re certainly on our way to such a world.

Somehow, we managed to get all of us in one photo before we left! (photo by Paul d’Aoust)

P.S. A vlog of my experience at the Holochain Dev Immersive is also available on YouTube

--

--

Wesley Finck
Living Systems Network

Interested in how software can enhance learning, cognition, collective intelligence and open societies.