There are many ways to get involved as a developer. This guide serves to give you a "lay of the land" for developing on Urbit. Let's start with what you can contribute to. At a high level, you can:
- Build clients, which use Urbit as their back-end to store data and interact with the network
- Develop agents, or more precisely gall agents, which are written in Hoon and can best be thought of as microservices
- Contribute to Urbit's core, which involves contributing to Urbit itself — either the operating system (Arvo), runtime (Vere), or public key infrastructure (Azimuth)
Below we'll go into more detail about each of these options and do our best to point you towards a number of additional helpful resources that can be found throughout the docs.
Additionally, you can contribute to Landscape by tackling issues in its issue tracker and/or running the development stream.
You can create your own clients that uses Urbit to store data and interact with other Urbit ships without writing any Hoon code thanks to Urbit's HTTP APIs. This could be a chat client, a writing app, a game, or anything else that can communicate over HTTP.
To get started quickly with the language of your choice, see the list libraries that provide HTTP interfaces to Urbit here.
To learn more about how to work with Urbit's HTTP interface, follow this guide.
Alternatively, command-line interface (CLI) applications can be built using a
shoe, which you can learn more about
here. This does require Hoon knowledge.
Gall agents can be best thought of as individual services with a statically-typed interface and built-in database. They're written in Hoon and all conform to a specific interface that's defined by the kernel vane called Gall.
Applications built on Urbit utilize a collection of different agents, each of which handle specific functionality. The Landscape architecture is a good reference implementation to see how this pattern works in practice.
If you want to learn how to build gall agents, your best bet is to first learn the Hoon programming language, and then follow that up with the Gall guide.
Contribute to Urbit Core
Working on the core means improving the Urbit project itself, working with the existing community of Urbit developers. The kernel is much more stable, but generally more challenging from an engineering standpoint.
Just arrived and unsure what to work on? An ideal way to get started is by experimenting with the system, talking to other developers, and reading (or contributing to) the documentation.
Prefer learning with an instructor? Our community runs an online course that covers the basics of Urbit development called Hooniversity. If course-based learning works well for you, we recommend you sign up.
The Urbit developer community congregates around the urbit-dev mailing
~bitbet-bolbel/urbit-community group on Landscape, and Urbit’s GitHub
repository. It’s a good idea to sign up, see
what people are talking about, and introduce yourself.
Once you’re comfortable working with Urbit, check out the project’s issues on GitHub or some of our contribution bounties.
If you’re looking for some guidance, need help, or would prefer direct communication for your ideas, you can also always reach out to us directly at email@example.com.
From here, you'll probably want to learn more about: