What’s your greatest challenge in developing a Holochain app?

Weekly Discussion #2 – What’s your greatest challenge in developing a Holochain app? Join the discussion with our community.

The responsibility of the developer to consider all possible kinds of attacks and exploits is overwhelming. This constantly disrupts my creative flow and limits my ambitions.

But that’s also kind of the point of a data integrity engine – in a sense, the DNA is the data security layer. But hApps are also much more than that, since most people interested in building Holochain apps aren’t so keen about how they ‘enable you to define validation logic’ as they are excited about the new capacities Holochain apps grant us on a collective level.

There just feels like a distinct divide between these two modes of thinking about hApps. I am at my best when I’m thinking about new capacities we can get out of hApps, and feel depressed and useless when I’m working on validation.

In saying that, I look for elegance in solutions, and writing a mess of validation rules doesn’t feel right, so I use these opportunities to step back and re-evaluate my approach, so that I don’t actually have to write much validation logic. In my opinion, I think this is actually how many hApps will be developed. Developing with Holochain is a transformative experience for developers who are trying to build something that isn’t a well-defined context like a board game. If you’re trying to create a hApp for a complex human system, Holochain really challenges you to reckon with the complexity and notice that you need to change your framing of the problem if you want to avoid spaghetti validation code. I think this is a good thing in the long run.

10 Likes

The responsibility of the developer to consider all possible kinds of attacks and exploits is overwhelming. This constantly disrupts my creative flow and limits my ambitions.

But that’s also kind of the point of a data integrity engine – in a sense, the DNA is the data security layer. But hApps are also much more than that, since most people interested in building Holochain apps aren’t so keen about how they ‘enable you to define validation logic’ as they are excited about the new capacities Holochain apps grant us on a collective level.

Thanks; this is a really great insight into your real life. I imagine it reflects the frustrations of a lot of app devs.

I think it would be unwise to try to abstract away all of this stuff, because people who are building on top of it wouldn’t necessarily appreciate the design trade-offs. But I do feel like at least some patterns ought to get baked into libraries for devs to use. Common patterns for resolving or preventing conflicts, or for governance, or for tracking resources, or what-have-you. Does that seem like it would be useful?

8 Likes

Totally agree on not abstracting away.

As long as pattern libraries aren’t making developers lazy in their design, sure. But I think there’s a lot of potential value in using one of these moments that a developer is stuck to teach them to reframe the thing they’re trying to do. For example, taking a biomimetic perspective might inspire a more appropriate design

5 Likes

ah, great. Sounds like a traditional ‘pattern language’ would be really useful. Explaining patterns in human language / pseudocode, showing where they would and wouldn’t be useful.

3 Likes

For me its the fact that I cant get the sample applications to work. The most basic of applications work, the one I’m really excited about is the ‘Holochain Basic Chat’ as its fully working and comes with a nice UI to get me started.
I tried messaging the developers on Mattermost, and had no joy getting a response.

I know there’s a new release of Holochain coming out nearly every week, and it’s hard for the developers to keep up to date.

I’m really excited to work on a super sample app to get me started.

Also very excited to see how we can get my app in the app store too, I’ve done a lot of research with regards to Rust powered apps in the app store, a PWA isnt very desirable to me.

2 Likes

Needing working network code for multiuser scenario testing or some way to simulate again has been the major roadblock recently.

3 Likes

I agree, something similar to Postman or Socket Wrench could be beneficial

Holochain provides the technical foundation to build complex distributed systems with the capacity to disrupt the status quo and shift the paradigm in which we live to something truly beautiful. The possibilities are endless, so keeping the design and creation of modular and interdependent code in check with an ever-expanding vision can be a headache at times.

That said, it’s a fantastic challenge to have!

4 Likes

It’s also really difficult to know what other people are working on, and whether or not the feature or functionality I’m working on has already been implemented elsewhere.

Building a searchable repo on HC, something like npmjs, could be useful. Especially due to the modular nature of HC.

9 Likes

To be honest, so far it is getting up to speed with Rust, since I do not find it very intuitive and I normally pick up new languages pretty easily and can at least still follow the flow and see what is going on but I find it a lot more challenging with rust and its odd syntax but I am slowly getting there! :wink: lol

This was one of the reasons that motivated me to want to create a .NET HDK… :slight_smile:

I feel this problem can be eased if we created some better Getting Started guides for complete beginners like me who are coming from the outside of both Rust and Holochain… I feel in the tutorials it should explain what each line of the code is doing so it does not assume you have a background in rust… :slight_smile:

I am happy to help contribute towards this documenting what I have learnt coming as a noobie so it helps others in future get up to speed more easily… :slight_smile:

5 Likes

Coming from traditional/relational and nosql databases/object stores. Modelling and linking of entries is kind of new for me. Having a clear visual representation or high level view of a schema would make it easier for me to follow along and see how everything is linked up. A schema designer tool that outputs definitions and links would be super cool.

3 Likes

All: These comments are so helpful. Please know some team members and I are reviewing these comments about challenges projects are experiencing.

@dellams What has made it so challenging to start developing your Holochain App? Could it be related to the complexity of your project? Also, do you have an example of a guide that you would create? I am curious to see what you think would be the most effective type of information to better equip app developers.

The biggest obstacle has been Rust due to it being not very intuitive and an odd syntax not like most other languages but I know it is very powerful and has a lot of potential and why they chose it, I just got to stick to it I guess… :slight_smile:

I would create a guide that didn’t assume any previous knowledge or experience and would explain each line of the rust code to explain what i was doing and why. I would also show various patterns and boiler plate code for common tasks to make getting up to speed as quick as possible and not have to go through what I went though… :slight_smile:

1 Like

That would be absolutely amazing. I would like to know what is needed and what would help developers be successful in creating Holochain apps. Feel free to share any examples/drafts on the Forum/Learning Library area or submit a PR.

Yes, that would be really helpful! Is this something that we can start drafting now somewhere in the Wiki associated with this forum?

@abrahampalmer absolutely: https://forum.holochain.org/c/learning-library/design-patterns . I haven’t written up the contribution guidelines yet, but basically:

  • Formulate it as a problem/solution.
  • Describe the solution, not in code but in concepts and constructs.
  • Describe where this solution is not appropriate.
  • Make heavy use of links to other patterns in the same wiki (which is impossible right now cuz there are none).
  • Mark your pattern topic as a wiki.

This is totally an experiment to see if Discourse is a good place to have a collaborative wiki. Maybe the official documentation site would be better, but this is a tool we have, right, now, and can start iterating on it.

2 Likes

I’ve tossed in a few patterns as examples. Definitely work in progress.

I definitely agree: “Networking”. Me and my son were making great progress in diving into holochain-rust using the examples provided by @freesig and @pauldaoust using their wip tutorial here: Holochain Core Concepts - HackMD. (great work so far by the way!) But then we thought: Let’s make the next step and lets combine two running instances of our SimpleMicroBlog and there we are now: Our efforts to use n3h did not work and the new lib3h is not yet ready i believe. I guess we have to await further progress there (to be honest I was a litte confused about that :slight_smile: )

1 Like