Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

List of exercises #1

Open
9 of 27 tasks
guillemcordoba opened this issue Dec 1, 2020 · 6 comments
Open
9 of 27 tasks

List of exercises #1

guillemcordoba opened this issue Dec 1, 2020 · 6 comments

Comments

@guillemcordoba
Copy link
Contributor

guillemcordoba commented Dec 1, 2020

List of exercises:

Prerequisits

  • Hash
  • Public/private key cryptography
  • DHT

Beginner

  • Entries
  • Links
  • Elements
  • Source chain
  • DNAs, zomes and cells
  • Tryorama Testing

Intermediate

  • Paths
  • Validation rules
  • Delete Entry
  • Update Entry
  • Entry Visibility
  • Capability tokens
  • Remote Call
  • Signals (local & remote)
  • Bridged calls
  • DNA properties
  • Available zome calls (random_bytes, zome_info)
  • Hooks (init, schedule...)

Advanced

  • Membrane proofs
  • Conductor services
  • Cloning DNAs
  • Zome function contexts
  • Publishing: holo vs holochain
  • Crypto functions (signing, encryption...)
@tatssato
Copy link

tatssato commented Dec 8, 2020

Hey, I think overall this is great and Im excited to start working on them :D
two small question/feedback

  • Will call_remote be covered in capability tokens? Or should we have a separate topic for it since it is used not only in requesting for cap grant and what not?
  • I'm thinking we should also include query somewhere here. Im thinking it is either in beginner/intermediate. :D

That's all!

@guillemcordoba
Copy link
Contributor Author

guillemcordoba commented Dec 8, 2020

Yeah call_remote should be its own thing you're right.

Hum actually I wanted to include query it as the exercise of the source chain chapter. There is not much else we can do with the source chain than query it :)

@tatssato
Copy link

tatssato commented Dec 8, 2020

oops you're right haha totally missed the source chain section :D
But yeah other than that, it's good to go for me!!

@pdaoust
Copy link

pdaoust commented Jan 7, 2021

Looks like a pretty comprehensive list! A few additions:

Prerequisites

  • Something about hash chains maybe?

Beginner

  • I feel like entry visibility should be introduced at the same time as entries

Intermediate

  • Required validations (maybe this is advanced, though, because it needs to talk about threat models and stuff)
  • Remote signals
  • Conductor admin and app API
  • WebSocket RPC interface
  • DNA properties and other environment context (agent_info, entry_type_properties, zome_info, and show_env (unimplemented))
  • random_bytes and sys_time host functions

Advanced

  • Detecting integrity metadata like warrants and source chain forks
  • Counterparty signing (can't be discussed until it's actually a thing)
  • Architecture best practices (modularity, encapsulation, code reuse)
  • Decryption and encryption
  • More complex UI topics, including handling eventual consistency
  • schedule host function (unimplemented)

I'm sorry it took me so long to respond to this!

@guillemcordoba
Copy link
Contributor Author

Thanks @pdaoust , I've included the changes I agree with right away.

The items architecture best practices and required_validations... I would include them in the architecture exercises more than in the developers one. Actually I've taken out also the DHT Hops and DHT Ops since those can go into architecture/beginner.

Not sure about the UI calls... Hum will think about those, I don't want this to be a replacement of good tutorials on the part of conductor-api and such... Although there is a need for some more theoretical place that explains the concepts... For example, the Paths page and the capabilities one have been very useful for people to understand the concept, but the gym is a practical place with interactive exercises, not a documentation repository. What do you think about this @pdaoust ?

Also, about the unimplemented functions, let's see where we put them when we have them since they might be necessary for some other exercise or not so much. I don't want this to be the definitive list, just a good starting point, the valuable list of exercises is the one that will come out from the feedback we have from people actually doing and trying the exercises I think.

@pdaoust
Copy link

pdaoust commented Jan 8, 2021

whoa, in spite of the fact that the gym is not meant to be a documentation repository, those path and capabilities resources are some of the best documentation I've seen on the subject so far. So well structured and well written. So is the intention to have an exercise at the bottom of each page?

I think the gym and the core concepts and the guidebook don't have to perfectly match each other in order and structure; they can exist as their own things and simply reinforce each other through cross-linking. I'm definitely going to take your two examples as a template for well-structured guidebook documentation though!

What are your concerns about including UI stuff in the gym? To me they feel crucial to understanding the Holochain thing, and it'd be great for hApp devs to get some practice. The holochain-conductor-api repo (which I really think should've been called holochain-client-sdk, cuz that's what it is) does simplify things, but I do still think it's important to have a grasp of what's going on at a basic level -- even if the examples all use the JS lib.

Good call on rolling architecture best practices, required_validations, DHT hops, and DHT ops into other places. Seems like some of them don't lend themselves well to an exercise.

tixel added a commit that referenced this issue Apr 14, 2021
Sync fork with holochain-gym
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants