Urbit for Developers: Workshop Agenda

Workshop Agenda

N E Davis (~lagrev-nocfep) · Assembly 2021

Objectives

  1. Program literately using the Hoon language, including source code conventions and interoperability.
  2. Explain and navigate the schematics and technical implementation of the Urbit OS kernel (Arvo and vanes).
  3. Construct novel userspace apps to run on the Urbit OS platform (Gall, Landscape).
  4. Sign and distribute working apps through an Urbit-backed software development service.

We will not deal with Azimuth, parsing, many aspects of generators, event logs, runtime issues, and many other aspects of fully grokking Urbit.

NO LESSON PLAN SURVIVES CONTACT WITH THE CLASSROOM but our meta goals for each day are:

Audience

Software developers in attendance at Assembly in Austin, Texas. These all have skill in some programming language platform; we expect two categories of participants:

  1. Those with little to no experience with software development in Hoon and on the Urbit platform.
  2. Those with Hoon School-tier exposure to the Hoon programming language.

Prerequisites

We do not anticipate your knowing Hoon in advanced, although experience with programming is a prequisite.

You should have a fakezod, or Urbit ship not running on the network.

You may set this up with a new Urbit binary:

urbit -F zod

Schedule

Setup Download files required for the lesson
00:00 1. Hoon Basics: Runes | Basic Programs How are Hoon programs structured?
What are runes?
00:45 2. Hoon Basics: Data Structures How does Hoon represent data values and structures?
How can I compose and run multi-line programs?
01:15 3. Hoon Basics: Subject-Oriented Programming How are Hoon programs structured?
What are runes?
02:00 4. Hoon Basics: Libraries How can I import code into a Hoon program?
02:30 5. Hoon Basics: Advanced Data Structures How are structured data typically represented, populated, and accessed in Hoon?
Which common patterns in Hoon exist?
03:15 6. Arvo: Kernel Structure How is the Urbit kernel structured?
How do I access system operations?
03:35 7. Arvo: Vane Roles What services do Arvo vanes provide?
How do I access system operations?
03:55 8. Arvo: API & Scrying How do I access data locally?
How do I access data remotely?
04:30 9. `%gall`: A Minimal Working Example What are the structure and expectations of a %gall app?
05:00 10. `%gall`: Adding Functionality How can I build a %gall app which operates on data?
05:45 11. `%gall`: Interfacing with a Client How can I build a %gall app which operates on data?
07:15 12. `%gall`: Constructing an App How can I build a %gall app starting from a minimal working example?
08:00 13. `%gall`: Releasing an App How can I deploy a release-worthy %gall app?
How can I authenticate my app?
08:45 14. Next Steps What should I do next to contribute to the Urbit community?
09:00 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.