Crypto AMA with Urbit (1.3.20)
Please give a warm welcome to Galen Wolfe-Pauly of Urbit!
As a reminder for everyone participating—please keep the discussion respectful at all times.
Galen—could you start off by giving us a brief bio on your background as well as how you got started in crypto? And then a short overview of Urbit and a brief update on your progress to date? We’ll then be off to the races with questions.
Thanks for having me!
I actually have an architecture degree from Cooper Union, but I've been building software since I was a kid. I grew up around a bunch of hippies and cypherpunks in Santa Cruz. I think I first learned about PGP in the 90s? Crypto-as-in-cryptography has always been interesting to me, so I've been following crytpo-as-in-crypto since maybe 2009 or so.
Urbit is a from-scratch OS built for individuals to run themselves. The basic idea is that rather than relying on other people to run our services, everyone should be able to run their own OS that lives in the cloud.
To get there, we built two main pieces of technology: an OS that runs on any unix machine with an internet connection and a decentralized idetity system.
The first Urbit network started in 2013 with a simple, barely usable command line interface. The project progressed pretty slowly from 2013 - 2017 with a tiny team. Over the past two years we've deployed the ID system to Ethereum and made huge improvements to both the system and the interface for using it.
There's lots to cover, but I'll let you guys drive by asking questions.
Who is your target demographic and why would they want to switch to Urbit from what they're currently using?
I'd say there are two groups of people we'd like to reach: hobbyists (as opposed to professional developers) and crypto-savvy people looking for a new social space.
(Urbit is not yet ready for professional software developers, but it's defintiely ready for people to experiment with — which I think is really different than trying to target developers per-se. So we stick with 'hobbyists'. Homebrew computer club attendees, in spirit)
For hobbyists, Urbit really is the only option for a totally personal cloud computing experience. There's no way to build something out of the old web stack and make it easy for an individual to run themselves. Both Mastodon and the world of dapps are good examples of this. They're still struggling to let the user run these things themselves easily.
For more casual or 'ordinary' users Urbit should do one thing that no existing service does: let you bring many forms of communication together in one place. We all have 5 - 20 messaging apps, document editors, and so on. While it's still quite simple and stripped down, the basic advantage of multiplexing these things can be really great from a usability perspective. We're not there yet, but as it improves, I think it will be an obvious choice to build new communities on Urbit.
What is Urbit planning for 2020? Bitcoin integration? A true decentralized own-your-own-data twitter clone?
My simplest, shortest answer is https://urbit.org/understanding-urbit/roadmap/
But to try to give an off-the-cuff tl;dr:
- A much more refined and complete interface and user experience
- Bitcoin integration and native payments
- Cleaner, more intelligible APIs for interacting with Urbit from the outside world
- A thorough security audit
- A much faster interpreter
Related - what do you think the speed of development will be from here? Is it at the point where progress speeds up? Are the fundamentals fully in place? I'm aware urbit started in 2002/3 - ground up VM, OS, functional lang, all quite ambitious....is it over the hurdle of having all the basics in place now?
This is a great, and really important question.
I think so, yes. Let me try to give some background.
Everything in Urbit is done from the bottom up, and in very careful steps. From the perspective of 2020 move-fast-and-break-things software development this is completely insane. All of us working on this are completely aware of this. But really great, long-lasting systems *have to* be built this way. Or, to phrase it another way, they simply always are built this way. I really like the way Andy Hertzfeld talks about this: https://www.notion.so/tools-and-craft/01-andy-hertzfeld
The reason that we're at the point where development can accellerate is that we're really working on the top of the stack now. All the APIs and interfaces for others to experiment with building things on top of Urbit. One of the most frustrating things about working on this thing over the years has been knowing that the thing just isn't finished, but wanting to proceed in public.
So, I think that this year we can start to ask others, in earnest, to really start playing with Urbit in a way they haven't before. And that's where the change in pace is going to come from.
(Sorry, the shift+enter thing still confuses me)
Yeah, I'm fascinated with urbit exactly because of this. Such a clean, complete break from traditional computing.
"The reason that we're at the point where development can accellerate is that we're really working on the top of the stack now." - thanks, that was the guts of my question.
This is a totally fair impression, but ultimately I hope it's not where we end up.
One way to think about Urbit is just as an event transciever and network. It's just this dumb piece of infrastructure that you send data to, pull data out of, and can pass data around the network. It's authenticated, repeatable, has all these other benefits — but it can also just be a black box. Like a personal mysql + node + filesystem that you use a private key to authenticate with.
From that perspective, you can use anything to push events in to your Urbit. They can come from a sensor, a video camera, a program you write in some other language, or from the ui we build and ship.
You don't have to write Hoon — unless you want to modify the system somehow. But we'd really like it to work well out of the box.
Your 2017 post about choosing to build on Ethereum was kind of funny because of how unhappy you sounded about it lol. Fast forward 2+ years, how do you feel? (this is the post in question - https://urbit.org/blog/bootstrapping-urbit-from-ethereum/)
One of the clearest critiques I ever got of us using Ethereum was that we were now subject to Ethereum's governance. And that Urbit's governance was really quite elegant on its own, without another dependency. This, of course, came soon after the DAO fork — but I think it's a pretty valid take.
It's also a pretty abstract one. Because yeah, Ethereum works really well. There are things about the integration with Urbit that are tough from a technical standpoint, but it does the job very well. And I think that we're using Ethereum for something that's legitimately really useful and interesting.
In the long-term though, I think the Urbit ID system should be hosted by Urbit itself. It would potentially get rid of the usability issues around gas costs and would obviously eliminate the governance issue.
And, as far as using another blockchain is concerned (since this comes up fairly frequently), there's really no contest in terms of practicality. It's the one choice for a general-purpose chain.
Anyway, overall it's a perfectly fine choice for the time being.
What is your dream hire in 5 years? Who can you *definitely* not get right now but hope to recruit then?
Such a good question!
Working Urbit full time requires a complete shift in the way you think about software development. Building software that isn't maintained by a company with an army of devops people is just so, so different. It's really hard to take professional software developers in the existing world and get them to think this way successfully.
Most of our most incredible engineers came completely out of nowhere, found Urbit, and we met them on Urbit itself.
There are certainly engineers I admire, but I wonder whether they would ever be up for making the shift in their thinking.
The honest answer is that I have no idea!
> The basic idea is that rather than relying on other people to run our services, everyone should be able to run their own OS that lives in the cloud
This roughly maps to the Web3 vision we hear about with networks like Ethereum, Near Protocol, Polkadot, etc. Can you speak to how Urbit is differentiated in its approach?
There's a really, really important technical difference between Urbit and these things. In Urbit, there's no consensus but everyone uses the same computing model.
This means that Urbit is completely secure and private to you, can run computation much faster (and at nearly zero cost), but can still do semi-trusted computation with other people on the network.
The other big difference is that we really think about buliding the whole stack — all the way through to delivering a great user experience. We're not just focussed on building this new computing paradigm / protocol, but we expect to make it useful both for ourselves and others.
What do you mean by semi-trusted?
Every Urbit OS node runs the same VM. So when we both run the same program, we can expect that each node gets the same result.
Let's say we're going to play a game of Go for fun. If you host the game, I can reasonably trust that your node is going to produce the right output. If we wanted to something more high-stakes, I could even require that you send me the sequence of computation that led to a particular result and audit it.
So Urbit isn't like a blockchain, but it's also much more repeatable than the traditional software stack.
Also, what exactly does it mean to have a bitcoin integration?
For a hobbyist programmer, it means that when you build on ton of Urbit you can easily use Bitcoin as if it were part of the OS. So, integrated games and payments, messaging and payments, geofenced sensor networks and payments, whatever you can imagine.
For an ordinary user, since you own your Urbit ID with a key that can also hold bitcoin, you can use a single, short name to transact with someone. I can have a conversation with ~poldec-tonteg, then send BTC directly to that address.
What is the current composition of the Urbit team as well as its hobbyist community?
There are two companies that currently work on Urbit: Tlon and urbit.live. I run Tlon, which is about 23 people (most of whom are in SF — and are more than happy to have you by for lunch!). urbit.live is just a few people.
It's hard to gauge the exact size of the community. We run a bi-monthly class to teach people Hoon (the native Urbit programming language) that consistently gets a few hundred participants. Our Urbit-hosted support channel is quite active and has a few hundred people that rotate through it. We started a grants program last quarter that consistently see grants get claimed pretty quickly as well.
I guess the other worthwhile metrics have to do with Urbit ID distribution. There are about 5500 people who own Urbit planets (personal IDs). When we went on-chain there were ~2000 people who own stars (infrastructure nodes).
Is that more or less what you're curious about?
I guess the other thing that may be worth looking at is the https://urbit.live/stats page and https://opensea.io/assets/urbit-id. Since these assets are live and transferrable, you can see the activity pretty clearly.
Can you talk a little bit about planets/stars - why do they have value? Is there a finite number of of them? What is the valuation of the entire Urbit network?
All networks need some addressing system. The addressing systems that already exist have a few problems:
- There are two layers to the names, such as with DNS and IP, which requires different authorities to issue different names and all kinds of tricky property issues
- Addresses cost almost nothing, such as with GMail addresses or Twitter handles, so spam ends up being a problem for a third party.
- There's no decentralized way of authenticating address holders so addresses can only be given out in a centralized way. This is true for both IP addresses and Twitter usernames, for example.
Urbit ID solves the first problem by simply making our routable addresses pronounceable. The Urbit ID 3,509,632,436 is also ~dalwel-fadrun. (Each Urbit ID also has a visual sigil. You can see a few at https://opensea.io/assets/urbit-id)
The second problem is solved by making the number of Urbit IDs finite. Since they're finite, they have some value. And since they have value, people would rather not lose them by spamming or abusing the network.
We solve the third problem by distributing Urbit IDs in blocks. The top tier are galaxies, each galaxy issues stars and stars issue planets. There are 256 galaxies, ~65K stars and ~4B planets. (2^8, 2^16, 2^32)
You can think of galaxies sort of like root nodes of the DNS, since they help Urbit OS nodes discover one another, distribute updates, and can vote on upgrades to the Urbit ID system. Stars are a bit like your ISP — they also help do peer discovery and distribute updates.
A medium-length explanation is here: https://urbit.org/understanding-urbit/urbit-id/
This is a super long term project/vision. How do you keep the team motivated?
Strangely, I don't have to! The team is so motivated to build this thing. It's kind of amazing. Most of the work just goes in to solving the hard problems we've set out for ourselves.
I was lucky to have good mentorship and coaching when the company grew in 2017, and our COO and CPO are amazing. I feel like we do a pretty good job of just making Tlon a really focussed and satisfying place to work.
Great to hear, thanks. I've met some of the folks from your team and the mission-driven bits really come across
I'm really happy to hear that. Everyone except one or two people found the project organically and were already community members before joining. I feel like everyone would work on Urbit whether or not they were getting paid — that's definitely true for me.
What are your favorite experimental apps on Urbit right now?
People have been doing such fun and weird stuff with the 'Publish' app that we built — which is kind of a hybrid blogging and notetaking app. I'd say that's by far my favorite. Chat has also been pretty active, and we have a link sharing thing in the works that looks good.
Much of what other contributors have been working on is deeper in the kernel. Those are things we've worked on internally.
Good stuff. We're up on time -- thanks for coming on today!
Yes certainly, really excellent questions. Thanks!