ProtoSchool / protoschool.github.io

The code that runs the ProtoSchool website. Visit https://proto.school for interactive tutorials on decentralized web protocols. Explore IPFS and Filecoin through code challenges, code-free lessons, and local events.
https://proto.school
Other
165 stars 68 forks source link

Create plan for use of IPFS Camp content in ProtoSchool #261

Closed terichadbourne closed 4 years ago

terichadbourne commented 4 years ago

Review IPFS Camp content and determine what would fit well within ProtoSchool and whether it makes sense as new tutorials or additions to existing materials.

Camp content to review For some of these it will become quickly apparent that the content won't translate well to ProtoSchool, either due to the format or the conent (for example, vendor-specific content if there aren't extractable IPFS tidbits), but we'll at least note that quickly in this issue before moving on. Please check off below when the course has been reviewed and suggestions have been added to a new comment in this issue.

terichadbourne commented 4 years ago

Adding a bit more detail to this one. :)

We plan to evaluate the content from IPFS Camp and see what would fit nicely into ProtoSchool in a variety of ways:

If you have ideas on specific ways we could adapt IPFS Camp content into ProtoSchool, please share them in this issue!

realChainLife commented 4 years ago

Hi Teri,

Great idea! I didn't get the chance to attend the IPFS Camp but going through the camp-content-first-batch release - there's a gold mine of content that i think would make great Protoschool tutorials.

At Protoschool Nairobi, we're taking ipfs enthusiasts through the tutorials as a weekly study guide and some of the content we can add to the course include:

Let me what you think and how I can hekp to get started with these if you agree.

terichadbourne commented 4 years ago

@realChainLife Thank you so much for your offer to help with new content, and apologies for the delay in getting back to you! I'm still working my way through the camp content, but both of these topics you're proposing sound interesting and I'd love to hear more about what you have in mind!

