on master help sign in
merge master, introduction, mv files into learn/arvo, switch up getting-started, et.c
393f1ffMorgan Sutherland
getting-started.udon+380−4
@@ -1,10 +1,386 @@
1:- :~ navhome/'/docs/'
1:- :~ navhome/'/docs/'
2+ next/'true'
2− sort/'2'
3+ sort/'1'
3− title/'Using'
4+ title/'Getting Started'
4 ==
5 ==
5;>
6;>
6
7
7# Getting Started
8# Getting Started
8
9
9−These short guides will get you installed, setup, and will walk you through the
10+This guide is broken into five parts:
10−basic features of Urbit.
11+
12++ [Acquiring an Urbit Identity](#acquire)
13++ [Using Bridge](#bridge)
14++ [Installing Arvo](#arvo)
15++ [Booting Your Ship](#boot)
16++ [Basic Operations](#operation)
17+
18+_If you just want to install the Urbit OS, Arvo, and don't need to be on the
19+Urbit network, you can skip to [Installing Arvo](#arvo)._
20+
21+;=
22+ ;h2
23+ ;div(id "acquire"): Acquiring an Urbit Identity
24+ ==
25+==
26+
27+Urbit's identity layer, called Azimuth, is a suite of contracts on the Ethereum
28+blockchain. An Azimuth address, called a *point*, functions as an identity and
29+a network address for Arvo, the Urbit OS. An instance of Arvo is called a
30+*ship*. A ship can't use the Arvo network until it's combined with a point.
31+
32+Throughout this guide, we'll refer to \"Urbit identities\" and \"points\"
33+interchangeably.
34+
35+Points are generally not freely available, so you will need to either
36+purchase one or get one from a friend. This guide assumes you have found a way
37+to acquire a point.
38+
39+If you went through the address registration process and used [Wallet Generator](https://github.com/urbit/urbit-wallet-generator),
40+then you should have have received a .zip file that contains an Ethereum address
41+and cryptographic secrets in the form of a PDF.
42+
43+Your ownership PDF contains two secrets that must be kept safe.
44+
45+- *Master Ticket*: This is a master key that allows you to manage every aspect of
46+ your address.
47+
48+- *Ownership Seed BIP39 Mnemonic*: The master ticket encoded as a BIP39 mnemonic
49+ for compatibility with most Ethereum wallet software, including our own *Bridge*
50+ client.
51+
52+;=
53+ ;h2
54+ ;div(id "bridge"): Using Bridge
55+ ==
56+==
57+
58+Bridge is client that we built for accessing and managing your Urbit identities.
59+Like Wallet Generator, Bridge is a web application that can also be run in offline mode.
60+It can be run in Firefox on all platforms, and also in Chrome if you're using
61+a Mac.
62+
63+Importantly, Bridge also allows you to generate a keyfile that
64+you will need to boot your ship on the Arvo network for the first time. Once a ship
65+with a keyfile, you can restart it later without the keyfile.
66+
67+*Note* Bridge allows you to make _writes_ to the blockchain, but we ask you to confirm
68+anything that will incur a transaction cost. If you plan to do anything heavy-duty, make
69+sure your Ethereum address has some pocket ETH.
70+
71+Download bridge [here](https://github.com/urbit/bridge/releases) and follow
72+the instructions below.
73+
74+#### Step 1: Welcome
75+
76+Click `Open a Wallet`.
77+
78+#### Step 2: Select a Network
79+
80+On the dropdown menu, make sure that `Main Network` is selected. Then click
81+`Continue ->`.
82+
83+#### Step 3: Open a Wallet
84+
85+On this dropdown menu, choose how you'd like to access your Ethereum wallet.
86+If you aren't using a hardware wallet (we support Ledger and Trezor), you'll
87+want to use your Ethereum wallet's BIP39 Mnemonic.
88+
89+If you used Wallet Generator to generate an HD wallet, you have a few choices:
90+you can choose `Urbit Master Ticket,` which is high-value, but allows you unfettered
91+permissions to update your point. The mnemonic associated with your management
92+seed is also useful to perform everyday operations (such as boot your ship!).
93+
94+Select the appropriate option and click `Continue ->`.
95+
96+#### Step 4: (optional) Accept Your Transfer
97+
98+If you were sent a point by a friend, then you should see a graphic under
99+`Incoming Transfers`. Click the `Details ->` link under that graphic.
100+
101+Now you'll be on the management page of your point. The transfer isn't completed
102+yet, so click `Accept incoming transfer`. Then check both boxes and and click
103+their associated `Sign Transaction` and `Send Transaction` buttons.
104+
105+If you already own a point, then click on the `Details ->` under your sigil in the
106+`Your Points` section.
107+
108+#### Step 5: (optional) Set Your Networking Keys
109+
110+If you just accepted a point, you'll be returned to your point screen. Notice that
111+that links and buttons are now clickable. You now own this point!
112+
113+Click the link that says `Generate Urbit networking keys`. Bridge will let you either
114+download a keyfile derived from your networking keys are you can paste in your own
115+network seed and derive a new keyfile. See our
116+[HD Wallet Spec](https://github.com/urbit/proposals/blob/master/proposals/8.md)
117+for more information.
118+
119+#### Step 6: Generate Your Keyfile
120+
121+From the detail page associated with your point, click the `Generate Urbit Keyfile`
122+button and you'll be taken to a page with a field titled `Network key`. If you went
123+through the address registration process, this should be filled in already.
124+Click `Generate ->`, which will download a keyfile onto your machine.
125+
126+With that keyfile in hand, you can now exit Bridge.
127+
128+;=
129+ ;h2
130+ ;div(id "arvo"): Installing Arvo
131+ ==
132+==
133+
134+Now you're ready to run Arvo. You're almost there!
135+
136+But first, some terminology:
137+- `vere` or `urbit`: the interpreter that runs when you run a command like `urbit` or `/bin/urbit` in your command line
138+- `arvo`: the deterministic OS that lives in a directory whose name matches your Azimuth point, ie `~famreb-todmec` lives in `/famreb-todmec`
139+
140+Arvo runs nicely on a Unix-like operating system -- Ubuntu,
141+Fedora, macOS, and FreeBSD. If you're using Windows, you'll need
142+to get one of the aforementioned systems. Don't worry: most of them are free.
143+
144+We have different installation instructions for different platforms. To install
145+and run Arvo, run the commands that are listed for your operating system.
146+
147+On any platform, you can check your Arvo installation by running the `urbit`
148+command. Installation was successful if you get a block of output that begins
149+with the line below:
150+
151+```
152+Urbit: a personal server operating function
153+```
154+
155+#### MacOS
156+
157+We recommend using the Homebrew package manager to run Arvo on MacOS.
158+
159+```
160+# Bash
161+
162+brew update
163+brew install autoconf automake cmake gcc git gmp libsigsegv libtool meson ninja pkg-config python2 openssl re2c
164+git clone https://github.com/urbit/urbit
165+cd urbit
166+./scripts/bootstrap
167+./scripts/build
168+sudo ninja -C ./build/ meson-install
169+urbit
170+```
171+
172+#### Ubuntu or Debian
173+
174+```
175+# Bash
176+
177+sudo apt-get update
178+sudo apt-get install autoconf automake cmake exuberant-ctags g++ git libcurl4-gnutls-dev libgmp3-dev libncurses5-dev libsigsegv-dev libssl-dev libtool make openssl pkg-config python python3 python3-pip ragel re2c zlib1g-dev
179+sudo -H pip3 install --upgrade pip
180+sudo -H pip3 install meson==0.29
181+
182+# we need ninja 1.5.1
183+# 'apt-get install ninja-build' gives us 0.1.3
184+# 'apt-get install ninja-build' gives us 1.3.4
185+#
186+git clone git://github.com/ninja-build/ninja.git
187+pushd ninja
188+ git checkout release
189+ ./configure.py --bootstrap
190+ sudo cp ./ninja /usr/local/bin
191+popd
192+
193+
194+git clone https://github.com/urbit/urbit
195+cd urbit
196+./scripts/bootstrap
197+./scripts/build
198+sudo ninja -C ./build/ install
199+urbit
200+```
201+
202+#### Fedora
203+
204+```
205+# Bash
206+
207+sudo yum upgrade
208+sudo yum install autoconf automake cmake ctags gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel libtool ncurses-devel ninja-build openssl openssl-devel pkgconfig python2 python3 ragel re2c wget
209+
210+# meson requires python 3.5; RHEL supplies wrong version
211+pushd /usr/src
212+ sudo wget https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz
213+ sudo tar xzf Python-3.5.5.tgz
214+ cd Python-3.5.5
215+ sudo ./configure --enable--optimizations
216+ sudo make altinstall
217+ which python3.5
218+ cd /usr/local/bin
219+ sudo ln -s python3.5 python3
220+ hash python3
221+popd
222+
223+curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
224+sudo /usr/local/bin/python3 get-pip.py
225+# downgrade meson to avoid dependencies that redhat can't meet
226+sudo -H /usr/local/bin/pip3 install meson==0.29
227+
228+
229+git clone git://github.com/ninja-build/ninja.git && cd ninja
230+git checkout release
231+./configure.py --boostrap
232+sudo cp ./ninja /usr/local/bin
233+
234+git clone https://github.com/urbit/urbit
235+cd urbit
236+./scripts/bootstrap
237+./scripts/build
238+sudo /usr/local/bin/ninja -C ./build/ install
239+urbit
240+```
241+
242+#### Arch Linux
243+
244+```
245+# Bash
246+
247+sudo pacman -Syu
248+sudo pacman -S autoconf automake cmake curl gcc git gmp libsigsegv libtool ncurses ninja openssl python ragel re2c
249+curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
250+sudo python3 get-pip.py
251+git clone https://github.com/urbit/urbit
252+cd urbit
253+./scripts/bootstrap
254+./scripts/build
255+sudo ninja -C ./build/ meson-install
256+urbit
257+```
258+
259+If you just want to use a fake ship for development purposes, you can now use
260+the command of the scheme below to boot a fake `~zod`.
261+
262+```
263+urbit -F zod -A /path/to/arvo -s -c zod
264+```
265+
266+If you want to get on the Arvo network with your point, then continue to the
267+next section.
268+
269+
270+;=
271+ ;h2
272+ ;div(id "boot"): Booting Your Ship
273+ ==
274+==
275+
276+
277+Now the rubber meets the road. You'll be booting your ship with the keyfile
278+that you downloaded from Bridge.
279+
280+#### Step 1: Find Your Point's Name
281+
282+This will look something like `~lodleb-ritrul`. You can see the name of your
283+point(s) when you log into your wallet using the Bridge client.
284+
285+;img@"http://media.urbit.org/site/bridge-0.png"(width "100%");
286+
287+#### Step 2: Find the path to your keyfile
288+
289+Find the absolute path to the keyfile that you downloaded from Bridge. Copy it.
290+
291+#### Step 3: Run the boot command
292+
293+Type `cd` in your terminal to return to your home directory. If you want to
294+store your ship somewhere besides your home directory, change the terminal's
295+working directory to the desired directory.
296+
297+Run the command below, except with `~sample-planet` replaced by the name of your
298+Urbit identity, and `path/to/my-planet.key` replaced with the path to your
299+keyfile:
300+
301+```
302+urbit -w ~sample-planet -k path/to/my-planet.key
303+```
304+
305+if you'd prefer to copy your key in you can run
306+
307+```
308+urbit -w ~sample-planet -G rAnDoMkEy
309+```
310+
311+
312+This will create a directory called `sample-planet/` and begin building your
313+ship. It may take a few minutes.
314+
315+When your ship is finished booting, you will see the `~sample-planet:dojo>`
316+prompt. At that point, you should permanently erase your keyfile from your
317+machine.
318+
319+;=
320+ ;h2
321+ ;div(id "operation"): Basic Operations
322+ ==
323+==
324+
325+Welcome to your urbit! There's a few things you should do to become oriented.
326+
327+#### Dojo
328+
329+Let's try out the Dojo, the Arvo command line and Hoon REPL:
330+
331+```
332+~sample-planet:dojo> (add 2 2)
333+```
334+
335+Should produce:
336+
337+```
338+> (add 2 2)
339+4
340+```
341+
342+Good.
343+
344+#### Mounting
345+
346+Clay, the Arvo filesystem, isn't mounted to Unix by default. Switch to the Dojo
347+prompt and run:
348+
349+```
350+~sample-planet:dojo> |mount %
351+```
352+
353+This should produce:
354+```
355+> |mount %
356+>=
357+```
358+
359+which indicates that the command was processed.
360+
361+`|mount %` will cause a `home/` directory to appear inside your _pier_ folder in
362+Unix (the "pier" is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files are automatically synced into your ship.
363+
364+
365+#### Talk
366+
367+Use `ctrl-x` to toggle between the Dojo and the Talk prompts.
368+
369+While on the Talk prompt, let's join the main Urbit support chat channel, `/urbit-help`:
370+
371+```
372+~sample-planet:talk[] ;join /urbit-help
373+```
374+
375+Talk is stateful, so your ship will download a backlog. `/urbit-help` is the
376+place to ask questions about getting up and running.
377+
378+#### Shutting Down and Restarting
379+
380+You can turn your ship off with `ctrl-d` from the Talk or Dojo prompts.
381+
382+To restart your ship, simply pass the name of your pier:
383+
384+```
385+$ urbit some-planet
386+```
getting-started/azimuth/managing.udondeleted−6
@@ -1,6 +0,0 @@
1−;>
2−
3−
4−# doy
5−
6−stuff
getting-started/azimuth/using-bridge.udondeleted−6
@@ -1,6 +0,0 @@
1−;>
2−
3−
4−# doy
5−
6−stuff
getting-started/installation.udondeleted−386
@@ -1,386 +0,0 @@
1−:- :~ title/'Installation'
2− preview/'Want to get Urbit running? Look here.'
3− sort/'1'
4− ==
5−;>
6−
7−# Installation
8−
9−This guide is broken into five parts:
10−
11−+ [Acquiring an Urbit Identity](#acquire)
12−+ [Using Bridge](#bridge)
13−+ [Installing Arvo](#arvo)
14−+ [Booting Your Ship](#boot)
15−+ [Basic Operations](#operation)
16−
17−_If you just want to install the Urbit OS, Arvo, and don't need to be on the
18−Urbit network, you can skip to [Installing Arvo](#arvo)._
19−
20−;=
21− ;h2
22− ;div(id "acquire"): Acquiring an Urbit Identity
23− ==
24−==
25−
26−Urbit's identity layer, called Azimuth, is a suite of contracts on the Ethereum
27−blockchain. An Azimuth address, called a *point*, functions as an identity and
28−a network address for Arvo, the Urbit OS. An instance of Arvo is called a
29−*ship*. A ship can't use the Arvo network until it's combined with a point.
30−
31−Throughout this guide, we'll refer to \"Urbit identities\" and \"points\"
32−interchangeably.
33−
34−Points are generally not freely available, so you will need to either
35−purchase one or get one from a friend. This guide assumes you have found a way
36−to acquire a point.
37−
38−If you went through the address registration process and used [Wallet Generator](https://github.com/urbit/urbit-wallet-generator),
39−then you should have have received a .zip file that contains an Ethereum address
40−and cryptographic secrets in the form of a PDF.
41−
42−Your ownership PDF contains two secrets that must be kept safe.
43−
44−- *Master Ticket*: This is a master key that allows you to manage every aspect of
45− your address.
46−
47−- *Ownership Seed BIP39 Mnemonic*: The master ticket encoded as a BIP39 mnemonic
48− for compatibility with most Ethereum wallet software, including our own *Bridge*
49− client.
50−
51−;=
52− ;h2
53− ;div(id "bridge"): Using Bridge
54− ==
55−==
56−
57−Bridge is client that we built for accessing and managing your Urbit identities.
58−Like Wallet Generator, Bridge is a web application that can also be run in offline mode.
59−It can be run in Firefox on all platforms, and also in Chrome if you're using
60−a Mac.
61−
62−Importantly, Bridge also allows you to generate a keyfile that
63−you will need to boot your ship on the Arvo network for the first time. Once a ship
64−with a keyfile, you can restart it later without the keyfile.
65−
66−*Note* Bridge allows you to make _writes_ to the blockchain, but we ask you to confirm
67−anything that will incur a transaction cost. If you plan to do anything heavy-duty, make
68−sure your Ethereum address has some pocket ETH.
69−
70−Download bridge [here](https://github.com/urbit/bridge/releases) and follow
71−the instructions below.
72−
73−#### Step 1: Welcome
74−
75−Click `Open a Wallet`.
76−
77−#### Step 2: Select a Network
78−
79−On the dropdown menu, make sure that `Main Network` is selected. Then click
80−`Continue ->`.
81−
82−#### Step 3: Open a Wallet
83−
84−On this dropdown menu, choose how you'd like to access your Ethereum wallet.
85−If you aren't using a hardware wallet (we support Ledger and Trezor), you'll
86−want to use your Ethereum wallet's BIP39 Mnemonic.
87−
88−If you used Wallet Generator to generate an HD wallet, you have a few choices:
89−you can choose `Urbit Master Ticket,` which is high-value, but allows you unfettered
90−permissions to update your point. The mnemonic associated with your management
91−seed is also useful to perform everyday operations (such as boot your ship!).
92−
93−Select the appropriate option and click `Continue ->`.
94−
95−#### Step 4: (optional) Accept Your Transfer
96−
97−If you were sent a point by a friend, then you should see a graphic under
98−`Incoming Transfers`. Click the `Details ->` link under that graphic.
99−
100−Now you'll be on the management page of your point. The transfer isn't completed
101−yet, so click `Accept incoming transfer`. Then check both boxes and and click
102−their associated `Sign Transaction` and `Send Transaction` buttons.
103−
104−If you already own a point, then click on the `Details ->` under your sigil in the
105−`Your Points` section.
106−
107−#### Step 5: (optional) Set Your Networking Keys
108−
109−If you just accepted a point, you'll be returned to your point screen. Notice that
110−that links and buttons are now clickable. You now own this point!
111−
112−Click the link that says `Generate Urbit networking keys`. Bridge will let you either
113−download a keyfile derived from your networking keys are you can paste in your own
114−network seed and derive a new keyfile. See our
115−[HD Wallet Spec](https://github.com/urbit/proposals/blob/master/proposals/8.md)
116−for more information.
117−
118−#### Step 6: Generate Your Keyfile
119−
120−From the detail page associated with your point, click the `Generate Urbit Keyfile`
121−button and you'll be taken to a page with a field titled `Network key`. If you went
122−through the address registration process, this should be filled in already.
123−Click `Generate ->`, which will download a keyfile onto your machine.
124−
125−With that keyfile in hand, you can now exit Bridge.
126−
127−;=
128− ;h2
129− ;div(id "arvo"): Installing Arvo
130− ==
131−==
132−
133−Now you're ready to run Arvo. You're almost there!
134−
135−But first, some terminology:
136−- `vere` or `urbit`: the interpreter that runs when you run a command like `urbit` or `/bin/urbit` in your command line
137−- `arvo`: the deterministic OS that lives in a directory whose name matches your Azimuth point, ie `~famreb-todmec` lives in `/famreb-todmec`
138−
139−Arvo runs nicely on a Unix-like operating system -- Ubuntu,
140−Fedora, macOS, and FreeBSD. If you're using Windows, you'll need
141−to get one of the aforementioned systems. Don't worry: most of them are free.
142−
143−We have different installation instructions for different platforms. To install
144−and run Arvo, run the commands that are listed for your operating system.
145−
146−On any platform, you can check your Arvo installation by running the `urbit`
147−command. Installation was successful if you get a block of output that begins
148−with the line below:
149−
150−```
151−Urbit: a personal server operating function
152−```
153−
154−#### MacOS
155−
156−We recommend using the Homebrew package manager to run Arvo on MacOS.
157−
158−```
159−#Bash
160−
161−brew update
162−brew install autoconf automake cmake gcc git gmp libsigsegv libtool meson ninja pkg-config python2 openssl re2c
163−git clone https://github.com/urbit/urbit
164−cd urbit
165−./scripts/bootstrap
166−./scripts/build
167−sudo ninja -C ./build/ meson-install
168−urbit
169−```
170−
171−#### Ubuntu or Debian
172−
173−```
174−# Bash
175−
176−sudo apt-get update
177−sudo apt-get install autoconf automake cmake exuberant-ctags g++ git libcurl4-gnutls-dev libgmp3-dev libncurses5-dev libsigsegv-dev libssl-dev libtool make openssl pkg-config python python3 python3-pip ragel re2c zlib1g-dev
178−sudo -H pip3 install --upgrade pip
179−sudo -H pip3 install meson==0.29
180−
181−# we need ninja 1.5.1
182−# 'apt-get install ninja-build' gives us 0.1.3
183−# 'apt-get install ninja-build' gives us 1.3.4
184−#
185−git clone git://github.com/ninja-build/ninja.git
186−pushd ninja
187− git checkout release
188− ./configure.py --bootstrap
189− sudo cp ./ninja /usr/local/bin
190−popd
191−
192−
193−git clone https://github.com/urbit/urbit
194−cd urbit
195−./scripts/bootstrap
196−./scripts/build
197−sudo ninja -C ./build/ install
198−urbit
199−```
200−
201−#### Fedora
202−
203−```
204−# Bash
205−
206−sudo yum upgrade
207−sudo yum install autoconf automake cmake ctags gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel libtool ncurses-devel ninja-build openssl openssl-devel pkgconfig python2 python3 ragel re2c wget
208−
209−# meson requires python 3.5; RHEL supplies wrong version
210−pushd /usr/src
211− sudo wget https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz
212− sudo tar xzf Python-3.5.5.tgz
213− cd Python-3.5.5
214− sudo ./configure --enable--optimizations
215− sudo make altinstall
216− which python3.5
217− cd /usr/local/bin
218− sudo ln -s python3.5 python3
219− hash python3
220−popd
221−
222−curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
223−sudo /usr/local/bin/python3 get-pip.py
224−# downgrade meson to avoid dependencies that redhat can't meet
225−sudo -H /usr/local/bin/pip3 install meson==0.29
226−
227−
228−git clone git://github.com/ninja-build/ninja.git && cd ninja
229−git checkout release
230−./configure.py --boostrap
231−sudo cp ./ninja /usr/local/bin
232−
233−git clone https://github.com/urbit/urbit
234−cd urbit
235−./scripts/bootstrap
236−./scripts/build
237−sudo /usr/local/bin/ninja -C ./build/ install
238−urbit
239−```
240−
241−#### Arch Linux
242−
243−```
244−# Bash
245−
246−sudo pacman -Syu
247−sudo pacman -S autoconf automake cmake curl gcc git gmp libsigsegv libtool ncurses ninja openssl python ragel re2c
248−curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
249−sudo python3 get-pip.py
250−git clone https://github.com/urbit/urbit
251−cd urbit
252−./scripts/bootstrap
253−./scripts/build
254−sudo ninja -C ./build/ meson-install
255−urbit
256−```
257−
258−If you just want to use a fake ship for development purposes, you can now use
259−the command of the scheme below to boot a fake `~zod`.
260−
261−```
262−urbit -F zod -A /path/to/arvo -s -c zod
263−```
264−
265−If you want to get on the Arvo network with your point, then continue to the
266−next section.
267−
268−
269−;=
270− ;h2
271− ;div(id "boot"): Booting Your Ship
272− ==
273−==
274−
275−
276−Now the rubber meets the road. You'll be booting your ship with the keyfile
277−that you downloaded from Bridge.
278−
279−#### Step 1: Find Your Point's Name
280−
281−This will look something like `~lodleb-ritrul`. You can see the name of your
282−point(s) when you log into your wallet using the Bridge client.
283−
284−;img@"http://media.urbit.org/site/bridge-0.png"(width "100%");
285−
286−#### Step 2: Find the path to your keyfile
287−
288−Find the absolute path to the keyfile that you downloaded from Bridge. Copy it.
289−
290−#### Step 3: Run the boot command
291−
292−Type `cd` in your terminal to return to your home directory. If you want to
293−store your ship somewhere besides your home directory, change the terminal's
294−working directory to the desired directory.
295−
296−Run the command below, except with `~sample-planet` replaced by the name of your
297−Urbit identity, and `path/to/my-planet.key` replaced with the path to your
298−keyfile:
299−
300−```
301−urbit -w ~sample-planet -k path/to/my-planet.key
302−```
303−
304−if you'd prefer to copy your key in you can run
305−
306−```
307−urbit -w ~sample-planet -G rAnDoMkEy
308−```
309−
310−
311−This will create a directory called `sample-planet/` and begin building your
312−ship. It may take a few minutes.
313−
314−When your ship is finished booting, you will see the `~sample-planet:dojo>`
315−prompt. At that point, you should permanently erase your keyfile from your
316−machine.
317−
318−;=
319− ;h2
320− ;div(id "operation"): Basic Operations
321− ==
322−==
323−
324−Welcome to your urbit! There's a few things you should do to become oriented.
325−
326−#### Dojo
327−
328−Let's try out the Dojo, the Arvo command line and Hoon REPL:
329−
330−```
331−~sample-planet:dojo> (add 2 2)
332−```
333−
334−Should produce:
335−
336−```
337−> (add 2 2)
338−4
339−```
340−
341−Good.
342−
343−#### Mounting
344−
345−Clay, the Arvo filesystem, isn't mounted to Unix by default. Switch to the Dojo
346−prompt and run:
347−
348−```
349−~sample-planet:dojo> |mount %
350−```
351−
352−This should produce:
353−```
354−> |mount %
355−>=
356−```
357−
358−which indicates that the command was processed.
359−
360−`|mount %` will cause a `home/` directory to appear inside your _pier_ folder in
361−Unix (the "pier" is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files are automatically synced into your ship.
362−
363−
364−#### Talk
365−
366−Use `ctrl-x` to toggle between the Dojo and the Talk prompts.
367−
368−While on the Talk prompt, let's join the main Urbit support chat channel, `/urbit-help`:
369−
370−```
371−~sample-planet:talk[] ;join /urbit-help
372−```
373−
374−Talk is stateful, so your ship will download a backlog. `/urbit-help` is the
375−place to ask questions about getting up and running.
376−
377−#### Shutting Down and Restarting
378−
379−You can turn your ship off with `ctrl-d` from the Talk or Dojo prompts.
380−
381−To restart your ship, simply pass the name of your pier:
382−
383−```
384−$ urbit some-planet
385−```
386−
introduction.udon+5
@@ -36,5 +36,10 @@ If you're interested in contributing to the Urbit project, building applications
36
36
37If you're a developer looking for Arvo reference documentation, this section is for you.
37If you're a developer looking for Arvo reference documentation, this section is for you.
38
38
39+<<<<<<< Updated upstream
39- Confused about all the new words? Check out the [Glossary](/docs/reference/glossary).
40- Confused about all the new words? Check out the [Glossary](/docs/reference/glossary).
40- Don't miss the helpful Hoon rune [Cheat Sheet](/docs/reference/cheat-sheet).
41- Don't miss the helpful Hoon rune [Cheat Sheet](/docs/reference/cheat-sheet).
42+=======
43+- Confused about all the new words? Check out the [Glossary](docs/reference/glossary).
44+- Don't miss the helpful Hoon rune [Cheat Sheet](docs/reference/cheat-sheet).
45+>>>>>>> Stashed changes
learn/arvo.udon+5−144
@@ -1,147 +1,8 @@
1−:- :~ navhome/'/docs/'
2− next/'true'
3− sort/'80'
4− title/'Arvo Internals'
1+:- :~ title/'Arvo'
2+ sort/'1'
5− ==
3+ ==
6;>
4;>
7
5
8−# Arvo internals
6+# Arvo
9
7
10−> Note: The last major revision of these sections was in 2016. They need to be rewritten: they're outdated in some respects, and also not always as clear as they could be. A rewrite is planned. There is still plenty of good information to be found, but don't bet the farm on anything you read here.
8+[PLACEHOLDER]
11−
12−Arvo is composed of modules called vanes:
13−
14−;list;
15−
16−At a high level `%arvo` takes a mess of Unix I/O events and turns them
17−into something clean and structured for the programmer.
18−
19−`%arvo` is designed to avoid the usual state of complex event networks:
20−event spaghetti. We keep track of every event's cause so that we have a
21−clear causal chain for every computation. At the bottom of every chain
22−is a Unix I/O event, such as a network request, terminal input, file
23−sync, or timer event. We push every step in the path the request takes
24−onto the chain until we get to the terminal cause of the computation.
25−Then we use this causal stack to route results back to the caller.
26−
27−## Ducts
28−
29−The `%arvo` causal stack is called a `++duct`. This is represented
30−simply as a list of paths, where each path represents a step in the
31−causal chain. The first element in the path is the first letter of
32−whichever vane handled that step in the computation, or the empty span
33−for Unix.
34−
35−Here's a duct that was recently observed in the wild:
36−
37−```
38−~[
39− /g/a/~zod/4_shell_terminal/u/time
40− /g/a/~zod/shell_terminal/u/child/4/main
41− /g/a/~zod/terminal/u/txt
42− /d/term-mess
43− //term/1
44−]
45−```
46−
47−This is the duct the timer vane receives when "timer" sample app asks
48−the timer vane to set a timer. This is also the duct over which the
49−response is produced at the specified time. Unix sent a terminal
50−keystroke event (enter), and Arvo routed it to `%dill` (our terminal),
51−which passed it on to the `%gall` app terminal, which sent it to shell,
52−its child, which created a new child (with process id 4), which on
53−startup asked the timer vane to set a timer.
54−
55−The timer vane saves this duct, so that when the specified time arrives
56−and Unix sends a wakeup event to the timer vane, it can produce the
57−response on the same duct. This response is routed to the place we
58−popped off the top of the duct, i.e. the time app. This app produces the
59−text "ding", which falls down to the shell, which drops it through to
60−the terminal. Terminal drops this down to dill, which converts it into
61−an effect that Unix will recognize as a request to print "ding" to the
62−screen. When dill produces this, the last path in the duct has an
63−initial element of the empty span, so this is routed to Unix, which
64−applies the effects.
65−
66−This is a call stack, with a crucial feature: the stack is a first-class
67−citizen. You can respond over a duct zero, one, or many times. You can
68−save ducts for later use. There are definitely parallels to Scheme-style
69−continuations, but simpler and with more structure.
70−
71−## Making Moves
72−
73−If ducts are a call stack, then how do we make calls and produce
74−results? Arvo processes "moves" which are a combination of message data
75−and metadata. There are two types of moves. A `%pass` move is analogous
76−to a call:
77−
78−```
79−[duct %pass return-path=path vane-name=@tD data=card]
80−```
81−
82−Arvo pushes the return path (preceded by the first letter of the vane
83−name) onto the duct and sends the given data, a card, to the vane we
84−specified. Any response will come along the same duct with the path
85−`return-path`.
86−
87−A `%give` move is analogous to a return:
88−
89−```
90−[duct %give data=card]
91−```
92−
93−Arvo pops the top path off the duct and sends the given card back to the
94−caller.
95−
96−## Vanes
97−
98−As shown above, we use Arvo proper to route and control the flow of
99−moves. However, Arvo proper is rarely directly responsible for
100−processing the event data that directly causes the desired outcome of a
101−move. This event data is contained within a card, which is simply a
102−`(pair term noun)`. Instead, Arvo proper passes the card off to one of
103−its vanes, which each present an interface to clients for a particular
104−well-defined, stable, and general-purpose piece of functionality.
105−
106−As of this writing, we have seven vanes, which each provide the
107−following services:
108−
109−- `%ames`: the name of both our network and the vane that communicates over it.
110−- `%behn`: a simple timer.
111−- `%clay`: our version-controlled, referentially- transparent, and global filesystem.
112−- `%dill`: a terminal driver. Unix sends keyboard events to `%dill` from either the console or telnet, and `%dill` produces terminal output.
113−- `%eyre`: an http server. Unix sends http messages to `%eyre`, and `%eyre` produces http messages in response.
114−- `%ford`: handles resources and publishing.
115−- `%gall`: manages our userspace applications. `%gall` keeps state and manages subscribers.
116−
117−## Cards
118−
119−Cards are the vane-specific portion of a move. Each vane defines a
120−protocol for interacting with other vanes (via Arvo) by defining four
121−types of cards: kisses, gifts, notes, and signs.
122−
123−When one vane is `%pass`ed a card in its `++kiss`, Arvo activates the
124−`++call` gate with the card as its argument. To produce a result, the
125−vane `%give`s one of the cards defined in its `++gift`. If the vane
126−needs to request something of another vane, it `%pass`es it a `++note`
127−card. When that other vane returns a result, Arvo activates the `++take`
128−gate of the initial vane with one of the cards defined in its `++sign`.
129−
130−In other words, there are only four ways of seeing a move: (1) as a
131−request seen by the caller, which is a ++note. (2) that same request as
132−seen by the callee, a `++kiss`. (3) the response to that first request
133−as seen by the callee, a `++gift`. (4) the response to the first request
134−as seen by the caller, a `++sign`.
135−
136−When a `++kiss` card is passed to a vane, Arvo calls its `++call` gate,
137−passing it both the card and its duct. This gate must be defined in
138−every vane. It produces two things in the following order: a list of
139−moves and a possibly modified copy of its context. The moves are used to
140−interact with other vanes, while the new context allows the vane to save
141−its state. The next time Arvo activates the vane it will have this
142−context as its subject.
143−
144−This overview has detailed how to pass a card to a particular vane. To
145−see the cards each vane can be `%pass`ed as a `++kiss` or return as a
146−`++gift` (as well as the semantics tied to them), each vane's public
147−interface is explained in detail in its respective overview.
learn/arvo/arvo internals.udonnew file+147
@@ -0,0 +1,147 @@
1+:- :~ navhome/'/docs/'
2+ next/'true'
3+ sort/'1'
4+ title/'Arvo Internals'
5+ ==
6+;>
7+
8+# Arvo internals
9+
10+> Note: The last major revision of these sections was in 2016. They need to be rewritten: they're outdated in some respects, and also not always as clear as they could be. A rewrite is planned. There is still plenty of good information to be found, but don't bet the farm on anything you read here.
11+
12+Arvo is composed of modules called vanes:
13+
14+;list;
15+
16+At a high level `%arvo` takes a mess of Unix I/O events and turns them
17+into something clean and structured for the programmer.
18+
19+`%arvo` is designed to avoid the usual state of complex event networks:
20+event spaghetti. We keep track of every event's cause so that we have a
21+clear causal chain for every computation. At the bottom of every chain
22+is a Unix I/O event, such as a network request, terminal input, file
23+sync, or timer event. We push every step in the path the request takes
24+onto the chain until we get to the terminal cause of the computation.
25+Then we use this causal stack to route results back to the caller.
26+
27+## Ducts
28+
29+The `%arvo` causal stack is called a `++duct`. This is represented
30+simply as a list of paths, where each path represents a step in the
31+causal chain. The first element in the path is the first letter of
32+whichever vane handled that step in the computation, or the empty span
33+for Unix.
34+
35+Here's a duct that was recently observed in the wild:
36+
37+```
38+~[
39+ /g/a/~zod/4_shell_terminal/u/time
40+ /g/a/~zod/shell_terminal/u/child/4/main
41+ /g/a/~zod/terminal/u/txt
42+ /d/term-mess
43+ //term/1
44+]
45+```
46+
47+This is the duct the timer vane receives when "timer" sample app asks
48+the timer vane to set a timer. This is also the duct over which the
49+response is produced at the specified time. Unix sent a terminal
50+keystroke event (enter), and Arvo routed it to `%dill` (our terminal),
51+which passed it on to the `%gall` app terminal, which sent it to shell,
52+its child, which created a new child (with process id 4), which on
53+startup asked the timer vane to set a timer.
54+
55+The timer vane saves this duct, so that when the specified time arrives
56+and Unix sends a wakeup event to the timer vane, it can produce the
57+response on the same duct. This response is routed to the place we
58+popped off the top of the duct, i.e. the time app. This app produces the
59+text "ding", which falls down to the shell, which drops it through to
60+the terminal. Terminal drops this down to dill, which converts it into
61+an effect that Unix will recognize as a request to print "ding" to the
62+screen. When dill produces this, the last path in the duct has an
63+initial element of the empty span, so this is routed to Unix, which
64+applies the effects.
65+
66+This is a call stack, with a crucial feature: the stack is a first-class
67+citizen. You can respond over a duct zero, one, or many times. You can
68+save ducts for later use. There are definitely parallels to Scheme-style
69+continuations, but simpler and with more structure.
70+
71+## Making Moves
72+
73+If ducts are a call stack, then how do we make calls and produce
74+results? Arvo processes "moves" which are a combination of message data
75+and metadata. There are two types of moves. A `%pass` move is analogous
76+to a call:
77+
78+```
79+[duct %pass return-path=path vane-name=@tD data=card]
80+```
81+
82+Arvo pushes the return path (preceded by the first letter of the vane
83+name) onto the duct and sends the given data, a card, to the vane we
84+specified. Any response will come along the same duct with the path
85+`return-path`.
86+
87+A `%give` move is analogous to a return:
88+
89+```
90+[duct %give data=card]
91+```
92+
93+Arvo pops the top path off the duct and sends the given card back to the
94+caller.
95+
96+## Vanes
97+
98+As shown above, we use Arvo proper to route and control the flow of
99+moves. However, Arvo proper is rarely directly responsible for
100+processing the event data that directly causes the desired outcome of a
101+move. This event data is contained within a card, which is simply a
102+`(pair term noun)`. Instead, Arvo proper passes the card off to one of
103+its vanes, which each present an interface to clients for a particular
104+well-defined, stable, and general-purpose piece of functionality.
105+
106+As of this writing, we have seven vanes, which each provide the
107+following services:
108+
109+- `%ames`: the name of both our network and the vane that communicates over it.
110+- `%behn`: a simple timer.
111+- `%clay`: our version-controlled, referentially- transparent, and global filesystem.
112+- `%dill`: a terminal driver. Unix sends keyboard events to `%dill` from either the console or telnet, and `%dill` produces terminal output.
113+- `%eyre`: an http server. Unix sends http messages to `%eyre`, and `%eyre` produces http messages in response.
114+- `%ford`: handles resources and publishing.
115+- `%gall`: manages our userspace applications. `%gall` keeps state and manages subscribers.
116+
117+## Cards
118+
119+Cards are the vane-specific portion of a move. Each vane defines a
120+protocol for interacting with other vanes (via Arvo) by defining four
121+types of cards: kisses, gifts, notes, and signs.
122+
123+When one vane is `%pass`ed a card in its `++kiss`, Arvo activates the
124+`++call` gate with the card as its argument. To produce a result, the
125+vane `%give`s one of the cards defined in its `++gift`. If the vane
126+needs to request something of another vane, it `%pass`es it a `++note`
127+card. When that other vane returns a result, Arvo activates the `++take`
128+gate of the initial vane with one of the cards defined in its `++sign`.
129+
130+In other words, there are only four ways of seeing a move: (1) as a
131+request seen by the caller, which is a ++note. (2) that same request as
132+seen by the callee, a `++kiss`. (3) the response to that first request
133+as seen by the callee, a `++gift`. (4) the response to the first request
134+as seen by the caller, a `++sign`.
135+
136+When a `++kiss` card is passed to a vane, Arvo calls its `++call` gate,
137+passing it both the card and its duct. This gate must be defined in
138+every vane. It produces two things in the following order: a list of
139+moves and a possibly modified copy of its context. The moves are used to
140+interact with other vanes, while the new context allows the vane to save
141+its state. The next time Arvo activates the vane it will have this
142+context as its subject.
143+
144+This overview has detailed how to pass a card to a particular vane. To
145+see the cards each vane can be `%pass`ed as a `++kiss` or return as a
146+`++gift` (as well as the semantics tied to them), each vane's public
147+interface is explained in detail in its respective overview.
learn/arvo/admin.udon → learn/arvo/arvo internals/admin.udonrenamed

The content is the same.

learn/arvo/ames.udon → learn/arvo/arvo internals/ames.udonrenamed

The content is the same.

learn/arvo/ames/commentary.udon → learn/arvo/arvo internals/ames/commentary.udonrenamed

The content is the same.

learn/arvo/behn.udon → learn/arvo/arvo internals/behn.udonrenamed

The content is the same.

learn/arvo/clay.udon → learn/arvo/arvo internals/clay.udonrenamed

The content is the same.

learn/arvo/clay/architecture.udon → learn/arvo/arvo internals/clay/architecture.udonrenamed

The content is the same.

learn/arvo/clay/commentary.udon → learn/arvo/arvo internals/clay/commentary.udonrenamed

The content is the same.

learn/arvo/dill.udon → learn/arvo/arvo internals/dill.udonrenamed

The content is the same.

learn/arvo/eyre.udon → learn/arvo/arvo internals/eyre.udonrenamed

The content is the same.

learn/arvo/eyre/commentary.udon → learn/arvo/arvo internals/eyre/commentary.udonrenamed

The content is the same.

learn/arvo/eyre/specification.udon → learn/arvo/arvo internals/eyre/specification.udonrenamed

The content is the same.

learn/arvo/filesystem.udon → learn/arvo/arvo internals/filesystem.udonrenamed

The content is the same.

learn/arvo/ford.udon → learn/arvo/arvo internals/ford.udonrenamed

The content is the same.

learn/arvo/ford/runes.udon → learn/arvo/arvo internals/ford/runes.udonrenamed

The content is the same.

learn/arvo/gall.udon → learn/arvo/arvo internals/gall.udonrenamed

The content is the same.

learn/arvo/gall/api.udon → learn/arvo/arvo internals/gall/api.udonrenamed

The content is the same.

learn/arvo/gall/generators.udon → learn/arvo/arvo internals/gall/generators.udonrenamed

The content is the same.

learn/arvo/gall/http.udon → learn/arvo/arvo internals/gall/http.udonrenamed

The content is the same.

learn/arvo/gall/marks.udon → learn/arvo/arvo internals/gall/marks.udonrenamed

The content is the same.

learn/arvo/gall/network.udon → learn/arvo/arvo internals/gall/network.udonrenamed

The content is the same.

learn/arvo/gall/security-driver.udon → learn/arvo/arvo internals/gall/security-driver.udonrenamed

The content is the same.

learn/arvo/gall/state.udon → learn/arvo/arvo internals/gall/state.udonrenamed

The content is the same.

learn/arvo/gall/subscriptions.udon → learn/arvo/arvo internals/gall/subscriptions.udonrenamed

The content is the same.

learn/arvo/gall/web-apps.udon → learn/arvo/arvo internals/gall/web-apps.udonrenamed

The content is the same.

learn/arvo/generators.udon → learn/arvo/arvo internals/generators.udonrenamed

The content is the same.

learn/arvo/hall.udon → learn/arvo/arvo internals/hall.udonrenamed

The content is the same.

learn/arvo/hall/architecture.udon → learn/arvo/arvo internals/hall/architecture.udonrenamed

The content is the same.

learn/arvo/hall/interface.udon → learn/arvo/arvo internals/hall/interface.udonrenamed

The content is the same.

learn/arvo/hall/new-gall.udon → learn/arvo/arvo internals/hall/new-gall.udonrenamed

The content is the same.

learn/arvo/hall/new-gall/example.udon → learn/arvo/arvo internals/hall/new-gall/example.udonrenamed

The content is the same.

learn/arvo/hall/new-gall/spec.udon → learn/arvo/arvo internals/hall/new-gall/spec.udonrenamed

The content is the same.

learn/arvo/layout.udon → learn/arvo/arvo internals/layout.udonrenamed

The content is the same.

learn/arvo/messaging.udon → learn/arvo/arvo internals/messaging.udonrenamed

The content is the same.

learn/arvo/publishing.udon → learn/arvo/arvo internals/publishing.udonrenamed

The content is the same.

learn/arvo/sail.udon → learn/arvo/arvo internals/sail.udonrenamed

The content is the same.

learn/arvo/shell.udon → learn/arvo/arvo internals/shell.udonrenamed

The content is the same.

learn/arvo/udon.udon → learn/arvo/arvo internals/udon.udonrenamed

The content is the same.

learn/arvo/udon/blog.udon → learn/arvo/arvo internals/udon/blog.udonrenamed

The content is the same.

learn/arvo/udon/comments.udon → learn/arvo/arvo internals/udon/comments.udonrenamed

The content is the same.

learn/arvo/udon/static.udon → learn/arvo/arvo internals/udon/static.udonrenamed

The content is the same.

learn/hoon.udon → learn/arvo/hoon.udonrenamed

The content is the same.

learn/hoon/hoon-ch1-1.udon → learn/arvo/hoon/hoon-ch1-1.udonrenamed

The content is the same.

learn/hoon/hoon-ch1-2.udon → learn/arvo/hoon/hoon-ch1-2.udonrenamed

The content is the same.

learn/hoon/hoon-ch1-3.udon → learn/arvo/hoon/hoon-ch1-3.udonrenamed

The content is the same.

learn/hoon/hoon-ch1-4.udon → learn/arvo/hoon/hoon-ch1-4.udonrenamed

The content is the same.

learn/hoon/hoon-ch1-5.udon → learn/arvo/hoon/hoon-ch1-5.udonrenamed

The content is the same.

learn/hoon/hoon-ch1-6.udon → learn/arvo/hoon/hoon-ch1-6.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-1.udon → learn/arvo/hoon/hoon-ch2-1.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-10.udon → learn/arvo/hoon/hoon-ch2-10.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-11.udon → learn/arvo/hoon/hoon-ch2-11.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-2.udon → learn/arvo/hoon/hoon-ch2-2.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-3.udon → learn/arvo/hoon/hoon-ch2-3.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-4.udon → learn/arvo/hoon/hoon-ch2-4.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-5.udon → learn/arvo/hoon/hoon-ch2-5.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-6.udon → learn/arvo/hoon/hoon-ch2-6.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-7.udon → learn/arvo/hoon/hoon-ch2-7.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-8.udon → learn/arvo/hoon/hoon-ch2-8.udonrenamed

The content is the same.

learn/hoon/hoon-ch2-9.udon → learn/arvo/hoon/hoon-ch2-9.udonrenamed

The content is the same.

learn/hoon/hoon-ch3-1.udon → learn/arvo/hoon/hoon-ch3-1.udonrenamed

The content is the same.

learn/nock.udon → learn/arvo/nock.udonrenamed

The content is the same.

learn/nock/definition.udon → learn/arvo/nock/definition.udonrenamed

The content is the same.

learn/nock/example.udon → learn/arvo/nock/example.udonrenamed

The content is the same.

learn/nock/explanation.udon → learn/arvo/nock/explanation.udonrenamed

The content is the same.

learn/nock/implementations.udon → learn/arvo/nock/implementations.udonrenamed

The content is the same.

learn/nock/implementations/c.udon → learn/arvo/nock/implementations/c.udonrenamed

The content is the same.

learn/nock/implementations/clojure.udon → learn/arvo/nock/implementations/clojure.udonrenamed

The content is the same.

learn/nock/implementations/csharp.udon → learn/arvo/nock/implementations/csharp.udonrenamed

The content is the same.

learn/nock/implementations/groovy.udon → learn/arvo/nock/implementations/groovy.udonrenamed

The content is the same.

learn/nock/implementations/haskell.udon → learn/arvo/nock/implementations/haskell.udonrenamed

The content is the same.

learn/nock/implementations/hoon.udon → learn/arvo/nock/implementations/hoon.udonrenamed

The content is the same.

learn/nock/implementations/javascript.udon → learn/arvo/nock/implementations/javascript.udonrenamed

The content is the same.

learn/nock/implementations/python.udon → learn/arvo/nock/implementations/python.udonrenamed

The content is the same.

learn/nock/implementations/ruby.udon → learn/arvo/nock/implementations/ruby.udonrenamed

The content is the same.

learn/nock/implementations/scala.udon → learn/arvo/nock/implementations/scala.udonrenamed

The content is the same.

learn/nock/implementations/scheme.udon → learn/arvo/nock/implementations/scheme.udonrenamed

The content is the same.

learn/nock/implementations/swift.udon → learn/arvo/nock/implementations/swift.udonrenamed

The content is the same.

learn/vere.udon → learn/arvo/vere.udonrenamed+1−1
@@ -1,6 +1,6 @@
1:- :~ navhome/'/docs/'
1:- :~ navhome/'/docs/'
2 next/'true'
2 next/'true'
3− sort/'5'
3+ sort/'4'
4 title/'Vere'
4 title/'Vere'
5 ==
5 ==
6;>
6;>
learn/vere/api.udon → learn/arvo/vere/api.udonrenamed

The content is the same.

learn/vere/c.udon → learn/arvo/vere/c.udonrenamed

The content is the same.

learn/vere/jetting.udon → learn/arvo/vere/jetting.udonrenamed

The content is the same.

learn/vere/nouns.udon → learn/arvo/vere/nouns.udonrenamed

The content is the same.

learn/vere/runtime.udon → learn/arvo/vere/runtime.udonrenamed

The content is the same.

learn/azimuth.udon+1
@@ -1,4 +1,5 @@
1:- :~ title/'Azimuth'
1:- :~ title/'Azimuth'
2+ sort/'2'
2 ==
3 ==
3;>
4;>
4
5
learn/azimuth/blockchain.udon+1
@@ -1,4 +1,5 @@
1:- :~ title/'Why Urbit Uses a Blockchain'
1:- :~ title/'Why Urbit Uses a Blockchain'
2+ sort/'1'/
2 ==
3 ==
3;>
4;>
4
5
learn/azimuth/constitution.udondeleted−7
@@ -1,7 +0,0 @@
1−:- :~ title/'Constitution'
2− ==
3−;>
4−
5−# Constitution
6−
7−[PLACEHOLDER]
learn/azimuth/wallet.udon+1
@@ -1,4 +1,5 @@
1:- :~ title/'The Urbit HD Wallet'
1:- :~ title/'The Urbit HD Wallet'
2+ sort/'2'
2 ==
3 ==
3;>
4;>
4
5
reference/cheat-sheet.udon+2−3
@@ -1,6 +1,5 @@
1−:- :~ navhome/'/docs/'
2− sort/'8'
3− title/'Cheat sheet'
1+:- :~ title/'Cheat sheet'
2+ sort/'4'
4 ==
3 ==
5;>
4;>
6
5
reference/glossary.udon+2−4
@@ -1,7 +1,5 @@
1−:- :~ navhome/'/docs/'
2− navuptwo/'true'
3− sort/'1'
4− title/'Glossary'
1+:- :~ title/'Glossary'
2+ sort/'3'
5 ==
3 ==
6
4
7;>
5;>
reference/hoon-expressions.udon+4
@@ -1,3 +1,7 @@
1+:- :~ title/'Hoon Expressions'
2+ sort/'1'
3+ ==
4+
1;>
5;>
2
6
3# Hoon Expressions
7# Hoon Expressions
reference/library.udon+2−3
@@ -1,6 +1,5 @@
1−:- :~ navhome/'/docs/'
2− sort/'3'
3− title/'Standard library'
1+:- :~ title/'Standard library'
2+ sort/'2'
4 ==
3 ==
5;>
4;>
6
5
reference/troubleshooting.udon+2−3
@@ -1,6 +1,5 @@
1−:- :~ navhome/'/docs/'
2− sort/'6'
3− title/'Hoon Errors'
1+:- :~ title/'Hoon Errors'
2+ sort/'5'
4 ==
3 ==
5;>
4;>
6
5