Overall thoughts from developers using Holochain?

Hi all,

I am just curious to have an open conversation with other folks developing with Holochain how their experience is. Obviously, I can start, and share a few reflections.

wins

  • rust-analyzer as a hint system for developing with Holochain within VSCode (extension) is really great. Inline help with Rust compilation is huge.
  • composability of ‘apps → dna → zomes’ shows big promise in terms of publishing Rust crates to crates.io and community code and pattern re-use. This is more theory than practice at the moment, but some crates are being published on holochain-open-dev and that has promise
  • The background handling of complexity in cryptographic signing, from an app dev point of view is very nice. calling the simple hdk functions to perform signing is elegant.
  • the community of developers really is fun to talk with and very supportive, and generous with time.
  • it is fun to build “serverless” systems and really push back the corporate cloud. sovereignty feels like real potential
  • signals system is great for realtime
  • network stack is coming together, and decoupling of ‘discovery’ services (bootstrap) from ‘connection handling’ services (proxy) feels like the right balance of providing simplicity for users without sacrificing ideals of decentralization :+1: bootstrap services and proxy services have performed well during my testing

losses

  • composability of hApps via ‘apps->dna->zomes’ is very confusing, and seems to always be in transition to something else thus not ever getting crystal clear
  • I keep running out of space on my Macbook Pro because Rust projects compiled in debug are huge, and add up space wise very quickly
  • since Holochain downgraded nix support for MacOS quite a while ago it was a huge loss and I still haven’t got back on board the nix train, even though I think they’ve brought back support. Use of nix overall has been extremely patchy, from a mac point of view
  • using Javascript libraries wrapping Holochain functionality is pretty awkward, it can be very uncertain which versions of the JS libraries work with which versions of the binary… also just the typescript types are a little funky and the API hasn’t been reviewed so feels rough. I don’t like using conductor-api or tryorama, so I’ve wanted to use the emerging Rust based test suite (not sweettest, but the unit testing / fixtures) for testnig, but have no alternative to conductor-api (Js). Support within those also tends to take time to come around after changes have already been merged to core holochain.
  • documentation is super sparse

lessons learned

  • wherever and whenever possible, wait for anything resembling a stable release before adopting, it will save you + the core team frustration and effort (it can feel hard to wait, but patience seems to be the name of the game here)
  • build in Rust where you can and pin Holochain versions via their GIT SHAs instead of branch names or other less fixed identifiers, in your Cargo.toml, also, list out and track well the Holochain revision you use, and list the date of the commit as well as the SHA for context to the reference. This will create an experience of consistency and reproducibility during your development

there’s some of my reflections thrown down, how about you??

@guillemcordoba @tats_sato @hedayat @ddd-mtl @pospi

15 Likes

+1 On everything you said Connor.

Still not sure what to think of Rust as its slow to compile and generates lots of bloat, but at the same time has many advantages which makes me want to make a 100% Rust happ. Unfortunalety Rust is missing a stable and feature-complete GUI framework to make this viable. Also, Holochain is being designed with Holo strongly in mind, so its quite hard to move away from web technologies.

3 Likes

Yes, I suspect you’ve seen this then @ddd-mtl ? :stuck_out_tongue: https://www.areweguiyet.com/

1 Like

yep. I’d be tempted to try out Druid or FLTK as the latter does work on android.

1 Like

+1 @Connoropolous . You mentioned a lot of nice topics and issues.

I totally resonate this one.

I am using Nix on Linux and having the same issue. I am running out of disk space.

I generally agree to this. Although there are problems and pains for early adopters, without them the system will not easily reach maturity.

(+) I think Holochain hApp launcher & HoloPort hApp Hosting and Test Network can also motivate developers to start building more hApps.

3 Likes

Well this is a really interesting topic and thread. Thanks @Connoropolous for starting it.

I think we are just in the beginnings of having a good enough environment to develop hApps well enough. Things like stable and periodic releases with changelogs, nix having those cached and the latest MacOS issues solved, and windows support, should already go a looong way to improve this.

The strategy of prioritizing features over stability seems to have worked well as far as how the performant and fully-featured the RSM version we have is. However, it has made it less accessible for hApp devs to start experimenting and playing with it. I feel we as a dev community could do a better job with this, trying to help each other out and keeping up to date with the relevant pieces. It can be exhausting coming in and trying to figure out what’s important and what isn’t. This is one of the reasons I’m so excited about holochain-in-action.

One piece I’ve thinking about around this has been that we don’t have a good knowledge repository. Things move so quickly that it’s not enough to chat about the latest issue and point to the relevant documentation, so we normally need to explore with the latest release to figure out the couple of gotchas that you need to know to have a smooth experience. I like being on the edge and banging my head to a wall until I get what happens, but this is not reasonable to expect of hApp devs - they should be concerned with writing their app.

So, for now I’ve set up this wiki, and will try to add new recipes, gotchas and "how to"s to be able to bring new devs up to speed better. Whoever wants to contribute you know that’s more than welcome, even if it’s with gaps that we need to fill.

I agree with @hedayat , I think with the upcoming devcamp and end users being able to use holochain, new devs are going to come looking for guidance. Let’s see if we are prepared to smooth the experience for that wave :slight_smile:

Oh and also, I’m really excited to be playing around designing/architecting with the playground… Don’t know when I’ll have the time to put effort into that.

Happy to continue the chat (it’s a very rich one!)

6 Likes

Totally agree about hApp devs, one shouldn’t need tot become something close to a core developer to become a hApp developer. Though I’ve some experience with core, I almost have been trying to make myself more and more ‘just a hApp dev’ in order to save my own time and effort, as well as place myself better in the shoes of folks who would become newly aware of holochain and want to build.

Absolutely, I am excited to get involved, which I have plans to.

I will contribute when relevant, many things I’ve posted to the forum are suitable material.

Do we believe this will continue or turn a corner?

4 Likes

Thanks for sharing!
I don’t have much to add because I didn’t really get far due to some of the reasons already mentioned.

@toledoroy
thanks for sharing anyways, would you be willing to share a little more? I’m putting together a rough picture of the most glaring pain points for new comers to holochain when it comes to the documentation aspect, in preparation for a “documentation drive” to improve it. Can you do any walking me through what your steps when you were trying to get started were? venting a bit could also help :stuck_out_tongue:

2 Likes

Hi,
Thanks for the willingness to help!
I already wrote the whole thing on another thread. That was a few months ago and after I didn’t get any help I took a break and started something else.
I’m still keeping an eye on the forums. Once things mature, and I’ll get some free time I’ll give it another shot

2 Likes

Cheers, I will take a peek back at your posts.

Thanks for posting, Very informatic for me, Really appreciate.

How about GitHub - iced-rs/iced: A cross-platform GUI library for Rust, inspired by Elm?

1 Like