on master help sign in
Contributing, Install, Operations content
0a02409Matilde Park
content/contributing.md+81−26
@@ -3,53 +3,108 @@ title = "Contributing"
3template = "page_indiced.html"
3template = "page_indiced.html"
4+++
4+++
5
5
6−## How can I help? {#how-can-i-help}
6+## How can I contribute? {#how}
7+
8+The Urbit project is a global community of developers, users, and fans. If you’re interested in getting involved, there’s space for you; you don’t have to be a developer to be a part of the project.
9+
10+### Developer contributions
11+
12+If you *are* a developer, then you’ll want to get started either in core development or application development. For core developers, the Arvo operating system has contribution opportunities for operating system developers; programming language creators; and smart contracts experts, among others.
13+
14+If you have experience writing user-facing applications, you’ll most likely be interested in writing your peer-to-peer applications on Urbit.
15+
16+Either way, you should check out our [Developer Guide](@/develop.md).
17+
18+### Running stars and galaxies
19+
20+There are two ways to participate in the Arvo network: as a user running a planet and as an infrastructure provider running a galaxy or a star.
21+
22+For planets, Urbit is a peer-to-peer network where users can interact with each other via Landscape, or using custom applications that anyone can write.
23+
24+Running a planet helps build Urbit’s community, surfaces bugs, and helps core developers improve Urbit under realistic conditions.
25+
26+Stars and galaxies, however, have additional responsibilities and play a role in peer discovery as well as star and planet distribution. You can think of stars and galaxies as similar to the DNS system in the modern Internet. Most users don’t know it exists, but without it, the web wouldn’t work at all.
27+
28+Running a reliable galaxy or star, and spawning stars and planets from them, are excellent ways to help bootstrap the Urbit network.
29+
30+If you’re interested in running a galaxy or star, you’ll be reliably providing peer discovery for your children just by running your node – and we’re doing our best to make this both easy and profitable. If you’re interested in this, see [Operating Galaxies and Stars](#galaxies-and-stars) below.
31+
32+If you’re interested in distributing planets, read on.
33+
34+### Distribute points
35+
36+Want to get your friends and family into Urbit? Distribute planets using Bridge with a feature called **delegated sending**.
37+
38+Here’s how it works: any star can grant a number of invites to any of its child planets. Those planets can then send one-time-use invite codes via email to anyone of their choosing.
39+
40+For instructions on how to grant and send invites, check out [Using Bridge](@/operations.md#using-bridge).
7
41
8## Operating Galaxies and Stars {#galaxies-and-stars}
42## Operating Galaxies and Stars {#galaxies-and-stars}
9
43
10−XX from "Operating a Star" document
44+To boot your galaxy or star, follow our [installation instructions](@/install.md).
45+
46+### Hosting your star
47+
48+If you plan to distribute planets in any capacity, you must keep your star running. If you fail to do so, those planets will become orphans that are unable to communicate with the network.
49+
50+To make this as simple as possible, we’re building Terraform-based tooling for star and planet hosting via Google Cloud Platform. Once it’s ready we’ll open source the tooling so you can host stars and planets for yourself and others.
51+
52+In the meantime, there are existing instructions for those familiar with booting a Linux instance on GCP, AWS, Digital Ocean, etc.
53+
54+### Distributing planets
55+
56+You can distribute planets from your star via Bridge. As a reminder if you do distribute planets, please boot and run your star on the Arvo network, otherwise those planets won't be able to connect, which has a negative effect on the network as a whole, as orphan planets are left with very limited functionality.
57+
58+### Software updates
59+
60+By default, your star accepts software updates from its galaxy and routes them to its planets. You can use this mechanism to push custom software to your planets. Keep in mind that planets expect functional, non-breaking software updates, and generally want to be able to communicate with planets that are sponsored by other stars.
61+
62+#### Breaches
63+
64+To ensure new planets can connect to you, you're expected to participate in network-wide breaches, by updating to the latest Urbit version, deleting (or archiving) your pier, and then booting your ship. If you don’t participate, you will be left behind by the rest of the network and won’t be able to communicate with anyone who has updated to the new era.
65+
66+
67+### Star-owner etiquette
68+
69+If you distribute planets, boot and run your star on the Arvo network, or the planets won't be able to boot for the first time or connect.
70+
71+A star is networking infrastructure. For that reason, the machine running your star or galaxy must have sufficient bandwidth and processing power for your dependent planets.
72+
73+When messaging others, communicate using your star only when speaking in an official/infrastructural capacity. Otherwise, use your personal planet.
11
74
12−A _ship_ is an instance of the Arvo operating system that is used as a personal server on the Arvo network. Stars are a type of ship that act as infrastructure for the Arvo network. In the Arvo ship-hierarchy, stars are below galaxies and above planets.
13
75
14−Parallel to the Arvo network is Azimuth, the Urbit identity system that uses the Ethereum blockchain. All ships must boot with a corresponding _point_ -- an Azimuth identity -- to use the Arvo network.
76+### Taxes
15
77
16−Important star operations happen on both the Arvo side and the Azimuth side. On the Arvo side, these operations come in the form of Dojo commands. On the Azimuth side, operations happen by making changes to smart-contracts on the blockchain via a point.
78+Urbit address space has value, which means the distribution of address space has tax implications. You should speak with your tax advisor about these implications.
17
79
18−### Powers of a Star
19
80
20−Stars are above planets in the network hierarchy in the sense that each star sponsors some number of planets: stars discover peers for planets, route packets for planets, provide DNS routing for planets, and push software updates to planets. A star that fulfills this is called the **sponsor** of planets that receive such services from the star; those planets, in turn, are called **dependents** of that star.
81+### What to expect from Tlon
21
82
22−Stars are also the "parents" of planets. A new planet comes into existence only when spawned by a parent star. A parent planet is the sponsor of its children planets by default. This can change if a planet chooses to find a new sponsor (see the "Escaping a Sponsor" section below).
83+#### Contributor calls
23
84
24−Planets must have a sponsor star to use most features of the Arvo network. A planet cannot boot without a sponsor, and cannot make new connections to peers as long as it is not connected to a sponsor. Planets without a sponsor will still be able to message discovered peers until any such peers change their IP addresses.
85+We host regular contributor calls where you can discuss the technical matters of Urbit with Tlon engineers and community developers. We’d love for you to join; If you’re interested, please email support@urbit.org.
25
86
26−### Responsibilities
87+#### The urbit-dev mailing list
27
88
28−Like with real-life infrastructure, the operation of Arvo infrastructure comes with unique responsibilities. For reasons stated above, stars should be always be online on a reliable cloud service, such as Amazon Web Services or Google Cloud Platform. These systems have layers of redundancies that make them much more resilient than local machines, so stars hosted on the cloud are unlikely to leave their dependents in the dark.
89+Those interested in developing on Urbit are encouraged to add themselves to the urbit-dev mailing list:https://groups.google.com/a/urbit.org/forum/#!forum/dev.
29
90
30−### Operations
91+#### Support
31
92
32−Below are some handy operations for the use and maintenance of your star.
93+We are a small team, but we do our best to answer support related inquiries. Please email us at support@urbit.org with questions.
33
94
34−#### arvo.network DNS Records
95+#### Roadmap for further development
35
96
36−We have a system that lets users request a domain name for their star under `arvo.network`, in the form of `shipname.arvo.network`, where `shipname` is their ship's name, so that it can be accessed remotely via our Landscape web interface. To find out how to do this, take a look at the [DNS Proxying](../dns-proxying) documentation.
97+We periodically publish our ongoing development roadmap. You can find the latest here: [https://urbit.org/posts/2019-10-3-roadmap/].
37
98
38−#### Maintaining Connectivity
39
99
40−Occasionally, your star might lose network connectivity due to a known timer issue or by falling out of sync with the Ethereum blockchain. When this happens, there are a few things to try:
100+## Governance {#governance}
41
101
42−1. Enter the `|bonk` command in the Dojo to reset the timer and restore connectivity.
102+Our goal is to design Urbit simply, such that as many decisions as possible are made by the architecture of the system itself – that is, code should be law whenever possible. Code can’t anticipate every eventuality, however, and so the system design must include mechanisms that allow decisions to be made outside of the code.
43−2. Run `|start %eth-manage`, then `:eth-manage %look-ethnode` to ensure that your star is synced up to the latest block.
44
103
45−When in doubt, contact [support@urbit.org](mailto:support@urbit.org).
104+Within Urbit, this form of governance is conducted by two groups: the senate of galaxies, and the body of core developers. The senate of galaxies is empowered to make changes to the solidity contracts which define Azimuth, Urbit’s PKI, by majority vote. This process is defined by the contracts themselves. Galaxy holders who used bridge to generate hierarchical wallets use their voting proxy to place these votes; all others must use their master keys. The senate can also vote on other non-binding resolutions about any topic via the same process.
46
105
47−#### Escaping a Sponsor
106+The group of core developers manages Urbit’s [GitHub repository](https://github.com/urbit/), which controls Arvo, Urbit’s operating system. Changes and upgrades are decided upon by consensus.
48
107
49−Planets are, of course, able to change sponsors. To do this, they must request that a different star takes them on as a dependent and that star must accept the request. Planets cannot emancipate themselves from a sponsor without having a new sponsor lined up.
108+You can participate in the governance of the senate by acquiring a galaxy. If you would like to be involved with the governance of Arvo, check out our [developer guide](@/develop.md) to learn how you can contribute to core development.
50
109
51−All of these actions happen on Azimuth. There will be Bridge functionality to handle these actions in the future, but for now users will need to interact directly with the contracts with MetaMask, through services such as [Etherscan.io](https://etherscan.io/address/ecliptic.eth#writeContract). A sketch of the process is listed below; for now, only the Ethereum-savvy should act on these steps.
52
110
53−+ The planet calls the `escape` function in the Ecliptic contract and writes the resulting data to the blockchain.
54−+ If the chosen star wants to become the planet's sponsor, it calls the `adopt` function in the Ecliptic contract.
55−+ The Arvo network notices the change, and the operation is complete.
content/install.md+62−1
@@ -5,4 +5,65 @@ template = "page_indiced.html"
5
5
6## Getting an Urbit ID {#id}
6## Getting an Urbit ID {#id}
7
7
8+For an introduction to Urbit IDs and the address space more generally, see [Urbit ID](@/understanding-urbit/urbit-id.md) in [Understanding Urbit](@/understanding-urbit/_index.md).
9+
10+While Tlon does not currently sell or distribute Urbit IDs, there are still a few ways to get your own Urbit ID:
11+
12+- Getting an invitation from a friend
13+- Purchasing an Urbit ID from a third party, such as [urbit.live](https://urbit.live) or [OpenSea](https://opensea.io).
14+
15+Tlon occasionally selects candidates to distribute invitations, and users operating galaxies and stars can spawn and distribute a finite number of stars and planets, respectively.
16+
8−## Install Urbit {#urbit}
17+## Install Urbit {#urbit}
18+
19+The Urbit binary runs nicely on a Unix-like operating system – Ubuntu, Fedora, or macOS, for example. If you're using Windows, you'll need to get one of the aforementioned systems. But first, some terminology:
20+
21+- `vere` or `urbit`: the interpreter that runs when you run a command like `./urbit` in your command line
22+- `arvo`: the deterministic OS that lives in a directory whose name matches your Urbit ID, i.e. `~famreb-todmec` lives in `/famreb-todmec`
23+
24+We have different installation instructions for different platforms. To install and run Arvo, the Urbit operating system, and its binary, run the commands that are listed for your operating system.
25+
26+You can check your Arvo installation on any platform by running the `./urbit` command. Installation was successful if you get a block of output that begins with the line below:
27+
28+```
29+Urbit: a personal server operating function
30+```
31+
32+### macOS
33+
34+We provide static binaries for macOS. You can grab the latest stable release as follows:
35+
36+```sh
37+curl -O https://bootstrap.urbit.org/urbit-darwin-v0.8.2.tgz
38+tar xzf urbit-darwin-v0.8.2.tgz
39+./urbit
40+```
41+
42+### Linux (64-bit)
43+
44+We also provide static binaries for 64-bit Linux distributions (Ubuntu, Debian, Fedora, Arch, etc.). You can get the latest stable release similarly:
45+
46+```sh
47+curl -O https://bootstrap.urbit.org/urbit-linux64-v0.8.2.tgz
48+tar xzf urbit-linux64-v0.8.2.tgz
49+./urbit
50+```
51+
52+To access your Urbit via HTTP on port 80 on Ubuntu, you may need to run the following:
53+
54+```sh
55+sudo apt-get install libcap2-bin
56+sudo setcap 'cap_net_bind_service=+ep' /path/to/urbit
57+```
58+
59+### Compile from source
60+
61+If you want to compile from source, see the [instructions on GitHub](https://github.com/urbit/urbit#development).
62+
63+### About swap space
64+
65+If you're running Urbit in the cloud on a small instance, you may need to additionally configure swap space. If you're not, you can safely ignore this section.
66+
67+Urbit wants to map 2GB of memory when it boots up. It won’t necessarily use all this memory, it just wants to see it. On a normal modern PC or Mac, or on a large cloud virtual machine, this is not an issue. On some small cloud virtual machines (Amazon or Digital Ocean) the default memory configuration is smaller than this, and you need to manually configure a swapfile.
68+
69+Digital Ocean has a post on adding swap [here](https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04). For Amazon there’s a StackOverflow thread [here](https://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance).
content/operations.md+152−187
@@ -4,10 +4,69 @@ template = "page_indiced.html"
4slug = "/operations/"
4slug = "/operations/"
5+++
5+++
6
6
7−## Admin and Operations {#urbit-administration}
7+## Using Bridge {#using-bridge}
8
8
9+[Bridge](https://github.com/urbit/bridge) is the application we built for interacting with [Azimuth](https://azimuth.network), the Urbit PKI, and managing your Urbit ID. Importantly, Bridge also allows you to generate a keyfile that you will need to boot your ship so that it can use the Arvo network.
10+
11+This guide assumes that you have an Urbit ID, or that you have found someone to send an Urbit ID to your Ethereum address and are looking to claim it.
12+
13+### Online Bridge
14+
15+To connect to Bridge, go to [https://bridge.urbit.org](https://bridge.urbit.org) into your browser, and enter your identity's credentials in the appropriate fields. If you were invited to claim an Urbit ID, it's very likely that you received an email that would direct you to Bridge, and you can simply follow the hyperlink in that email.
16+
17+Once you arrive proceed through the steps presented. You'll eventually arrive at a page with a few choices: `Invite`, `Admin`, and `Boot Arvo`. `Admin` is the only option that you're interested in right now; click on it. On the `Admin` page, click the `Download Arvo Keyfile` button. Once you have downloaded the keyfile, you can exit Bridge and proceed to [install the Urbit binary](@/install.md).
18+
19+### Offline Bridge
20+
21+Alternatively, Bridge can be run locally. It's more complicated, but we recommend this option for managing sufficiently valuable assets, such as several stars or more. To install local Bridge, navigate to the [release page on GitHub](https://github.com/urbit/bridge/releases/). Download the `.zip` file of the latest version. After you download it, follow the instructions below.
22+
23+To use Bridge:
24+
25+- Unzip the .zip file that you downloaded (bridge-$version.zip).
26+- Open up your command line interface (Terminal on OSX, Command Prompt on Windows).
27+- Navigate to the bridge-$version directory, where $version is the appropriate version number.
28+- Run this command: `python3 -m http.server 5000 --bind 127.0.0.1.`
29+
30+You can then use the Bridge app by navigating to `http://localhost:5000` in your internet browser.
31+
32+Note: Bridge allows you to both make reads and writes to the Ethereum blockchain. Writing to the blockchain, such as changing your networking keys, will incur a transaction cost that will require you to have some ETH in your address.
33+
34+Once the program is running in your browser, go through the steps presented according to the type of wallet you have. You’ll be presented with a few login options. A notable option is Urbit Master Ticket. This is for those who used our Wallet Generator software. If you bought points from an Urbit sale and then used the Wallet Generator, your networking keys will be set for you. All other login options will require you to set your own networking keys.
35+
36+### Accept Your Transfer
37+
38+If you were given points by Tlon you likely already fully own them. But if someone else sent you a point, then you will first need to use Bridge to accept that transfer.
39+
40+After you access your Ethereum address, if a point was sent to that address, you'll come to a page that has an `Incoming Transfers` header, under which is a graphic. Click the `Details ->` link under that graphic.
41+
42+Now you'll be on the management page of your point. The transfer isn't completed yet, so click `Accept incoming transfer`. Then check both boxes and and click their associated `Sign Transaction` and `Send Transaction` buttons.
43+
44+If you already own a point, click on the `Details ->` under your sigil in the `Your Points` section.
45+
46+### Set Your Networking Keys
47+
48+If you just accepted a point, you'll be returned to your point screen. Notice that that links and buttons are now clickable. You now own this point!
49+
50+Click the link that says `Set network keys`. The field presented in the resulting page expects a 32-byte hexadecimal string. If it's filled already, no action is required. If it is empty, you will need to generate such a string. You can generate this data any way you please, but in the terminal on MacOS or Linux, you can write
51+
52+```sh
53+hexdump -n 32 -e '4/4 "%08X"' /dev/random
54+```
55+
56+and use the result.
57+
58+It should be noted that setting your network keys is an event on the Ethereum network and will therefore cost a trivial, but non-zero, amount of [gas](https://github.com/ethereum/wiki/wiki/Design-Rationale#gas-and-fees) to complete.
59+
60+### Generate Your Keyfile
61+
62+From the detail page associated with your point, click the `Generate Arvo Keyfile` link and you'll be taken to a page with a field titled `Network seed`. This field should already be filled in, and should match the hexadecimal string that you entered in the previous step. If it's not filled in or does not match, fill it in with the correct string.
63+Click `Generate ->`, which will download a keyfile onto your machine.
64+
65+With that keyfile in hand, you can now exit Bridge and continue to the guide to [install the Urbit binary](@/install.md).
66+
67+## Using Your Ship {#urbit-administration}
68+
9−Your urbit (also called your _ship_) is a persistent Unix process that you
69+Your urbit (also called your _ship_) is a persistent Unix process that you mainly control from the console.
10−mainly control from the console. For some things, a browser will also work.
11
70
12### Shutdown
71### Shutdown
13
72
@@ -19,63 +78,56 @@ You can force-quit your urbit with `Ctrl-z` from anywhere.
19
78
20To restart your urbit simply pass the name of your pier:
79To restart your urbit simply pass the name of your pier:
21
80
22−```
81+```sh
23−$ urbit some-planet
82+$ ./urbit some-planet
24```
83```
25
84
26or
85or
27
86
28−```
87+```sh
29−$ urbit comet
88+$ ./urbit comet
30```
89```
31
90
32### Logging
91### Logging
33
92
34To log an urbit's command line output to a file, use `script`:
93To log an urbit's command line output to a file, use `script`:
35
94
36−```
95+```sh
37−$ script urbit.log urbit your-urbit
96+$ script urbit.log ./urbit your-urbit
38```
97```
39
98
40### Moving your pier
99### Moving your pier
41
100
42Piers are designed to be portable, but it _must_ be done while the urbit
101Piers are designed to be portable, but it _must_ be done while the urbit
43−is turned off. Urbit networking is stateful, so you can't run two copies
102+is not running. Urbit networking is stateful, so you can't run two copies
44of the same urbit in two places.
103of the same urbit in two places.
45
104
46To move a pier, simply move the contents of the directory it lives in.
105To move a pier, simply move the contents of the directory it lives in.
47To keep these files as small as possible we usually use the `--sparse`
106To keep these files as small as possible we usually use the `--sparse`
48option in `tar`. With a pier `your-urbit/`, something like this should work:
107option in `tar`. With a pier `your-urbit/`, something like this should work:
49
108
50−```
109+```sh
51tar -Scvzf ~/your-urbit.tar.gz ~/your-urbit/
110tar -Scvzf ~/your-urbit.tar.gz ~/your-urbit/
52scp your-old-server:~/your-urbit.tar.gz your-new-server:~
111scp your-old-server:~/your-urbit.tar.gz your-new-server:~
53```
112```
54
113
55Then to unzip it, on your other Unix server, run:
114Then to unzip it, on your other Unix server, run:
56
115
57−```
116+```sh
58tar xfvz your-urbit.tar.gz
117tar xfvz your-urbit.tar.gz
59```
118```
60
119
61−Delete the tar file, and, after installing Urbit on your new server,
120+Delete the tar file, and, after installing Urbit on your new server, start your urbit back up with:
62−start your urbit back up with:
63
121
64−```
122+```sh
65−urbit your-urbit
123+./urbit your-urbit
66```
124```
67
125
68### Console
126### Console
69
127
70−Your Urbit terminal is separated into two parts: the prompt (the bottom
128+Your Urbit terminal is separated into two parts: the prompt (the bottom line) and the record (everything above that). The record is shared; all the output from all the apps in your command set appears in it. The prompt is multiplexed.
71−line) and the record (everything above that). The record is shared; all
72−the output from all the apps in your command set appears in it. The
73−prompt is multiplexed.
74
129
75−In the CLI, Urbit apps can process your input before you hit return. To
130+In the CLI, Urbit apps can process your input before you hit return. To see this in action try entering `)` as the first character at the Dojo prompt. Since there is no Dojo command or Hoon expression that starts with ')', the Dojo rejects it.
76−see this in action try entering `)` as the first character at the Dojo
77−prompt. Since there is no Dojo command or Hoon expression that starts
78−with ')', the Dojo rejects it.
79
131
80`Ctrl-x` - Switches the prompt between running console apps
132`Ctrl-x` - Switches the prompt between running console apps
81
133
@@ -94,10 +146,10 @@ The following emacs-style key bindings are available:
94Ctrl-a Cursor to beginning of the line (Home)
146Ctrl-a Cursor to beginning of the line (Home)
95Ctrl-b Cursor one character backward (left-arrow)
147Ctrl-b Cursor one character backward (left-arrow)
96Ctrl-e Cursor to the end of the line (End)
148Ctrl-e Cursor to the end of the line (End)
97−Ctrl-f Cursor one character forward (right-arrow)
149+Ctrl-f Cursor one character forward (right-arrow)
98Ctrl-g Beep; cancel reverse-search
150Ctrl-g Beep; cancel reverse-search
99Ctrl-k Kill to end of line
151Ctrl-k Kill to end of line
100−Ctrl-l Clear the screen
152+Ctrl-l Clear the screen
101Ctrl-n Next line in history (down-arrow)
153Ctrl-n Next line in history (down-arrow)
102Ctrl-p Previous line in history (up-arrow)
154Ctrl-p Previous line in history (up-arrow)
103Ctrl-r Reverse-search
155Ctrl-r Reverse-search
@@ -106,26 +158,15 @@ Ctrl-u Kill to beginning of line
106Ctrl-y Yank from kill buffer
158Ctrl-y Yank from kill buffer
107```
159```
108
160
109−### Web
161+### Landscape
110
162
111−On startup Urbit tries to bind to `localhost:80`. If you're already
112−running something on port `80` -- such as any other HTTP server, or another urbit -- you'll find the urbit
163+On startup Urbit tries to bind to `localhost:80`. If you're already running something on port `80` -- such as any other HTTP server, or another urbit -- you'll find the urbit that you just started on `8080`, `8081`, and so on. For planets only, we also proxy web domains through Urbit's own servers. Any planet `~your-urbit` is also at `your-urbit.arvo.network`, but only after you [set up DNS](#dns-proxying).
113−that you just started on `8080`, `8081`, and so on. For planets only, we also proxy web
114−domains through Urbit's own servers. Any planet `~your-urbit` is also at
115−`your-urbit.arvo.network`, but only after you [set up DNS](../dns-proxying).
116
164
117−Your urbit serves a simple homepage from `http://localhost` or
165+Once running, you can sign into Landscape, your ship’s web interface, from `http://localhost` or `https://your-urbit.arvo.network`. Since our HTTPS isn't audited / battle tested, we just call it "secure" HTTPS. You can find that on `8443`. Or `8444` (and so on) if you're already running something on `8443`.
118−`https://your-urbit.arvo.network` that should be self-explanatory. Since
119−our HTTPS isn't audited / battle tested, we just call it "secure" HTTPS.
120−You can find that on `8443`. Or `8444` (and so on) if you're already
121−running something on `8443`.
122
166
123### Moons {#moons}
167### Moons {#moons}
124
168
125−Planets can spawn moons, which are meant for connected devices: phones, smart
169+Planets can spawn moons, which are meant for connected devices: phones, smart TVs, digital thermostats. The basic idea is that your planet runs permanently in a data center somewhere, while moons run on all your devices. Each planet can issue ~4 billion (`2^32`) moons.
126−TVs, digital thermostats. The basic idea is: your planet runs permanently in a
127−data center somewhere and moons run on all your devices. Each planet can issue
128−~4 billion (`2^32`) moons.
129
170
130To generate a random moon from your planet, run:
171To generate a random moon from your planet, run:
131
172
@@ -138,8 +179,7 @@ moon: ~faswep-navred-sampel-palnet
138\/ \/
179\/ \/
139```
180```
140
181
141−You must manually edit the output of `+moon` to get
182+You must manually edit the output of `+moon` to get the correct format for the `<key>`:
142−the correct format for the `<key>`:
143
183
144- strip out the `\/`
184- strip out the `\/`
145
185
@@ -159,20 +199,18 @@ Another way of generating `<keyfile>` is:
159moon: ~faswep-navred-sampel-palnet
199moon: ~faswep-navred-sampel-palnet
160```
200```
161
201
162−`<keyfile>` will be at `path/to/sampel-palnet/.urb/put/moon.key`
202+`<keyfile>` will be at `path/to/sampel-palnet/.urb/put/moon.key` and does not need editing to be used with the `-k` option.
163−and does not need editing to be used with the `-k` option.
164
203
165−You can use the resulting output in the same installation flow from the
166−[Booting a Ship](@/install.md) guide, following the same scheme as for booting a planet. That scheme is:
204+You can use the resulting output in the same installation flow from the [Installing Urbit](@/install.md) guide, following the same scheme as for booting a planet. That scheme is:
167
205
168−```
206+```sh
169−$ urbit -w <moonname> -G <key> -c <piername>
207+$ ./urbit -w <moonname> -G <key> -c <piername>
170```
208```
171
209
172or
210or
173
211
174−```
212+```sh
175−$ urbit -w <moonname> -k <keyfile> -c <piername>
213+$ ./urbit -w <moonname> -k <keyfile> -c <piername>
176```
214```
177
215
178The `-c <piername>` argument is not required, but it is recommended; otherwise,
216The `-c <piername>` argument is not required, but it is recommended; otherwise,
@@ -180,37 +218,28 @@ the resulting directory is a rather unwieldy moon name.
180
218
181Here's how an example moon might be booted:
219Here's how an example moon might be booted:
182
220
183−```
221+```sh
184−$ urbit -w faswep-navred-sampel-palnet -G <key> -c mymoon
222+$ ./urbit -w faswep-navred-sampel-palnet -G <key> -c mymoon
185```
223```
186
224
187or
225or
188
226
189−```
227+```sh
190−$ urbit -w faswep-navred-sampel-palnet -k <keyfile> -c mymoon
228+$ ./urbit -w faswep-navred-sampel-palnet -k <keyfile> -c mymoon
191```
229```
192
230
193−Moons are automatically synced to their parent `%kids` desk, and can control
231+Moons are automatically synced to their parent `%kids` desk, and can control applications on their parent planet using `|link`.
194−applications on their parent planet using `|link`.
195
232
196### Continuity breaches
233### Continuity breaches
197
234
198−While the Urbit network is in this alpha state, we sometimes have to
199−reboot the whole network. This happens either when major changes need
235+While the Urbit network is in this alpha state, we sometimes have to reboot the whole network. This happens either when major changes need to be shipped or we hit a bug that can't be fixed over the air.
200−to be shipped or we hit a bug that can't be fixed over the air.
201
236
202−Because Urbit networking is stateful we call this a _continuity breach_.
237+Because Urbit networking is stateful we call this a _continuity breach_. Everything has to be restarted from scratch. Your pier will continue to function after we have breached, but it won’t connect to the rest of the Urbit network.
203−Everything has to be restarted from scratch. Your pier will continue to
204−function after we have breached, but it wont connect to the rest of the
205−Urbit network.
206−
207−When this happens, back up any files you'd like to save, shut down your
208−urbit and recreate it (as if you were starting for the first time).
209
238
239+When this happens, back up any files you'd like to save, shut down your urbit, and recreate it (as if you were starting for the first time).
210
240
211## Creating a Comet {#creating-a-comet}
241## Creating a Comet {#creating-a-comet}
212
242
213−
214**Comets** are urbits whose names are 128-bits or 16 syllables, such as:
243**Comets** are urbits whose names are 128-bits or 16 syllables, such as:
215
244
216`~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`
245`~dasres-ragnep-lislyt-ribpyl--mosnyx-bisdem-nidful-marzod`
@@ -221,8 +250,8 @@ Comet names aren't quite as memorable as others, but they're disposable identiti
221
250
222To boot your comet, go into the command line and run the following command from the directory that was created during Urbit installation:
251To boot your comet, go into the command line and run the following command from the directory that was created during Urbit installation:
223
252
224−```
253+```sh
225−$ urbit -c mycomet
254+$ ./urbit -c mycomet
226```
255```
227
256
228This will take a few minutes and will spin out a bunch of boot messages. Toward the end, you'll see something like:
257This will take a few minutes and will spin out a bunch of boot messages. Toward the end, you'll see something like:
@@ -235,7 +264,6 @@ http: live (insecure, loopback) on 12321
235~dasres_marzod:dojo>
264~dasres_marzod:dojo>
236```
265```
237
266
238−
239## DNS Proxying {#dns-proxying}
267## DNS Proxying {#dns-proxying}
240
268
241We have a system that lets you request a domain name for your ship in the form of `ship.arvo.network`, where `ship` is your ship's name minus the `~`. This allows users to access their ships remotely using Landscape, our graphical web interface.
269We have a system that lets you request a domain name for your ship in the form of `ship.arvo.network`, where `ship` is your ship's name minus the `~`. This allows users to access their ships remotely using Landscape, our graphical web interface.
@@ -246,7 +274,8 @@ Stars and planets follow the same process DNS proxying process, and galaxies hav
246
274
247For a planet or star's DNS proxying request to be made and fulfilled, they must be hosting their ship someplace with a public IP address, and its HTTP server must be listening on port 80.
275For a planet or star's DNS proxying request to be made and fulfilled, they must be hosting their ship someplace with a public IP address, and its HTTP server must be listening on port 80.
248
276
249−To get `ship.arvo.network` on a planet or star, you must set up DNS routing with its parent ship by starting the `:dns` app.
277+To get `ship.arvo.network` on a planet or star, you must set up DNS routing with its parent ship by starting the `:dns` app.
278+
250To do so, simply run this command in your ship's Dojo:
279To do so, simply run this command in your ship's Dojo:
251
280
252```
281```
@@ -261,9 +290,9 @@ You'll then be prompted to enter the public IP address of your ship. You can als
261
290
262`:dns`, running locally, will make an HTTP request to that IP address on port 80 to confirm that it is itself available at that IP and port. If that fails, you'll receive a `%bail-early` message in `:talk`; this request will retry a few times. If the self-check is successful, the request is relayed to `~zod`, and you'll receive a message saying, `request for DNS sent to ~zod`. Once `~zod` has acknowledged receipt of the request, your local `:dns` app will send a `:talk` message saying `awaiting response from ~zod`.
291`:dns`, running locally, will make an HTTP request to that IP address on port 80 to confirm that it is itself available at that IP and port. If that fails, you'll receive a `%bail-early` message in `:talk`; this request will retry a few times. If the self-check is successful, the request is relayed to `~zod`, and you'll receive a message saying, `request for DNS sent to ~zod`. Once `~zod` has acknowledged receipt of the request, your local `:dns` app will send a `:talk` message saying `awaiting response from ~zod`.
263
292
264−The request will be picked up shortly, and the `ship.arvo.network` DNS record will be set to the given IP address. Once that's setup, `~zod` will be notified, and `~zod` will, in turn, notify your ship. That ship will now try to verify that it can reach itself on `ship.arvo.network` over port 80. If it can't, it'll send a message saying `unable to access via ship.arvo.network`. If it can, it will configure itself with that domain, and say `confirmed access via ship.arvo.network`.
293+The request will be picked up shortly, and the `ship.arvo.network` DNS record will be set to the given IP address. Once that's set up, `~zod` will be notified and `~zod` will, in turn, notify your ship. That ship will now try to verify that it can reach itself on `ship.arvo.network` over port 80. If it can't, it'll send a message saying, `unable to access via ship.arvo.network`. If it can, it will configure itself with that domain and say `confirmed access via ship.arvo.network`.
265
294
266−Great! You're set up now. Try accessing your `ship.arvo.network` in your browser to use Landscape; we recommend using Chrome or Brave.
295+Great! You're set up now. Try accessing your `ship.arvo.network` in your browser to use Landscape; we recommend Chrome or Brave.
267
296
268### Galaxies
297### Galaxies
269
298
@@ -283,44 +312,23 @@ Otherwise, `:dns|auto` works the same as `:dns|ip` does with stars and planets:
283
312
284Configuring a ship's domain causes the `:acme` app to request an HTTPS certificate for that domain from LetsEncrypt. Note that LetsEncrypt also requires that the HTTP server be listening on port 80. If the certificate request fails, `:acme` will send a `:talk` message with an explanation. Once the certificate is successfully retrieved, `:acme` will install it, causing the HTTP servers to restart. A secure server will be started on port 443 (the HTTPS default) if it's available. Otherwise, it will try 8443, and then increment to the next port until it can successfully bind one.
313Configuring a ship's domain causes the `:acme` app to request an HTTPS certificate for that domain from LetsEncrypt. Note that LetsEncrypt also requires that the HTTP server be listening on port 80. If the certificate request fails, `:acme` will send a `:talk` message with an explanation. Once the certificate is successfully retrieved, `:acme` will install it, causing the HTTP servers to restart. A secure server will be started on port 443 (the HTTPS default) if it's available. Otherwise, it will try 8443, and then increment to the next port until it can successfully bind one.
285
314
286−The built-in logic for listening on port 80 similar. Urbit tries to bind port 80; if it cannot, it tries 8080, then increments until it can bind a port. Port 80 is available to unprivileged process on recent version of macOS. Otherwise, the process needs to either be run as root, or be given special permission (CAP\_NET_BIND on Linux).
315+The built-in logic for listening on port 80 is similar. Urbit tries to bind port 80; if it cannot, it tries 8080, then increments until it can bind a port. Port 80 is available to unprivileged process on recent version of macOS. Otherwise, the process needs to either be run as root, or be given special permission (CAP\_NET_BIND on Linux).
287−
288
316
289## Messaging {#messaging}
317## Messaging {#messaging}
290
318
291−Talk is the built-in frontend for the Urbit messaging and notifications
319+Let’s get started using the :talk application from the command line.
292−protocol, Hall. Today we use Hall to chat and coordinate, but it's really
293−a general purpose piece of infrastructure.
294−
295−For the time being come join us in `~dopzod/urbit-help` by using the
296−'quickstart' section below. `~dopzod` is the host ship, and `/urbit-help` is the
297−channel on that ship.
298−
299−Today, Hall is sort of like a distributed, encrypted Slack that can be
300−used from the CLI and the browser. There’s no central Hall server.
301−Any urbit can host one.
302−
303−Hall is a general purpose tool for both aggregating and publishing
304−streams of messages. Applications can use Hall as their transport
305−protocol, API connectors can push disparate data sources into Hall,
306−and so on. There are lots of things a distributed message protocol can
307−be used for that we haven't even thought of.
308−
309−Here we'll be discussing how to operate the default CLI frontend, Talk,
310−to send and receive messages. For a more in-depth look at Hall's internals,
311−take a look at its [documentation](@/docs/arvo/hall.md).
312
320
313### Quickstart
321### Quickstart
314
322
315−The most common uses of Talk right now are communicating over a public chat channel called `~dopzod/urbit-help` and sending direct messages. Everyone is more than welcome in `~dopzod/urbit-help`. It's the place to get help, ask questions and chat about Urbit in general.
323+The most common uses of :talk right now are communicating over a public chat channel on `~dopzod/urbit-help`, and sending direct messages. Everyone is more than welcome in `~dopzod/urbit-help`. It's the place to get help, ask questions and chat about Urbit in general.
316
324
317−There are two ways of using Talk: from the terminal running the Urbit process, or through the Landscape web UI available at `http://localhost/~~/landscape`.
325+There are two ways of using :talk: from the terminal running the Urbit process, or through the Landscape web UI available from your ship’s URL address.
318
326
319If you're using Landscape for the first time, you'll need to enter a code to gain access. You can obtain this code by running `+code` from the Dojo.
327If you're using Landscape for the first time, you'll need to enter a code to gain access. You can obtain this code by running `+code` from the Dojo.
320
328
321### Joining a channel
329### Joining a channel
322
330
323−In Hall, a medium for a message is called a _circle_. There are four types of circles, but we for now we'll be dealing with the _channel_: a publicly accessible chatroom for general use. We'll discuss the other three kinds in the [manual](#manual) section.
331+Hall is the Arvo vane on the back-end that manages :talk. In Hall, a medium for a message is called a _circle_. There are four types of circles, but for now we'll be dealing with the _channel_: a publicly accessible chatroom for general use. We'll discuss the other three kinds in the [manual](#messaging-manual) section later on.
324
332
325Let's join the `~dopzod/urbit-help` channel. Use `ctrl-x` to switch from Dojo to Talk.
333Let's join the `~dopzod/urbit-help` channel. Use `ctrl-x` to switch from Dojo to Talk.
326
334
@@ -330,8 +338,7 @@ Then:
330~your-urbit:talk> ;join ~dopzod/urbit-help
338~your-urbit:talk> ;join ~dopzod/urbit-help
331```
339```
332
340
333−Scrolling down your terminal window, you'll probably see the playback of
341+Scrolling down your terminal window, you'll probably see a playback of previous `~dopzod/urbit-help` messages that you missed.
334−previous `~dopzod/urbit-help` messages that you missed.
335
342
336Post a line to `~dopzod/urbit-help:`
343Post a line to `~dopzod/urbit-help:`
337
344
@@ -345,18 +352,6 @@ You'll see your message printed below messages from others that came before it:
345~your-urbit= Hello, world!
352~your-urbit= Hello, world!
346```
353```
347
354
348−### Subscribing to a channel in Landscape
349−
350−In Landscape, you can always navigate to a channel by opening the menu, or using the shortcut `cmd-k`, then typing `go ~host-urbit/channel-name`. However, if you want to see messages in your inbox, you'll need to join from the Talk terminal.
351−
352−Again, that's:
353−
354−```
355−;join ~dopzod/urbit-help
356−```
357−
358−Now, navigate to `localhost/~~/landscape`. You should see recent messages under the "Recent" tab, and if you navigate to the "All" tab, you should see your subscription to `~dopzod/urbit-help` under "Chats".
359−
360### Direct Messaging
355### Direct Messaging
361
356
362To send a direct message to someone, first set your audience:
357To send a direct message to someone, first set your audience:
@@ -404,9 +399,6 @@ Use `;leave` to unsubscribe from a channel:
404~your-urbit:talk= ;leave ~dopzod/urbit-help
399~your-urbit:talk= ;leave ~dopzod/urbit-help
405```
400```
406
401
407−The web UI ships as compiled JavaScript on your urbit, but has its own
408−source repo [here](https://github.com/urbit/talk).
409−
410Last, let's create a channel we can invite some friends to:
402Last, let's create a channel we can invite some friends to:
411
403
412```
404```
@@ -417,30 +409,21 @@ Now you can tell your friends to `;join ~your-urbit/my-channel`.
417
409
418---
410---
419
411
420−### Manual
412+### Messaging manual {#messaging-manual}
421
413
422−Hall's design is similar in spirit to
423−[NNTP](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol),
414+Hall, the back-end Arvo vane that provides the messaging for :talk, has a design that is similar in spirit to [NNTP](https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol), the underlying protocol for Usenet.
424−the underlying protocol for Usenet.
425
415
426−Our design is pretty simple: Hall messages are called _posts_. Posts
427−go to _circles_. Any urbit can host or subscribe to any number of circles.
416+The design is pretty simple: Hall messages are called _posts_. Posts go to _circles_. Any urbit can host or subscribe to any number of circles.
428
417
429−There are four kinds of circles: a write-only `%mailbox` for direct
430−messages, an invite-only `%village` for private conversation, a read-only
418+There are four kinds of circles: a write-only `%mailbox` for direct messages, an invite-only %village` for private conversation, a read-only `%journal` for curated content, and a public-access `%channel` for general use.
431−`%journal` for curated content, and a public-access `%channel` for
432−general use.
433
419
434#### Posts
420#### Posts
435
421
436−A post can be a variety of different data structures. Let's look at the
422+A post can be a variety of different data structures. Let's look at the ones you can use from within Talk: lines, URLs, Hoon, and replies.
437−ones you can use from within Talk: lines, URLs, Hoon and replies.
438
423
439#### Lines
424#### Lines
440
425
441−A line is simply a string of text. Depending on the filtering rules set
442−by the circle's host, these may or may not include uppercase and Unicode
426+A line is simply a string of text. Depending on the filtering rules set by the circle's host, these may or may not include uppercase and Unicode characters (see [filter](#filter)).
443−characters (see [filter](#filter)).
444
427
445If the line starts with `@`, it's an action (like `/me` in IRC).
428If the line starts with `@`, it's an action (like `/me` in IRC).
446
429
@@ -464,8 +447,7 @@ A URL is any valid URL.
464
447
465#### Hoon
448#### Hoon
466
449
467−You can use Talk to evaluate Hoon code and share the result with everyone in a
450+You can use Talk to evaluate Hoon code and share the results with everyone in a Hall circle. To do so, preface your Hoon with `#`.
468−Hall circle. To do so, preface your Hoon with `#`.
469
451
470```
452```
471~your-urbit:talk= #(add 2 2)
453~your-urbit:talk= #(add 2 2)
@@ -495,8 +477,7 @@ will print as
495
477
496#### Activating Lines
478#### Activating Lines
497
479
498−A line number identifying the **subsequent** line is displayed every 5
480+A line number identifying the **subsequent** line is displayed every 5 lines.
499−lines.
500
481
501```
482```
502---------[0]
483---------[0]
@@ -528,19 +509,14 @@ in reply to: ~your-urbit:
528That's my message!
509That's my message!
529```
510```
530
511
531−If information got truncated — like what happens for long URLs or expressions,
512+If information got truncated – like what happens for long URLs or expressions,
532−or if there's additional information available — as is the case with
533−replies and attachments (e.g. stack traces) — activating the message will show
513+or if there's additional information available – as is the case with replies and attachments (e.g. stack traces) – activating the message will show you all the details.
534−you all the details.
535
514
536−You can also activate the most recent line with `;`, the second-most recent
515+You can also activate the most recent line with `;`, the second-most recent with `;;`, and so on.
537−with `;;`, and so on.
538
516
539### Creating and managing circles
517### Creating and managing circles
540
518
541−As mentioned before, any urbit can host any number of circles. Existing circles
519+As mentioned before, any urbit can host any number of circles. Existing circles can be deleted or modified with various commands. All commands in this section should be sent from the `talk>` prompt.
542−can be deleted or modified with various commands. All commands in this section
543−shoild be sent from the `talk>` prompt.
544
520
545#### Create
521#### Create
546
522
@@ -625,9 +601,7 @@ And we get the output:
625
601
626Syntax: `;invite %name ~someone`
602Syntax: `;invite %name ~someone`
627
603
628−Invites someone into your circle `%name`. If they were previously banished,
604+Invites someone into your circle `%name`. If they were previously banished, removes them from the blacklist. Can also invite multiple ships at once, `~comma, ~separated`.
629−removes them from the blacklist.
630−Can also invite multiple ships at once, `~comma, ~separated`.
631
605
632For example:
606For example:
633
607
@@ -639,16 +613,13 @@ For example:
639
613
640Syntax: `;banish %name ~someone`
614Syntax: `;banish %name ~someone`
641
615
642−Removes someone from your circle `%name`. If they were previously invited,
616+Removes someone from your circle `%name`. If they were previously invited, removes them from the whitelist. Can also banish multiple ships at once, `~comma, ~separated`.
643−removes them from the whitelist.
644−Can also banish multiple ships at once, `~comma, ~separated`.
645
617
646#### Source
618#### Source
647
619
648Syntax: `;source %name ~other/circle`
620Syntax: `;source %name ~other/circle`
649
621
650−Adds `~other/circle` as a source for circle `%name`. This causes all
622+Adds `~other/circle` as a source for circle `%name`. This causes all messages sent to `~other/circle` to also appear in `%name`.
651−messages sent to `~other/circle` to also appear in `%name`.
652
623
653For example:
624For example:
654
625
@@ -670,27 +641,23 @@ For example:
670
641
671#### Circle Membership
642#### Circle Membership
672
643
673−If you have joined a circle, you can make this information publicly
644+If you have joined a circle, you can make this information publicly available to help others find that circle as well.
674−available to help others find that circle as well.
675
645
676#### Show Membership
646#### Show Membership
677
647
678Syntax: `;show ~some/circle`
648Syntax: `;show ~some/circle`
679
649
680−Adds a circle to your public membership list on your Hall profile. Hall profiles
650+Adds a circle to your public membership list on your Hall profile. Hall profiles are not used yet.
681−are not used yet.
682
651
683#### Hide Membership
652#### Hide Membership
684
653
685Syntax: `;hide ~some/circle`
654Syntax: `;hide ~some/circle`
686
655
687−Removes a circle from your public membership list on your Hall profile. Hall
656+Removes a circle from your public membership list on your Hall profile. Hall profiles are not used yet.
688−profiles are not used yet.
689
657
690### Status
658### Status
691
659
692−You'll see status notifications when people enter or leave circles you're
660+You'll see status notifications when people enter or leave circles you're subscribed to.
693−subscribed to.
694
661
695#### Notifications Off
662#### Notifications Off
696
663
@@ -859,7 +826,7 @@ Set audience to another ship.
859
826
860Syntax: `;%circle`
827Syntax: `;%circle`
861
828
862−Set audience to a circle on your own ship
829+Set audience to a circle on your own ship.
863
830
864#### Set Audience + Send Message
831#### Set Audience + Send Message
865
832
@@ -919,8 +886,8 @@ Syntax: `;unset nicks`
919
886
920Show ship-names instead of nicknames.
887Show ship-names instead of nicknames.
921
888
922−Nicknames and handles longer than 14 character will be truncated in
889+Nicknames and handles longer than 14 characters will be truncated in
923−output. Nicknames are strictly local - like the names on entries in a
890+output. Nicknames are strictly local – like the names on entries in a
924phonebook.
891phonebook.
925
892
926### Miscellaneous configuration
893### Miscellaneous configuration
@@ -941,7 +908,7 @@ Stop showing the timestamp for each message.
941
908
942Syntax: `;set timezone [+/-][hours]`
909Syntax: `;set timezone [+/-][hours]`
943
910
944−Adjust the display of the timestamps to a specific timezone. Relative to UTC.
911+Adjust the display of timestamps to a specific timezone. Relative to UTC.
945
912
946#### Sound Notification On
913#### Sound Notification On
947
914
@@ -971,7 +938,6 @@ good place to quickly experiment with Urbit. On the surface the Dojo is just a
971Hoon REPL. On the inside, the Dojo is a system for operating on and transforming
938Hoon REPL. On the inside, the Dojo is a system for operating on and transforming
972data in Urbit.
939data in Urbit.
973
940
974−
975### Quickstart
941### Quickstart
976
942
977You can use the Dojo to run arbitrary Hoon code, as well as non-Hoon system
943You can use the Dojo to run arbitrary Hoon code, as well as non-Hoon system
@@ -995,7 +961,7 @@ Tall-form Hoon may require multiple lines:
995```
961```
996
962
997Hoon uses something called [the subject](@/docs/hoon/hoon-tutorial/the-subject-and-its-legs.md).
963Hoon uses something called [the subject](@/docs/hoon/hoon-tutorial/the-subject-and-its-legs.md).
998−The Dojo has its own subject, and that's where Hoon's equivalent of variables,
964+The Dojo has its own subject and that's where Hoon's equivalent of variables,
999called faces, are stored.
965called faces, are stored.
1000
966
1001Use `=var` to save faces to the Dojo subject.
967Use `=var` to save faces to the Dojo subject.
@@ -1016,7 +982,7 @@ Use `=dir` to set the current working directory:
1016```
982```
1017
983
1018(`%` represents your current directory. For a complete explanation on urbit
984(`%` represents your current directory. For a complete explanation on urbit
1019−paths, see the [filesystem section](@/operations.md))
985+paths, see the [filesystem section](#filesystem).)
1020
986
1021Generators (files in `/gen`) are run with `+`:
987Generators (files in `/gen`) are run with `+`:
1022
988
@@ -1061,7 +1027,7 @@ arguments.
1061
1027
1062#### `+curl`
1028#### `+curl`
1063
1029
1064−Retrives data from a URL. Accepts a `tape`. Similar to Unix `curl`.
1030+Retrieves data from a URL. Accepts a `tape`. Similar to Unix `curl`.
1065
1031
1066```
1032```
1067~your-urbit:dojo> +curl "http://nyt.com"
1033~your-urbit:dojo> +curl "http://nyt.com"
@@ -1173,14 +1139,14 @@ number of vane names.
1173
1139
1174---
1140---
1175
1141
1176−### Manual
1142+### Dojo manual
1177
1143
1178#### Sources and sinks
1144#### Sources and sinks
1179
1145
1180A Dojo command is either a **source** or a **sink**. A source is just something
1146A Dojo command is either a **source** or a **sink**. A source is just something
1181that can be printed to your console or the result of some computation. A
1147that can be printed to your console or the result of some computation. A
1182sink is an **effect**: a change to the filesystem, a network message, a
1148sink is an **effect**: a change to the filesystem, a network message, a
1183−change to your environment, or typed message to an app.
1149+change to your environment, or a typed message to an app.
1184
1150
1185Sources can be chained together, but we can only produce one effect per
1151Sources can be chained together, but we can only produce one effect per
1186command.
1152command.
@@ -1250,7 +1216,7 @@ Which outputs a new `urbit.pill` to `pier/.urb/put/urbit.pill`
1250
1216
1251#### `&` - Mark conversion
1217#### `&` - Mark conversion
1252
1218
1253−Convert between marks using `&`, with the destination mark first. You can stack multiple mark conversions together, and some marks can only be converted to specific other marks. In this example, [Udon](@/docs/arvo/sail-and-udon.md#udon) is converted to `&hymn` (a mark which supplies the `html`, `head`, `body` and closing tags) first, before being converted to HTML:
1219+Convert between marks using `&`, with the destination mark first. You can stack multiple mark conversions together, and some marks can only be converted to specific other marks. In this example, [Udon](@/docs/arvo/sail-and-udon.md#udon) is converted to `&hymn` (a mark which supplies the `html`, `head`, `body`, and closing tags) first, before being converted to HTML:
1254
1220
1255```
1221```
1256~your-urbit:dojo>&html &hymn &udon ';h1#hello: hello'
1222~your-urbit:dojo>&html &hymn &udon ';h1#hello: hello'
@@ -1409,8 +1375,7 @@ Urbit has its own revision-controlled filesystem, Clay. Clay is a typed, global,
1409referentially transparent namespace. An easy way to think about it is like typed
1375referentially transparent namespace. An easy way to think about it is like typed
1410`git`.
1376`git`.
1411
1377
1412−The most common way to use Clay is to mount a Clay node in a Unix directory. The mounted directory is always at the root of your
1378+The most common way to use Clay is to mount a Clay node in a Unix directory. The mounted directory is always at the root of your pier directory.
1413−pier directory.
1414
1379
1415### Quickstart
1380### Quickstart
1416
1381
@@ -1426,7 +1391,7 @@ desk based on the `%home` desk:
1426```
1391```
1427
1392
1428Running `our` produces your ship-name, meaning that you can run the following
1393Running `our` produces your ship-name, meaning that you can run the following
1429−command instead of typing out the entire thing. Useful for comets, due to their
1394+command instead of typing out the entire thing. Useful for comets due to their
1430very long names.
1395very long names.
1431
1396
1432```
1397```
@@ -1507,7 +1472,7 @@ both connected as peers:
1507
1472
1508---
1473---
1509
1474
1510−### Manual
1475+### Clay manual
1511
1476
1512#### Paths
1477#### Paths
1513
1478
@@ -1613,7 +1578,7 @@ access a file called
1613```
1578```
1614
1579
1615Because both paths share a directory named `/gmail` at the same position in the
1580Because both paths share a directory named `/gmail` at the same position in the
1616−address hierarchy -- which, if you recall, is just a `list` -- the above command
1581+address hierarchy – which, if you recall, is just a `list` – the above command
1617works!
1582works!
1618
1583
1619We can do the same thing between desks. If `%sandbox` has been merged with
1584We can do the same thing between desks. If `%sandbox` has been merged with
@@ -1738,8 +1703,8 @@ Merge the `%examples` desk from `~waxbex-ribmex`
1738```
1703```
1739
1704
1740Subscribe to continuous updates from remote `plot` on local `desk`.
1705Subscribe to continuous updates from remote `plot` on local `desk`.
1741−`plot-desk` can specify the remote `desk` name. When omitted it is
1706+`plot-desk` can specify the remote `desk` name. When omitted it defaults
1742−defaulted to being the same as `desk`. Non-comet urbits have
1707+to being the same as `desk`. Non-comet urbits have
1743`|sync %home ~parent %kids` automatically set up (where `~parent` is the
1708`|sync %home ~parent %kids` automatically set up (where `~parent` is the
1744planet that issued a moon, the star that issued a planet, or the galaxy
1709planet that issued a moon, the star that issued a planet, or the galaxy
1745that issued a star).
1710that issued a star).
@@ -1783,12 +1748,12 @@ Example:
1783
1748
1784### Merge strategies
1749### Merge strategies
1785
1750
1786−`%init` - Used if it's the first commit to a desk. Also can be used to
1751+`%init` - used if it's the first commit to a desk. Also can be used to
1787−"reinitialize" a desk -- revision numbers keep going up, but the new
1752+"reinitialize" a desk – revision numbers keep going up, but the new
1788revision isn't necessarily a descendent of the previously numbered
1753revision isn't necessarily a descendent of the previously numbered
1789version, allowing merges to be rerun.
1754version, allowing merges to be rerun.
1790
1755
1791−`%this` - Keep what's in Bob's desk, but join the ancestry.
1756+`%this` - keep what's in Bob's desk, but join the ancestry.
1792
1757
1793`%that` - take what's in Alice's desk, but join the ancestry. This is
1758`%that` - take what's in Alice's desk, but join the ancestry. This is
1794the reverse of `%this`. This is different from `%init` because the new
1759the reverse of `%this`. This is different from `%init` because the new
@@ -1808,8 +1773,8 @@ Bob's changed files.
1808
1773
1809A `%mate` merge attempts to merge changes to the same file when both
1774A `%mate` merge attempts to merge changes to the same file when both
1810Alice and Bob change it. If the merge is clean, we use it; otherwise, we
1775Alice and Bob change it. If the merge is clean, we use it; otherwise, we
1811−fail. A merge between different types of changes -- for example,
1776+fail. A merge between different types of changes – for example,
1812−deleting a file vs changing it -- is always a conflict. If we succeed,
1777+deleting a file vs changing it – is always a conflict. If we succeed,
1813the parents are both Alice's and Bob's heads, and the data is the merge
1778the parents are both Alice's and Bob's heads, and the data is the merge
1814base plus Alice's changed files plus Bob's changed files plus the merged
1779base plus Alice's changed files plus Bob's changed files plus the merged
1815files.
1780files.
@@ -1854,8 +1819,8 @@ Produces a list of names at the `path`.
1854
1819
1855Syntax: `|rm path`
1820Syntax: `|rm path`
1856
1821
1857−Remove the data at `path`. `path` must be a path to actual node, not a
1822+Remove the data at `path`. `Path` must be a path to the actual node, not a
1858−'directory'
1823+'directory'.
1859
1824
1860#### `|cp`
1825#### `|cp`
1861
1826
@@ -1870,4 +1835,4 @@ Syntax: `|mv to from`
1870Move the file at `from` into the path `to`.
1835Move the file at `from` into the path `to`.
1871
1836
1872In Clay, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
1837In Clay, `|mv` is just a shorthand for `|cp` then `|rm`. The `|rm`
1873−doesn't happen unless the `|cp` succeeds.
1838+doesn't happen unless the `|cp` succeeds.
templates/index.html+2−1
@@ -205,7 +205,7 @@ content: " ↗";
205 <li class="mt2"><a href="/contributing">How can I contribute?</a></li>
205 <li class="mt2"><a href="/contributing">How can I contribute?</a></li>
206 <li class="mt2"><a href="/operations">Using Bridge and Ships</a></li>
206 <li class="mt2"><a href="/operations">Using Bridge and Ships</a></li>
207 <li class="mt2"><a href="/contributing#galaxies-and-stars">Operating Galaxies and Stars</a></li>
207 <li class="mt2"><a href="/contributing#galaxies-and-stars">Operating Galaxies and Stars</a></li>
208− <li class="mt2"><a href="/bounties">Security Bounties</a></li>
208+ <li class="mt2"><a href="/contributing#governance">Governance</a></li>
209 </nav>
209 </nav>
210 <nav class="c5-7-md c5-7-lg half-1 mt4">
210 <nav class="c5-7-md c5-7-lg half-1 mt4">
211 <h3>Learn More</h3>
211 <h3>Learn More</h3>
@@ -220,6 +220,7 @@ content: " ↗";
220 <li class="mt2"><a href="/develop#core">Core Development</a></li>
220 <li class="mt2"><a href="/develop#core">Core Development</a></li>
221 <li class="mt2"><a href="/develop#application">Application Development</a></li>
221 <li class="mt2"><a href="/develop#application">Application Development</a></li>
222 <li class="mt2"><a href="https://grants.urbit.org">Grants</a></li>
222 <li class="mt2"><a href="https://grants.urbit.org">Grants</a></li>
223+ <li class="mt2"><a href="/bounties">Security Bounties</a></li>
223 </nav>
224 </nav>
224 <nav class="c9-11-md c9-11-lg half-1 mt4">
225 <nav class="c9-11-md c9-11-lg half-1 mt4">
225 <h3>Community</h3>
226 <h3>Community</h3>