2title = "Getting Started"
3description = "How to get started developing on Urbit."
6aliases = ["/docs/using/creating-a-development-ship/", "/docs/getting-started/contributing"]
9There are many ways to get involved as a developer. This guide serves to give
10you a "lay of the land" for developing on Urbit. Let's start with what you can
11contribute to. At a high level, you can:
13- [Build clients](#clients), which use Urbit as their back-end to store data and
14 interact with the network
15- [Develop agents](#agents), or more precisely [_gall_
16 agents](/docs/arvo/gall/gall), which are written in [Hoon](/docs/hoon/)
17 and can best be thought of as microservices
18- [Contribute to Urbit's core](#core), which involves contributing to Urbit
19 itself — either the operating system
20 ([Arvo](https://github.com/urbit/urbit/tree/master/pkg/arvo)), runtime
21 ([Vere](https://github.com/urbit/urbit/tree/master/pkg/urbit)), or public key
22 infrastructure ([Azimuth](https://github.com/urbit/azimuth))
24Below we'll go into more detail about each of these options and do our best to
25point you towards a number of additional helpful resources that can be found
28### Build Clients {#clients}
30Urbit ships with [Landscape](/docs/glossary/landscape), which can be thought
31of as its flagship client. Landscape can be broken into two different technical
32components: there's the collection of [agents](#agents) that utilize the
33Urbit for networking and data persistence, and the JavaScript client, which is
34an [interface](https://github.com/urbit/urbit/tree/master/pkg/interface) built
35with [React](https://reactjs.org).
37Additionally, you can [contribute to
38Landscape](https://github.com/urbit/urbit/blob/master/pkg/interface/CONTRIBUTING)
39by tackling issues in its [issue
40tracker](https://github.com/urbit/landscape/issues) and/or running the
41[development stream](https://groups.google.com/a/urbit.org/g/dev/c/r2hv4ajCLwk).
43You can create your own clients that uses Urbit to store data and interact with
44other Urbit ships without writing any Hoon code thanks to Urbit's HTTP APIs.
45This could be a chat client, a writing app, a game, or anything else that can
48To get started quickly with the language of your choice, see the list
49libraries that provide HTTP interfaces to Urbit [here](https://github.com/urbit/awesome-urbit#http-apis-airlock).
51To learn more about how to work with Urbit's HTTP interface, follow [this
52guide](/docs/arvo/eyre/external-api-ref).
54Alternatively, command-line interface (CLI) applications can be built using a
55library called `shoe`, which you can learn more about
56[here](/docs/hoon/guides/cli-tutorial). This does require Hoon knowledge.
58### Develop Agents {#agents}
60Gall agents can be best thought of as individual services with a
61statically-typed interface and built-in database. They're written in
62[Hoon](/docs/hoon/overview) and all conform to a specific
63[interface](/docs/arvo/gall/gall-api) that's defined by the kernel vane
64called [Gall](/docs/arvo/gall/gall).
66Applications built on Urbit utilize a collection of different agents, each of
67which handle specific functionality.
69If you want to learn how to build gall agents, your best bet is to first [learn
70the Hoon programming language](/docs/hoon/hoon-school/), and then follow that
71up with the [Gall guide](/docs/userspace/gall-guide/intro).
73### Contribute to Urbit Core {#core}
75Working on the core means improving the Urbit project itself, working with the
76existing community of Urbit developers. The kernel is much more stable, but
77generally more challenging from an engineering standpoint.
79Just arrived and unsure what to work on? An ideal way to get started is by
80experimenting with the system, talking to other developers, and reading (or
81[contributing to](https://github.com/urbit/docs)) the [documentation](/docs/).
83Prefer learning with an instructor? Our community runs an online course that
84covers the basics of Urbit development called
85[Hooniversity](https://hooniversity.org/). If course-based learning works well
86for you, we recommend you sign up.
88The Urbit developer community congregates around [the urbit-dev mailing
89list](https://groups.google.com/a/urbit.org/forum/#!forum/dev), the
90`~bitbet-bolbel/urbit-community` group on Landscape, and [Urbit’s GitHub
91repository](https://github.com/urbit/urbit). It’s a good idea to sign up, see
92what people are talking about, and introduce yourself.
94Once you’re comfortable working with Urbit, check out the [project’s issues on
95GitHub](https://github.com/urbit/urbit/issues) or some of our [contribution
96bounties](https://grants.urbit.org/).
98If you’re looking for some guidance, need help, or would prefer direct
99communication for your ideas, you can also always reach out to us directly at
100[support@urbit.org](mailto:support@urbit.org).
104From here, you'll probably want to learn more about:
106- How to set up a [development environment](/docs/development/environment)
107- Our [grants program](/docs/development/grants), where you can earn address
108 space for helping the project grow
109- The different [project
110 repositories](/docs/development/project-repositories), both official and
112- Our development [Precepts](/docs/development/precepts), which outline the
113 philosophies that drive Urbit development
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list