I've been working on some clearer documentation for the process of building effective tutorials, not just how to build the tutorial in our repo (already documented here) but how to create great learning experiences and what features are supported by our platform. The easiest way to see my new additions (still very much a work in progress) is to check out the diff here. To get started, I'd recommend that you read through both sets of instructions linked above, check out the existing new tutorial proposals to see if there's any overlap, then open issues for each new tutorial proposal that doesn't already have an issue to add to. (Based on a quick glance through existing issues, I expect you'd be adding two new issues, one of each of your bulleted suggestions.)

If you spotted specific content from IPFS Camp (repo) that's relevant and could help inform either of these tutorials, you should definitely include links in your issue, along with links to any other helpful documentation that could be drawn on for the content. You'll see in the reference materials about building tutorials that there are a few different types of lessons available: code challenges (with or without file upload), text-only lessons, and multiple-choice lessons (new feature). I'd love to hear more in your issues about which formats you think would be most relevant for this content. We can use each issue as a place to solicit input from peers before you get started building and ensure there's a solid content outline that fits cohesively into the ProtoSchool curriculum and supports a beginner-friendly learning experience with appropriate scaffolding.

I'm really excited to learn more about the content you have in mind! 🎉 Please let me know if you have any questions about the documentation or would like to schedule some time to chat.

terichadbourne commented 4 years ago

Core Course A: Understanding How IPFS Deals with Files (led by @alanshaw & @mikeal):

Potential uses in ProtoSchool:

terichadbourne commented 4 years ago

Elective F |Starting, Growing, and Stewarding your IPFS Community | Course Repo, Slides (Google Slides)| Video|

Nothing here to add as tutorial content, but...

terichadbourne commented 4 years ago

Core Course D: The lifecycle of data in the DWeb

This one addresses a lot of very common questions about what happens after you add file to IPFS. More than some other resources it also focuses on blocks specifically as opposed to files (which our MFS and Files tutorials focus on). The lecture format used at IPFS Camp would lend itself well to a text or multiple choice format but likely not coding challenges. There are also lots of helpful graphics in the deck that would be great to incorporate.

Potential uses in ProtoSchool:

terichadbourne commented 4 years ago

Core B: Solving distributed networking problems with libp2p

Because of the hands-on format of this workshop, which asked participants to build a chat app on their local machine, it doesn't lend itself directly to a ProtoSchool tutorial. However, there are plenty of nuggets in the slide deck that could be taught.

There are probably a couple of options here: A. pull out core concepts from the slide deck and teach them in a multiple-choice format B. add validation support for libp2p to ProtoSchool and then create a tutorial with in-browser coding/configuration challenges (see issue #229 ) - this still wouldn't directly mirror the approach taken in the workshop, which requires one's own command line and development environment

Either of these options would require support from the libp2p team.

Some of the key concepts covered in slides/speaker notes that might be relevant:

Note that there's a lot of overlap here between DHT coverage in Core Course D (Lifecycle of Data in the DWeb) and this course. Is there any reason that IPFS-flavored DHT education and libp2p-flavored DHT education would need to be distinct from each other?

@jacobheun as the lead for this IPFS Camp course and the author of issue #229 on adding validation support, I'd love your input on what feels most feasible for incorporating your content into ProtoSchool. Note that there's new documentation available on the platform capabilities/limitations. What feels like the right starting point?

terichadbourne commented 4 years ago

Core C: Developing Apps with IPFS API

There are a lot of great nuggets in here that haven't yet been taught in ProtoSchool, but the hands-on workshop format used at IPFS Camp may not lend itself well to the current platform capabilities/limitations, such as doing everything in-browser in js-ipfs. We could certainly add some relevant content in reading / multiple-choice lessons even if we're not able to replicate the coding challenges of building an app.

Some key topics covered in the slide deck:

@lidel @hugomrdias I'd love your input on whether any of this content could work well as coding challenges (using in-browser js-ipfs) or if we should hone in on text/multiple-choice options for teaching about how IPFS can be used inside applications (or honing in specifically on IPNS).

terichadbourne commented 4 years ago

Elective A: Identity on the DWeb

This session introduced Identity Manager (IDM) and walked people through the process of integrating IDM to provide authentication and signing into a simple decentralized chat app. There's some very interesting content here, but I'm not sure if Identity Manager/Nomios are far enough along in development to be taught yet. As best I can tell the concepts here would be most appropriate for text / multiple-choice lessons if they were implemented in ProtoSchool. (However, docs say "there will be a reference IDM Wallet written in JavaScript, suitable to use inside a browser" so perhaps some coding challenges would be possible if useful.)

Key concepts:

@dominguesgm I know you've worked on IDM in the past so I'd love your take on what seems like it could fit well in ProtoSchool.

terichadbourne commented 4 years ago

Elective B: Managing pinsets with IPFS Cluster

This course was very much a command-line based hands-on workshop on operating and using IPFS Cluster to orchestrate a common pinset among multiple IPFS nodes. My impression is that the format of this workshop doesn't lend itself well to ProtoSchool (where we can either do text/multiple-choice lessons or js-ipfs coding challenges in the browser) because I don't see a clear JS implementation at first glance and assume we wouldn't be able to replicate the experience of connecting to multiple peers from within ProtoSchool, but I'd love for folks more familiar to correct me if I'm wrong.

It would certainly be possible to teach about some of the benefits of Cluster in text/multiple-choice format, but as noted in the prereqs for the workshop, that would require first teaching IPFS concepts such as pinning (likely to be included in the output from Core Course D) and libp2p peers and swarm (no libp2p content at present and coding challenges would require the addition of libp2p validation under the hood).

My gut is that we should continue down the road of adding IPFS and libp2p content mentioned above, then circle back with the Cluster team to see whether there's additional content that would be useful and feasible once that scaffolding is in place. @lanzafame @hsanjuan I'd love your thoughts.

hsanjuan commented 4 years ago

Elective B: Managing pinsets with IPFS Cluster

@terichadbourne your gut is right. The main contribution that could come from our side to something like Protoschool is about dynamic data and [Merkle]-crdts . That would be something cool to do once you know all the basics... Something for the future though

terichadbourne commented 4 years ago

Elective D: Building DApps with Textile, the iCloud for the DWeb

This hands-on, command line workshop use Textile's developer suite to introduce participants to tools and techniques that facilitate building real-world apps and libraries on top of IPFS. Topics covered include: seeds, wallets, threads, schemas, mills, DAGs, etc.

Based on the format of this preso in building a full dapp, I don't think it would lend itself easily to ProtoSchool's capabilities, and the Textile team has great documentation on their site for the basic concepts taught here. I'd recommend skipping Textile content in our immediate efforts but would be very happy to consider proposals from folks who'd like to add it down the road where relevant, especially after we have more of our core IPFS content covered to provide more scaffolding.

lidel commented 4 years ago

Core C: Developing Apps with IPFS API [..] @lidel @hugomrdias I'd love your input on whether any of this content could work well as coding challenges (using in-browser js-ipfs) or if we should hone in on text/multiple-choice options for teaching about how IPFS can be used inside applications (or honing in specifically on IPNS).

Theory would be mostly text based. A subset of coding challenges that relied on js-ipfs running on a page could be translated into ProtoSchool format, but I don't believe IPNS changes landed yet (@hugomrdias and @aschmahmann work on it). We also probably don't want to invest time in teaching people how to use centralized ws-star when we plan to deprecate it. Hope this helps.

dominguesgm commented 4 years ago

Elective E: Deplying IPFS Infrastructure

The course covers how to create an IPFS cluster in the cloud. It is mostly command line based. Some non IPFS specific topics are covered in the first half of the session, like creating Digital Ocean droplets, using ssh and creating a key to use ssh.

This course uses Digital Ocean in order to host an IPFS infrastructure, which may be an issue given it requires creating an account on Digital Ocean and providing payment information.

IPFS related information (installation and work) starts at the 26 minute mark. Some IPFS node settings are discussed, such as:

At the current stage for ProtoSchool, with no tutorials on command line IPFS, the contents on this course seem to be too advanced to be relevant to be included here.

dominguesgm commented 4 years ago

Elective G: Managing Datasets with QRI

This course gives an introduction to QRI for managing datasets and how it interacts with IPFS. It's a pratical, command line based course which teaches the basic usage of QRI, how it handles adding and querying datasets, as well as how updates are managed.

This elective seems to be indirectly related to IPFS contentwise, in a way where I don't feel like there is content that could be extracted for use in ProtoSchool. It can, however, be showcased as a relevant IPFS usage "in the wild" if we end up creating some sort of Resources page for relevant projects, to show users what can be built with IPFS.

dominguesgm commented 4 years ago

Elective H: Making the Browser a True User Agent

This course discusses the browsers place in the distributed web, and how a browser can be adapted or created in such a way that it can make use of the distributed web.

Some of the approaches discussed are:

One disadvantage for analyzing this elective course is that we do not have a video recording of the session, and can only base ourselves off of the course slides. The slides mention a practical section of the course.

Personally, I don't see a way in which the content of this elective course could be applied to ProtoSchool. The format of the practical section would not lend itself well to ProtoSchool's format and the theoretical section at the beginning is more of an exploration of what could be the browser's place in the future of the DWeb and not any particular learnable concept.

terichadbourne commented 4 years ago

Closing out this survey issue in favor of the individual issues now created for all actionable proposals:

Core Course A

Core Course D

Elective Course F

@johnnymatthews flagging this issue as complete so you snag any useful notes for docs site updates. There'll be more content that's useful for you than us since you don't have all of our formatting limitations.