shrub/README.md

266 lines
6.7 KiB
Markdown
Raw Normal View History

2015-10-08 01:42:19 +03:00
Urbit
2013-09-29 00:21:18 +04:00
=====
2015-09-25 02:34:01 +03:00
Urbit is a new computing environment designed from scratch.
2014-06-10 01:56:56 +04:00
2015-10-06 00:01:41 +03:00
At present urbit is under heavy development. It's not useful for any
external purpose. Documentation is completely inadequate. Anyone can use
the interpreter, of course, but the network is invitation-only.
2015-09-23 00:04:11 +03:00
2015-10-06 00:01:41 +03:00
If you're interested in keeping in touch or following the project you
can:
2015-06-17 04:27:28 +03:00
- Enter your email address at [urbit.org](http://urbit.org).
- Subscribe to the
[urbit-dev](https://groups.google.com/forum/#!forum/urbit-dev)
mailing list.
- Follow [@urbit_](https://twitter.com/urbit\_) on Twitter.
- Get in touch with us via email, <urbit@urbit.org>
2013-09-29 00:21:18 +04:00
2015-09-25 02:34:01 +03:00
All of the source code is distributed under the MIT license.
2014-12-19 22:09:07 +03:00
2015-10-08 01:42:19 +03:00
Install from packages
--------------------
#### OS X - Homebrew
brew install --HEAD homebrew/head-only/urbit
2013-09-29 07:16:11 +04:00
#### Ubuntu or Debian
2015-10-06 00:01:41 +03:00
Third-party package files are maintained at
2015-10-08 01:42:19 +03:00
https://github.com/yebyen/urbit-deb.
2015-10-08 01:42:19 +03:00
Urbit is only supported on jessie onward (but outgoing HTTPS
requests only work on stretch).
2015-10-08 01:42:19 +03:00
Install by hand
---------------
2015-10-06 00:01:41 +03:00
2015-06-17 04:27:28 +03:00
urbit depends on:
2014-06-10 01:56:56 +04:00
gcc
gmp
libsigsegv
openssl
2014-08-26 21:31:38 +04:00
automake
autoconf
2014-12-06 00:55:27 +03:00
ragel
cmake
2014-12-06 00:55:27 +03:00
re2c
2014-08-26 21:31:38 +04:00
libtool
2014-06-10 01:56:56 +04:00
libssl-dev (Linux only)
ncurses (Linux only)
2015-06-17 04:25:32 +03:00
#### Ubuntu or Debian
2014-06-10 01:56:56 +04:00
2014-12-06 00:55:27 +03:00
sudo apt-get install libgmp3-dev libsigsegv-dev openssl libssl-dev libncurses5-dev git make exuberant-ctags automake autoconf libtool g++ ragel cmake re2c
2014-06-10 01:56:56 +04:00
2015-10-06 00:01:41 +03:00
*note: http requests are not supported on debian jessie due to an ssl
issue*
2015-07-14 21:46:58 +03:00
#### Fedora
2014-06-10 01:56:56 +04:00
sudo dnf install gcc gcc-c++ git gmp-devel openssl-devel openssl ncurses-devel libsigsegv-devel ctags automake autoconf libtool ragel cmake re2c
2014-06-10 01:56:56 +04:00
2015-06-17 04:25:32 +03:00
#### AWS
2014-06-10 01:56:56 +04:00
2015-06-17 21:34:25 +03:00
sudo yum --enablerepo epel install gcc gcc-c++ git gmp-devel openssl-devel ncurses-devel libsigsegv-devel ctags automake autoconf libtool cmake re2c
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
#### OS X - Homebrew
2014-06-10 01:56:56 +04:00
2015-06-17 04:56:58 +03:00
brew install git gmp libsigsegv openssl libtool autoconf automake cmake
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
#### OS X - Macports
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
sudo port install git gmp libsigsegv openssl autoconf automake cmake
Although `automake`/`autoconf`/`libtool` are generally installed by
default, some have reported needing to uninstall and reinstall those
three packages, at least with Homebrew. Your mileage may vary.
2014-06-10 01:56:56 +04:00
2015-06-19 06:52:38 +03:00
#### FreeBSD
pkg install git gmake gmp libsigsegv openssl automake autoconf ragel cmake re2c libtool
2015-06-19 06:52:38 +03:00
2015-06-17 04:27:28 +03:00
Build
-----
2014-08-26 21:31:38 +04:00
2015-06-17 04:27:28 +03:00
Clone the repo:
2014-06-10 01:56:56 +04:00
git clone git://github.com/urbit/urbit.git
2015-06-17 04:27:28 +03:00
`cd` to the directory you just created:
2014-06-10 01:56:56 +04:00
cd urbit
2015-06-17 04:27:28 +03:00
Just run `make`:
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
make
2014-06-10 01:56:56 +04:00
2015-06-19 06:52:38 +03:00
(On FreeBSD, use `gmake` instead.)
2015-09-25 02:34:01 +03:00
Run (with a network invitation)
2015-10-06 00:01:41 +03:00
-------------------------------
2014-06-10 01:56:56 +04:00
2015-10-08 01:42:19 +03:00
Your invitation is a planet (32-bit urbit), with a name like
`~fintud-macrep`, and a ticket (sekrit code), like
`~fortyv-tombyt-tabsen-sonres`. Run
2014-06-10 01:56:56 +04:00
2015-09-25 02:34:01 +03:00
bin/urbit -w fintud-macrep -t fortyv-tombyt-tabsen-sonres
2014-06-10 01:56:56 +04:00
2015-09-25 02:34:01 +03:00
Your pier (all Urbit state, log and checkpoint) will be in
2015-10-08 01:42:19 +03:00
`./fintud-macrep`. You can move it, and it's portable. Doing
`rm -r fintud-macrep/.urb/chk` will delete the checkpoint,
meaning all your events need to be recomputed, but making the
image smaller.
To quit Urbit (without destroying any data, since Urbit is a
database): ^D.
2015-10-06 00:01:41 +03:00
2015-10-08 01:42:19 +03:00
To start ~fintud-macrep again, omit the `-w` and `-t` flags:
2014-06-10 01:56:56 +04:00
2015-09-25 02:34:01 +03:00
bin/urbit fintud-macrep
2014-06-10 01:56:56 +04:00
2015-09-25 02:34:01 +03:00
Run (without a network invitation)
2015-10-06 00:01:41 +03:00
----------------------------------
2014-06-10 01:56:56 +04:00
2015-09-25 02:34:01 +03:00
bin/urbit -c mypier
2014-06-10 01:56:56 +04:00
2015-10-08 01:42:19 +03:00
Urbit will create a comet (128-bit urbit) in `mypier`.
2015-10-06 00:01:41 +03:00
2015-10-08 01:42:19 +03:00
To quit Urbit (without destroying any data, since Urbit is a
database): ^D. Note that you can kill your urbit process as
nastily as you want,
To start your comet again, omit the `-c` flag:
2015-09-25 02:34:01 +03:00
bin/urbit mypier
2014-06-10 01:56:56 +04:00
2015-10-08 01:42:19 +03:00
Getting started
---------------
Your urbit is a Web server, so the best place to read about it
is in your browser.
Urbit prints the HTTP port it's serving when it starts up:
http: live (insecure) on 8080
8080 is the default. If you're running on AWS or another cloud
service, this port may be firewalled; go to the firewall
configuration to open it.
Learn these two control keys first:
Press ^v
2015-06-17 04:27:28 +03:00
Basics
------
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
`^v` will switch between the task manager and the focussed process. `^x`
will switch between processes.
2014-06-10 01:56:56 +04:00
To start a process that is not yet started, run `*proc` from the task
2015-06-17 04:27:28 +03:00
manager.
2014-06-10 01:56:56 +04:00
To connect your console to a process that has already been started, run
`+proc` from the task manager. Note that the process must be one that
supports console access, such as dojo and talk.
2015-06-17 04:27:28 +03:00
`^d` will exit the pier from the task manager. No matter how you shut
your urbit down you'll be returned to exactly the same state as when you
turned it off.
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
Talk
----
2014-06-10 01:56:56 +04:00
2015-10-06 00:01:41 +03:00
If you're on the network, you can use its most basic application,
`talk`.
2015-09-25 02:34:01 +03:00
2015-06-17 04:27:28 +03:00
If `talk` is not running, start it with `*talk` from the task manager.
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
Use `^x` to switch to the `talk` prompt and then run
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
;join ~doznec/urbit-meta
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
to join the `urbit-meta` channel. People in there are helpful.
2014-06-10 01:56:56 +04:00
2015-09-23 00:04:11 +03:00
There are three main `talk` commands:
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
;join ~urbit-name/channel
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
`;join` subscribes your main feed to a remote channel.
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
;<number>
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
`;<number>` activates a previous message number, like a URL that got
clipped.
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
;<target>
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
`;<target>` sets the target for your messages, such as `;~urbit-name`
for a private message.
Filesystem Sync
---------------
2015-10-06 00:01:41 +03:00
The Urbit filesystem, `%clay` doesn't automatically sync to unix. If
you'd like to browse the contents of your Urbit from unix you'll need to
use `|mount`.
`|mount` creates a mirror in unix of files from `%clay` that is always
watching for changes. To sync your entire `home/` desk run:
|mount %
you should see a directory called `home/` get created inside your pier.
When you change files in this directory the changes will get synced into
your urbit.
Since each mount point is always watching for changes you may also want
to unmount from time to time.
2015-10-06 00:01:41 +03:00
The full syntax is as follows (from `dojo`):
2015-10-06 00:35:16 +03:00
|mount <path-in-clay> [<mount-name>]
The `<mount-name>` is optional and defaults to the last part of
the `<path-in-clay>`.
|unmount <mount-name>
2015-07-14 21:46:58 +03:00
or:
2015-10-06 00:35:16 +03:00
|unmount <path-in-clay>
2015-07-14 21:46:58 +03:00
2015-06-17 04:27:28 +03:00
Sysadmin
--------
2015-06-17 04:27:28 +03:00
For the most part, updates to the system are automatically synced to
your urbit across the network.
2015-06-17 04:27:28 +03:00
When we make updates to the interpreter you should be able to shut down
your urbit and:
2014-06-10 01:56:56 +04:00
git pull origin master
2015-06-17 04:27:28 +03:00
make
bin/urbit pier
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
where pier is the name of your pier.
2014-06-10 01:56:56 +04:00
2015-06-17 04:27:28 +03:00
While the network is still young from time to time we reboot the entire
2015-09-23 00:04:11 +03:00
universe. We call this a 'continuity breach' since we're breaking the
2015-06-17 04:27:28 +03:00
continuity of our crypto.
2013-09-29 00:21:18 +04:00
2015-06-17 04:27:28 +03:00
When this happens you'll need to back up your data and start a fresh
pier. Your original ticket will still work.
2013-09-29 00:21:18 +04:00
2015-06-17 04:27:28 +03:00
Contributing
------------
2013-09-29 00:21:18 +04:00
2015-10-06 00:01:41 +03:00
The first step in contributing to urbit is to come and join us on
`:talk`.
2015-09-02 21:32:15 +03:00
2015-10-06 00:01:41 +03:00
For more detailed instructions check out
2015-09-02 21:32:15 +03:00
[`contributing.md`](https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md),.