urbit/README.md

212 lines
5.7 KiB
Markdown
Raw Normal View History

2015-10-20 21:40:29 +03:00
Urbit
2013-09-29 00:21:18 +04:00
=====
2015-10-20 21:40:29 +03:00
Urbit is a clean-slate system software stack defined as a
deterministic computer. An encrypted P2P network, `%ames`, runs on a
functional operating system, Arvo, written in a strict, typed
functional language, Hoon, which compiles itself to a combinator
interpreter, Nock, whose spec gzips to 340 bytes.
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
What is this for? Most directly, Urbit is designed as a personal
cloud server for self-hosted web apps. It also uses HTTP APIs to
manage data stuck in traditional web applications.
2015-09-23 00:04:11 +03:00
2015-10-20 21:40:29 +03:00
More broadly, Urbit's network tackles identity and security problems
which the Internet can't easily address. Programming for a
deterministic single-level store is also a different experience from
Unix programming, regardless of language.
2015-06-17 04:27:28 +03:00
2015-10-20 21:40:29 +03:00
Getting involved
----------------
If you're interested in following Urbit, you can:
- Read our documentation at [urbit.org](http://urbit.org/docs)
- Subscribe to our newsletter at [urbit.org](http://urbit.org).
- Check out the
2015-06-17 04:27:28 +03:00
[urbit-dev](https://groups.google.com/forum/#!forum/urbit-dev)
mailing list.
- Follow [@urbit_](https://twitter.com/urbit\_) on Twitter.
2015-10-20 21:40:29 +03:00
- Hit us up by email, `urbit@urbit.org`. We're nice!
2013-09-29 00:21:18 +04:00
2015-10-20 21:40:29 +03:00
Code of conduct
---------------
2014-12-19 22:09:07 +03:00
2015-10-20 21:40:29 +03:00
Everyone involved in the Urbit project needs to understand and
respect our code of conduct, which is: "don't be rude."
2013-09-29 07:16:11 +04:00
2015-10-20 21:40:29 +03:00
Documentation
=============
2015-10-20 21:40:29 +03:00
In-progress documentation can be found at
[urbit.org/docs](http://urbit.org/docs).
2015-10-20 21:40:29 +03:00
These docs ship with your urbit. If you're running one locally you
can access them at
http://localhost:8080/home/docs
Assuming you're running on port 8080. The port is printed on startup.
2015-10-20 21:46:25 +03:00
Install
=======
2015-10-20 21:40:29 +03:00
Urbit can be installed on most Unix systems. There is no Windows
port. Windows is a wonderful OS, we just haven't gotten to it yet.
Use a VM.
Install as a package
--------------------
### OS X - Homebrew
brew install --HEAD homebrew/head-only/urbit
2015-10-20 21:40:29 +03:00
### Ubuntu or Debian
Third-party packages are available, at:
https://github.com/yebyen/urbit-deb
2015-10-20 21:44:53 +03:00
Urbit is only supported on Jessie onward (but outbound HTTPS requests only work on Stretch; I wish we knew why; help us!)
2015-10-20 21:40:29 +03:00
Hand-build from source
----------------------
First, install all external dependencies. Then, make.
### Dependencies
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
2015-10-20 21:40:29 +03:00
gcc (or clang)
2014-06-10 01:56:56 +04:00
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-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-10-20 21:40:29 +03:00
### Download and make
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-10-20 21:40:29 +03:00
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-10-20 21:40:29 +03:00
The executable is `bin/urbit`. Install it somewhere, or just use it
where it is.
2014-06-10 01:56:56 +04:00
2015-10-20 21:46:25 +03:00
Launch
======
2015-10-06 00:01:41 +03:00
2015-10-20 21:40:29 +03:00
An urbit is a persistent server on the `%ames` P2P network. You'll
2015-10-20 21:43:56 +03:00
create one of these servers now.
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
If you have an invitation, it's a planet like `~fintud-macrep` and a
ticket like `~fortyv-tombyt-tabsen-sonres`. Run
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
urbit -w fintud-macrep -t fortyv-tombyt-tabsen-sonres
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
(You can leave the `~` on, but it annoys some Unix shells.)
2015-10-06 00:01:41 +03:00
2015-10-20 21:40:29 +03:00
If you don't have an invitation, pick a nickname for your comet, like
`mycomet`. Urbit will randomly generate a 128-bit plot:
2015-09-25 02:34:01 +03:00
2015-10-20 21:40:29 +03:00
urbit -c mycomet
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
Either way, creating your urbit will take some time. Some of this
time involves creating keys; some of it involves downloading code
over Urbit itself. Go get a cup of coffee. Or a beer.
2014-06-10 01:56:56 +04:00
2015-10-20 21:43:56 +03:00
Wait until you see a prompt, something like
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
~fintud-macrep:talk()
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
or
2015-10-20 21:40:29 +03:00
~fintud-macrep:dojo>
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
Your urbit is launched! Ladies and gentlemen, we are floating in
space.
2015-09-25 02:34:01 +03:00
2015-10-20 21:46:25 +03:00
Docs
====
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
Your urbit is your personal web server. The best place to read its
docs is by pointing your browser at it.
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
Urbit prints the HTTP port it's serving when it starts up:
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
http: live (insecure) on 8080
2014-06-10 01:56:56 +04:00
2015-10-20 21:47:43 +03:00
8080 is the default. When it's not available we use 8081. Then 8082, and so on. If you're running on AWS or another cloud
2015-10-20 21:40:29 +03:00
service, this port may be firewalled; go to the firewall
configuration to open it.
2014-06-10 01:56:56 +04:00
2015-10-20 21:44:53 +03:00
(*Always run any urbit HTTP server which is even semi-serious inside a reliable, battle-proven frontline server like nginx.*)
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
Urbit's own official planet `~winsen-pagdel` is also bound to just
plain `urbit.org`, and hosts the public docs
[here](http://urbit.org/docs). (They are, of course, the same as
2015-10-20 21:44:53 +03:00
those that ship with your urbit.)
2014-06-10 01:56:56 +04:00
2015-10-20 21:49:40 +03:00
Assuming your Urbit is on `localhost:8080`, your copy of the docs are at
2014-06-10 01:56:56 +04:00
2015-10-20 21:40:29 +03:00
http://localhost:8080/home/docs
2014-06-10 01:56:56 +04:00
2015-10-20 21:49:40 +03:00
To continue getting setup, start here:
2014-06-10 01:56:56 +04:00
2015-10-20 21:49:40 +03:00
http://localhost:8080/home/docs/user/start
2013-09-29 00:21:18 +04:00
2015-06-17 04:27:28 +03:00
Contributing
2015-10-20 21:40:29 +03:00
============
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-10-20 21:40:29 +03:00
[`contributing.md`](https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md).