@@ -4,66 +4,209 @@ type: post
44title: Urbit overview
55author: Galen Wolfe-Pauly
66image: http://urbit.s3.amazonaws.com/16-3-10/blog-0.jpg
7−preview: A simple system is easier to maintain, easier to develop for, and easier to understand.
7+preview: A high-level overview of Urbit. How the pieces fit together and what we think the future will look like as Urbit grows up.
88layout: urbit,post
99navmode: navbar
1010navdpad: false
11−navselect: blog
11+navselect: posts
1212navpath: /
1313navhome: /
1414navclass: urbit
1515---
1616
17−Urbit is a personal cloud computing platform. You can install Urbit on any Unix-based system to turn it into a self-hosted node on a new decentralized network.
18−
19−We have a computer on our desks or our laps, and a smaller one in our pockets, but our computing is actually spread across the cloud services we depend on. These services all look pretty similar. They each keep track of your identity, store your data and provide some interface to compute with. Your Urbit is designed to provide these same features — but on a single server that you own and control, running on a secure decentralized network.
20−
21−When centered around the individual a computer can be a vehicle for invention and exploration; a tool for one to discover what’s possible. A computer should be an open-ended device for the advancement of our thought, our relationships and in turn, our society.
22−
23−Urbit is designed to be such a computer, intended to restore the possibility of general-purpose computing for our cloud-permanent future. We look forward to a world where each person has a single place where they store their data and decide what software to run, on a platform they cryptographically own, and can both program and control.
24−
25−Your Urbit is your digital identity, permanent personal archive, general-purpose computing platform and secure network of devices. The convenience of cloud computing is fantastic, but it need not come at the cost of our privacy, control and, most importantly, creativity.
26−
27−## Platform as product
28−
29−At its core Urbit is a system for others to invent on top of — to reimagine what a computer should be. Urbit is a general-purpose personal computing platform for the cloud designed to make computing on the network simple enough for an ordinary user.
30−
31−The first thing Urbit is good for is taking control of your existing cloud services. Your Urbit allows you to program and control your cloud services as if they were all part of a single system. Sort of like IFTTT if it were a piece of systems software. A simple stateful tool that can `ls` your GMail, or send a tweet when a GitHub issue gets closed. We're working to make the Urbit programming environment treat web APIs like I/O.
32−
33−Urbit is also currently a simple self-hosted publishing and communication tool. Your Urbit hosts your static content in a way that’s flexible. It's quick to create a blog o website just by creating a tree of markdown files. Today we all create a variety of different kinds of content, but find it permanently tethered to the service we created it with. As a publishing tool Urbit is designed to bring our content together into a single customizable system.
34−
35−These first steps are just the beginning. At first, your Urbit is a transparent layer to the things you already have. Next it’s a reliable archive all your data. Over time your Urbit grows into a world all its own. One in which you have a single digital identity, never lose data, can run any software you like — without any cost of switching — and don’t have to worry about privacy or security. We go into more detail about this in a longer post on [product futures](../2016-3-7).
36−
37−## Approach
38−
39−The foundation of the cloud is a Unix box with an internet connection — a pair dating back to the 1970s. In the 70s there was no universally available broadband, no global layer of 99.99999% uptime data centers, nor any concept of social networking. We have outgrown the original architecture of the internet as we have discovered and invented what the web is useful for. The tools for building apps and services are quite mature, but they’re designed for a centralized model. Anyone who wants to run their own computer in the cloud has to learn to use a bare unix server, which is full-time job.
40−
41−Our approach is to provide the same suite of services that we have come to expect from the server side, but for an individual to own and control independently. Urbit bridges the gap between Unix and the application layer with a single simple system instead of a toolbox of interlocking parts (aka 'the stack'). Each Urbit is a self-contained system that's independently controlled, but seamlessly a part of a global network.
42−
43−Urbit treats the cloud like the internet treated the phone system. Our system runs on any Unix box with an internet connection, providing a clean and simple platform for individuals to independently compute in the cloud on top.
44−
45−## The system
46−
47−Urbit’s design is a bit like a mechanical device: simple, pared down and optimized for flexibility and durability.
48−
49−Practically Urbit has three layers: Arvo, our operating environment; Hoon, our programming language and Nock, our virtual machine. Arvo is composed of kernel modules familiar from the web stack: a global, immutable revision-controlled filesystem, a build system, a web server, a typed networking protocol and an application model. Hoon is a strict, typed functional language similar to Haskell but without the math. Nock is a simple combinator that’s the Urbit equivalent of the lambda calculus. The entire system fits in about 20K lines of code and can be understood in its entirety by a determined engineer.
50−
51−Just a few of our techncial wins:
52−- Deterministic computing. Your Urbit's state is a fixed function of its event history. Need to replay a few million events? No problem. We arrive at the same byte-for-byte state every time.
53−- Single-level store. Urbit makes no distinction between memory and disk. Your program state lives forever since the entire system acts like a database.
54−- Typed, exactly-once networking. Urbit networking is designed to make calling remote functions the same as doing local computation.
55−- Typed, global, immutable revision-control. The entire Urbit network shares a single filesystem.
56−
57−Urbit today is a proof of concept. It runs, works pretty well, and will happily entertain any interested developer. There’s lots to work on and lots to explore. To learn more and get set up head over to [the docs](/docs).
58−
59−## Address space
60−
61−The foundation of Urbit is the address space. The Urbit network / PKI is a decentralized, finite, global address space where each address is a piece of cryptographic property. If bitcoin is money and ether is law, Urbit is land. An Urbit address is a short, memorable name that you can route packets to. It's kind of like a username, IP address and domain name all rolled into one name that you keep forever. Since there's a finite number of them, all of which can only be transferred a limited number of times, addresses cost money. How much? More than you’d make spamming and abusing the network.
62−
63−At first that cost is nearly zero. The network is young and unpopulated. Urbit solves this problem by dividing address space into blocks. The first 2^8 can invite the following 2^16 who can invite the remaining 2^32. Early blocks are designed to be nodes of trust. They perform routing tasks (p2p discovery) for their children, and also sign the keys for new nodes. Child nodes are free to change parents, but will always need to find a parent who will take them on.
64−
65−For us, this is a feature. To build a sane network we think the right approach is to create multiple decentralized bottlenecks for entrance. In this design authority never resides in one place, and accountability between nodes is preserved. The network is inescapably driven towards decentralization since individual nodes are incentivized to give away their invitations.
66−
67−The address space is intended to become what a network ought to be: reputation infrastructure. A network where addresses represent actual humans would be a fantastic achievement. Identity is a basic primitive completely unsolved by the web today. We have centralized systems of identity authority (Facebook, Twitter, Google) — but they’re hardly digital passports. An Urbit is a secure, verifiable digital identity system with no central point of control.
68−
69−Learn more about the address space in [the network architecture doc](2016-3-9).
17+## What Urbit is
18+
19+Urbit is a virtual city of general-purpose personal servers.
20+
21+## Your old personal server
22+
23+What's a personal server? In a sense, you already have one. Your
24+personal server is the combination of all the cloud services you use
25+now.
26+
27+This "server" is a mess. It's broken into 17 different fragments
28+which are scattered all over the planet. You have no control at all
29+over any of the pieces. The more we depend on Web services, the more
30+we realize how unsustainable this situation is.
31+
32+Can you remember all the services you have accounts for? How about
33+the username and password for each? Some of them will let you pull
34+your data out somehow, some won’t. Sometimes you can move your data
35+between them, sometimes you can’t. But they're all good at
36+showing you ads.
37+
38+## Your new personal server
39+
40+Your urbit is your own general-purpose server. It holds your
41+data; runs your apps; wrangles your connected devices; and
42+defines your secure identity. If you still need your old
43+services, it drives them with APIs.
44+
45+Your urbit presents your whole digital life as a single web
46+service. And since it's yours, open source and patent-free, it
47+never shows you ads. Or loses your data. Or updates without
48+your consent.
49+
50+Technically, Urbit is a new kind of OS that has a precise formal
51+definition. (Urbit is actually a [single mathematical function](CS
52+paper).) One advantage of a math-based OS is that Urbit is perfectly
53+portable. It can't tell whether it's in a cloud data center or on
54+your home PC.
55+
56+Concerned about mass surveillance? Download your urbit and restart it
57+on your laptop, or move to a new host in Iceland. Urbit's formal
58+simplicity makes managing it as easy as managing an iPhone: all you
59+have to decide is what apps to add.
60+
61+Each urbit is a node on an global, encrypted P2P network. Your Urbit
62+name, a generated pseudonym like `~talsur-todres`, is also your network
63+address. Like Bitcoin, Urbit address space is a cryptographic asset
64+with a limited supply.
65+
66+By keeping addresses scarce, we make spam and abuse expensive. Urbit
67+is a "friendly network," like the Internet in 1986, where a stranger
68+is nice until proven nasty. As it matures, Urbit will grow into a
69+decentralized, self-governing virtual city both safe and free.
70+
71+## The Urbit future
72+
73+In an Urbit world, your data is no longer trapped in a jumble of
74+proprietary servers. Your urbit is a permanent, versioned, typed
75+archive the size of your digital life. Even before you move your data
76+from a Web service to a local Urbit app, your urbit can drive your
77+account with an API or scraper.
78+
79+And within Urbit, data is never locked inside apps. Imagine if you
80+could painlessly switch between Facebook and Google+, Asana and
81+Trello, Tumblr and WordPress. Not only does your urbit upgrade itself
82+and its apps automatically, you can "sidegrade" a running app to
83+another vendor without losing data.
84+
85+Your urbit is also your digital identity. Along with your data
86+lifestream of media, messages and documents, it has the keys and
87+tokens to manage all your legacy Web services. It holds the keys
88+for your cryptocurrency wallets, so it can buy and sell for you.
89+(With one personal server to secure, not 17 different accounts,
90+you actually have the bandwidth to take security seriously.)
91+
92+You still use network services. But instead of interacting with
93+the service provider's HTML UI, which phones home using
94+proprietary HTTP APIs, you interact with a third-party app on
95+your urbit, which talks to multiple service providers using
96+public, typed Urbit protocols. For example, your urbit runs a
97+single shopping app, which downloads catalogs and uploads orders.
98+This app is one store which sells everything in the world, with a
99+salesman who's 100% on your side and always has the best price.
100+Every computing experience is different when the UI is working
101+exclusively for the user.
102+
103+Finally, your urbit is the hub for your network of connected
104+devices. Your smart thermostat, your wristband, your phone and
105+tablet, all run satellite urbits which talk securely to your main
106+urbit in the cloud.
107+
108+## A chance for digital freedom
109+
110+The promise of the personal server isn't just convenience.
111+General-purpose computing is magic. This magic must be in the
112+hands of all, not just those who can master Unix. The computer
113+is a bicycle for the mind. It's an open vehicle for exploration
114+and discovery. It’s not a way to optimize ad delivery.
115+
116+Urbit, as virtual city, is a platform that brings together all our
117+datastreams -- from emails to heartbeats -- in a way that we ourselves
118+control. Can we work together to match faces in photos, without
119+submitting to some panopticon in Mountain View? While the first step
120+in freedom is the right to be left alone, the second is the power to
121+form new intentional communities, to create and evolve a voluntary
122+definition of public space. We have no idea at all what people will
123+do with this power.
124+
125+General-purpose computing is digital freedom. And today, a cloud data
126+center is the technically optimal locus of computation. The cloud is
127+always on, always available, never loses data. Hosts are sometimes
128+attacked; but they never intentionally tamper with their virtual
129+computers. The cloud can never be secure against a global adversary;
130+but most people don't have a global adversary. A single portable
131+platform provides "herd immunity" for the few who do need direct
132+physical control over their main computers.
133+
134+Though even laptops are atrophying into mere browsers, mass-market,
135+general-purpose computing on the client side remains an endangered
136+species that must be protected. But on the server side, this species
137+has never even *existed*. There has never been anything like a
138+mass-market personal server. Why not?
139+
140+## Freedom is an engineering problem
141+
142+Urbit is not a difficult idea. Urbit is like a flying car: the idea
143+is not the hard part. Almost everyone we talk to about Urbit turns
144+out to have had pretty much the same idea themselves. The problem is
145+building it.
146+
147+A server is a computer. It's running some operating system. This OS
148+is a flavor of Unix. There are no alternatives. It's connected to
149+some network. This network is the Internet. It has no competitors.
150+You can have a personal server, if it's a Unix server on the Internet.
151+
152+Almost no one thinks being a Unix system administrator is fun. Not
153+even Unix system administrators think running an Internet server is
154+fun. So the personal Unix/Internet server is like the personal
155+bulldozer. This is not a consumer product. Any number of engineers
156+can't turn a bulldozer into a bicycle.
157+
158+How did we build the personal bulldozer? We didn't. We started
159+from scratch. (The people who built the first PCs didn't start
160+with a mainframe OS, either.) We created a new platform: Urbit.
161+
162+Urbit doesn't compete with Unix and the Internet. It's a new,
163+opaque layer on top of them. Your browser runs on a native OS,
164+but it doesn't give Web apps any way to talk to the native OS.
165+Urbit is like a browser for the server side: code within Urbit is
166+formally isolated from the platform it runs on top of.
167+
168+Your urbit is a Unix process, in a data center or your PC. It sends
169+UDP packets over the Internet. It can both load and serve web pages
170+over HTTP. Except for character sets and crypto, nothing in Urbit
171+reuses or depends on any 20th-century code.
172+
173+Urbit is a complete, clean-slate system software stack: a
174+non-lambda interpreter (Nock), a functional language (Hoon), and
175+an event-driven OS (Arvo), with its own encrypted protocol
176+(Ames), typed revision control (Clay), reactive web server (Eyre)
177+and functional build system (Ford). The full system, including
178+basic apps, is only 30,000 lines of Hoon.
179+
180+The first end-to-end prototype of Urbit took one engineer eleven
181+years. The current beta took three more years, with about three
182+engineers on average. We think we've solved all the real CS
183+problems. But it will take more than our small team to deliver a
184+polished, user-friendly Urbit that can actually challenge the
185+modern web.
186+
187+## Where we are, what we're doing
188+
189+Urbit is in feature freeze. It's a minimum viable product in
190+early beta. It still needs quite a bit of fit-and-finish work.
191+We certainly don't recommend it for end users or consider it in
192+any way secure. But it's fun to play with, if you're a nerd.
193+
194+This summer, we're making the switch to an open and transparent
195+development and specification process. A system as unusual as
196+Urbit can't be invented in public. But it has to be finished and
197+maintained in public.
198+
199+Addionally, we're creating an open political and economic process,
200+with a small, fixed-price public presale of Urbit address space. Join
201+us and help make this future actually happen.
202+
203+To keep reading, learn more about [Urbit's address
204+space](../address-space); share our vision of the Urbit user
205+experience, from the [top down](../vision) or the [bottom
206+up](../magic); check out the [development roadmap](../roadmap);
207+evaluate Urbit's [beliefs and principles](../principles) or its
208+[interim constitution](../constitution); or learn [who we
209+are](../company).
210+
211+(For technical readers, check out our [developer documentation](/docs) or
212+the [CS paper](#)).