Next Steps
Overview
Teaching: 15 min
Exercises: 0 minQuestions
What should I do next to contribute to the Urbit community?
Objectives
Install the app on another ship (planet, moon, or comet).
What Else is There?
We have had a whirlwind tour of developing basic %gall
agents for Urbit. We have necessarily had to leave out some important topics, including:
- Graph Store operations and data format
- Endpoint operations using
%eyre
- Detailed JSON production and parsing
- Remote subscriptions and kicks
- Front-end development (à la Landscape)
- Threading for transient data requests
- Composition of store/hook/view arrangement
For a demonstration of a few of these, I suggest you examine dcSpark/authenticate-with-urbit-id
, which is a small agent that demonstrates parsing JSON input, subscribing to Graph Store, and some other simple elements of %gall
agents.
For a more complex single-purpose example including front-end development, you should examine yosoyubik/canvas
, a peer-to-peer drawing app with a browser frontend and an Urbit backend.
To learn more about threads, read about Spider in the docs and examine ted/example-fetch.hoon
in your own Urbit. Threading is particular useful for handling complicated IO outside of an agent without compromising the agent’s internal state.
Concrete Next Steps
- Talk to everyone here. Find out what’s going on, what folks are working on, and how you can plug into the bigger picture.
- Identify new ways to use what Urbit offers within your sphere of influence and responsibility.
- Just start making things! Lots of small projects are helpful for you to grow and become comfortable with the shifts in mental model and frame that Urbit affords.
Joining the Urbit Developer Community
Discovery
Contributing
The Urbit ecosystem is primarily developed by Tlon Corporation, a few companies (Urbit.Live, Tirrel, dcSpark, and some hosting companies), and an army of open-source contributors. The types of projects which you can contribute to include:
- End-user applications (“userspace”,
%gall
)\ - Operating system functionality (Arvo & vanes)
- Runtime (king/serf, jets)
As the Urbit developer community grows, there will be opportunities as well for various types of services, ranging from service hosts to star and galaxy owners.
The Tlon contributor’s guide largely focuses on kernel contributor discipline, but provides a good framework for approaching development of any part of the ecosystem.
If you have not participated in an open-source project before, please check these resources as well:
- Gregory V. Wilson, “Joining a Project” (good advice from my mentor)
- Zara Cooper, “Getting started with contributing to open source” (more generic advice from SO)
- Philip Monk
~wicdev-wisryt
, “Urbit Precepts” (the philosophy underlying Urbit’s architectural decisions)
Main Groups
Some community-facing groups which you can use to learn more about programming and developing in Urbit include:
~hiddev-dannut/new-hooniverse
(Hooniverse, beginner-oriented)~littel-wolfur/the-forge
(The Forge, general development)~dasfeb/smol-computers
(Smol Computers, running on non-x86 hardware)~pindet-timmut/urbitcoin-cash
(BTC)
Urbit Foundation Opportunities
The Urbit Foundation maintains an active developer outreach including:
- Bounties
- Apprenticeships
- Grants
Talk to Josh Lehman ~wolref-podlex
for more information.
Resources
- The Architecture of Open-Source Applications, vv. 1–2
- Code Complete
- The Pragmatic Programmer
- Working with Legacy Code
- Design Patterns for Humans
Key Points
The Urbit software distribution service affords a straightforward way to deploy, update, and remove
%gall
apps.