I came across an open source sofware developer yesterday who wrote:
“I had looked at holochain earlier, but to be honest I found their literature a bit difficult to grasp (with a quick read). But I was aware though that they’re trying to solve the same problem.”
I immensely appreciate the work being done by Art, Eric and team. I am curious if asking a few questions here could clarify a few concepts for myself, and maybe for others too.
My main desire is to better understand some underlying concepts. My main programming experience is building (quite simple) Ruby on Rails apps. I work best with comparisons, so maybe we could compare/contrast Holochain’s framework to Rails’ MVC pattern?
The two big chunks I don’t fully understand yet are:
the difference between Zomes and DNA?
after a lot of searching I also still don’t fully understand unenclosability. What is so significant about this? How does it work? How can I see this insight more clearly? Which part is unenclosable? The protocol? What makes something unenclosable?
For me the recent series by Art on unenclosability did not help clarify this fully. I do also find the language in that a bit tricky in places. As well as technical language, I myself also do not use words like ‘covert’ and ‘overt’. So when reading if there are a lot of words I need to look up that are unfamiliar, I more quickly give up.
Whoever is interested to have a back and forth with my questions, please comment. I am mostly interested to engage here with software engineers and programmers. Please respond if this is you.
Thanks for reading
Edit: i invited the author of the comment I quoted to this forum. I want to emphasize that the questions I asked here are my own and not theirs, and they represent my own curiosity. I was merely happy to see their comment because I often feel sad for not understanding something quickly. Seeing others be open about their struggles to learn helps me to see that i am less alone than I think I am
I don’t particularly have anything interesting to add. Like you, I am more interested in the API from an application developer’s perspective. From that perspective, Holochain’s new terminology (and concepts) feels a bit like a road block (to learning) at times. I am sure I’ll get it if I spend more time on it, but it might be turning a number of developers away.
Maybe there’s no way to simplify this. And eventually, if Holochain becomes popular, people will get used to these pieces. I just don’t know.
I went through the core concepts tutorials and definitely had a number of powerful a-ha moments. I promise you you’ll know the difference between a Zome and DNA if you go through them. I found them easy to follow, and they definitely provide some valuable context.
I think you will answer some of your existing questions, and you’ll emerge with some new ones by the time you’re done. It all builds on itself, so start small and keep going.
Zomes (short for chromosomes) are like modules to the DNA (the whole application): they are the domain specific package that knows how to create, retrieve, link, etc. certain kinds of entries.
Multiple zomes can come together to create different DNAs. For example, I could write these different zomes:
Roles zome
Blogging zome
File storage zome
Currency zome
Calendar zome
Reputation zome
Communities zome
Content management zome
Index/filtering zome
And from this list I can group different zomes together to make different happs:
Meetup clone:
Calendar zome
Communities zome
Currency zome
Roles zome
Index/filtering
Wikipedia clone:
Roles zome
Content management zome
Index/filtering zome
Twitter clone:
Index/filtering zome
Blogging zome
File storage zome
Etcetera. Let me know if you want further clarification.
Holo solves this by avoiding the need for consensus ie ‘global state’ and instead uses an agent-centric data model of P2P node gossip via Distributed Hash Table (DHT)
You don’t necessarily need to understand unenclosability in order to understand the technical part of holochain. But it is the philosophy driving initiatives like holochain and holo host.
Maybe I can try to explain it with an analogy.
Imagine a forest with 2 villages next to it. All the inhabitants of both villages go in to the forest to find wood and food. Anyone enters and exits the forest when they want. The forest is unenclosed.
One day one of the village invents a way to put a giant, indestructible fence around the forest.
Now the forest is enclosed. And one village controls who has access to the forest, what they can take from it and make the other villagers pay for entering.
The idea behind Holochain is to build technology that makes it hard or undesirable to put a fence around it.
For example holohosting is creating a network of small decentralized servers and has and wants no central control. They want to make a unenclosed version of webhosting. I suppose I need not name the companies that are examples of enclosed webhosting. I believe one of those company used to have a slogan: “Don’t be evil”