Skip to content

Conversation

paschal533
Copy link

Description

This pull request initializes the workshop for teaching Python programmers how to build a universal connectivity application using py-libp2p. It implements Step 1 (setting up the workshop structure and dependencies) and Step 2 (creating the first foundation lessons). The workshop is designed to be interactive, engaging, and suitable for a classroom setting, with a structure that complies with the WORKSHOP_AUTHORING.md guidelines.

Changes Introduced

Step 1: Workshop Structure and Dependencies

  • Created the uc-workshop/py/ directory structure to house the workshop content.
  • Added deps.py to check for required Python dependencies (e.g., Python 3.8+, py-libp2p, and other necessary libraries).
  • Added setup.md with clear instructions for setting up the Python environment and creating a new project for the workshop.
  • Established common utilities and templates to support lesson development and ensure consistency across the workshop.

Step 2: Foundation Lessons (1)

  • Lesson 1: Identity and Basic Host
    • Objective: Teach participants how to create a libp2p host with a cryptographic identity.
    • Content: Introduces the concept of a libp2p host, peer IDs, and key pair generation using py-libp2p.
    • Files:
      • lesson.md: Detailed explanation of libp2p identity concepts with practical exercises.
      • lesson.yaml: Metadata for the lesson (title, description, status).
      • check.py: Script to validate the participant's implementation of a basic host.
      • app/Dockerfile: Docker configuration for running the lesson code.
      • docker-compose.yaml: Configuration for containerized execution and output logging.
      • stdout.log: Placeholder for capturing lesson output.
    • Exercises: Participants create a basic libp2p host and generate a peer ID.
    • Hint Blocks: Tips for handling key pair generation and debugging common errors.

Key Features

  • The workshop structure follows the format specified in WORKSHOP_AUTHORING.md.
  • Lessons are designed to build upon each other, starting with fundamental concepts (identity, transports, connections) to prepare participants for more advanced topics.
  • Each lesson includes clear objectives, concise explanations, and interactive exercises to reinforce learning.
  • Docker configurations ensure consistent execution environments for participants.
  • Check scripts (check.py) provide automated validation of participant solutions.
  • Hint blocks are included to assist with common pitfalls and enhance the learning experience.

Testing

  • Verified that deps.py correctly identifies required dependencies.
  • Tested lesson exercises in a local Python environment with py-libp2p installed.
  • Validated Docker configurations for each lesson to ensure proper containerized execution.
  • Ensured that check.py scripts accurately validate participant solutions.

Additional Notes

  • The py-libp2p library is experimental and under active development. This workshop accounts for its current state and focuses on stable features.
  • The workshop is designed for a classroom setting with an instructor, including checkpoint lessons for live progress tracking and prize distribution.
  • Feedback is welcome on the lesson structure, content clarity, or additional features to enhance the learning experience.

Checklist

  • Created uc-workshop/py/ directory structure.
  • Implemented deps.py for dependency checking.
  • Added setup.md with setup instructions.
  • Created Lesson 1 (Identity and Basic Host) with all required files.
  • Tested all lessons in a classroom-like environment (pending classroom testing).
  • Ensured compliance with WORKSHOP_AUTHORING.md guidelines.

@paschal533 paschal533 marked this pull request as draft July 1, 2025 22:37
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

Successfully merging this pull request may close these issues.

2 participants