This seems like a pretty shallow take. Urbit is (or aspires to be) a platform for server-side use cases; complaining that it's not decentralized is kind of off the mark. But I (more bullish on urbit than 95% of HN, I suspect) agree with this bit:
> the deepest problem with Urbit: it’s light on actual substance.
At heart, urbit is a platform with no compelling software for it yet, and hence subject to the chicken-and-egg problem that was on the HN front page again today[0]. And urbit is famously hard to develop for, which ought to be enough to spell its doom. But I still check in on it every year or so, because it keeps on plugging away, and what it does have (exactly-once messaging, built-in crypto, and a goofy-but-it-works identity/networking system that allows you to do away with app level authentication) is kind of nifty and it's still not totally clear that it won't go somewhere eventually.
In fact, since I'm in my cups and I've got a head of steam, and since I know urbit people will read this no matter how fast it scrolls off the front page, I'll make my pitch for the use case that I wish they'd work on: plain old sharing a file with people, a la social media.
Why do so many people use Facebook? Because they want to share a file with a friend. But to do that well requires owning and running a server, and some way of authenticating people, both of which are hard. So mostly people just farm the "serve files to certain people" task out to companies like FB to handle.
Well, Urbit is a personal server, a thing you use to do server-based stuff for a person. This should be exactly in its wheelhouse. And I think it's fair to say that in this case at least, it delivers; "serve files to certain people" is indeed trivial on urbit. Any urbit app can authenticate a user and serve a file to them natively, thanks to the afforementioned goofy networking scheme[0]. And that's all I want it for: a sort of rudimentary FB clone (at base, let's say a "upload a file to your urbit and configure it to be automatically shared with certain people" widget, and a "scrolling feed of files that other urbit users have elected to share with you" widget) to use it to share files with people, without either becoming a competent sysadmin nor involving an enormous ad corporation.
Such an app would be, if not trivial, I think at least straightforward. If you eschew stuff like comments and moderation, the backend would be like 20 lines of hoon. I admit, it would only work with other urbit users, and hence be kind of useless to people who don't know anyone on urbit. I know that's the conventional wisdom: no one will build good software on a platform until there are users there, so build a community. And that's certainly what they have been trying to do. But I don't want to join a community, I kind of have one. You're much more likely to get me to convince my friends to try a new app than to get me to make new friends.
0: Urbit's goofy networking/auth scheme in one sentence: "What if there was an exact 1:1 mapping between valid IP addresses and valid usernames, and it was stored on the ethereum ledger, and they're expensive enough be unprofitable to troll/spam from."
Well, you know how client/server stuff works, right? The whole "client/server" paradigm exists because it's necessary; some use cases can't be done well just from client software. Sharing a file is such a use case. Sending a file isn't - you can just email something from your phone - but sharing or making a file available is hard for various reasons (e.g. client software isn't usually 24/7 available, it is often behind a NAT and difficult to route to, etc).
So, we need a server to share a file. There's a lot of ways to do that. On one end of the spectrum, you can do it all yourself: buy a computer, put it in your basement, connect it to the internet, install a webserver, move the file to it, write an index.html file pointing to it, write a .htaccess file to limit who can access it, and send the credentials to your friends and family. On the other end of the spectrum, you can pay someone else to do all of it by signing up for Facebook. In between are a lot of options. Urbit is one of those options, and (obviously) the people who make it are trying to make it the best option for at least somebody. What I was trying to do in this drunken rant, er, crowd-sourced user story, was to lay out how it might be implemented, in order to take advantage of urbit's strengths.
That comment is not an explanation of what urbit is or what its strengths are; it was written towards people who already know, and so glosses over that. I have a near-done "what is urbit and what are its major pros and cons" blog post I should really finish up someday, but this ain't it...
Um. Go to Facebook. Type in some text or select a photo and hit "Share". You have just shared a file with your friends.
(I'm not being snarky, but it seems you misunderstood me and I'm not sure how. Perhaps you thought I meant "share a file" like pirating movies or something? I just meant in the general sense that anything on a computer is a file, and sharing means letting someone else access it, which is sort of the core feature of any social media site.)
>If Urbit were reimagined in 2021, it would be running on Sia or Ethereum: your data is stored on the blockchain, your applications are running as perpetual smart contracts, and you can access it from anywhere in the world with just your private key.
This is a fundamental misunderstanding of what smart contracts do. Every miner runs every smart contract every time something is executed. It would be disastrously expensive to run a server on top of Ethereum.
Urbit's network infrastructure was "reimagined" to use Ethereum for identification.
>Hosting on my own hardware is annoying, hosting in the centralized cloud defeats the whole point.
Is there actually a third option? I'm wondering of the author simply misunderstands Ethereum.
>Is there actually a third option? I'm wondering of the author simply misunderstands Ethereum.
The issue is Urbit bills itself as 'decentralized' but isn't. If you buy Ethereum and disconnect from the Ethereum network your Ethereum doesn't go away but with Urbit you're just running your own server. Urbit should just call it what it is, a software stack. It's not 'decentralized' or an 'OS'. It's a software stack that requires a conventional OS and server.
"Just running your own server" is the proper meaning of "decentralized" [0].
Urbit has a literal operating system named Arvo built on top of a virtual machine named Nock. The terms are used technically; it's not trying to compete with Windows.
That article goes straight into peer-to-peer and file sharing so it is hardly surprising that most people expect a decentralized platform to exist primarily to eliminate SPOFs, i.e. provide redundant access to data of down peers.
I’m curious as to your definition of decentralized here. It seems you’re using the term to mean “global commons”, when I generally would use the term to mean something more akin to “permissionless” or “exhibiting a resistance to control via a singular entity or small group of entities”. Urbit is certainly decentralized by either of the two latter definitions, though a particular Urbit server surely wouldn’t constitute a global commons, which seems closest to your definition.
Maybe Sia/Filecoin/etc is a better example; every node does not store a copy of every piece of data but the blockchain is used to coordinate storing a reasonable number of copies. You could imagine using a blockchain to coordinate computation in some kind of decentralized attack-resistant way although I've never seen this done and maybe it's not feasible.
A server could use either service for storage (and sharing). You can't run Urbit's operating system on top of either, the part that executes code is missing.
Not on Solana. In fact, people are already writing software (metamask) that uses on chain computation, file storage with ipfs and even could support an blockchain controlled CDN for distribution (https://media.network/).
All with gas prices that literally fractions of a penny and 50k+ transactions per second.
Does it still require payment to get a “proper” identity? And if you actually want to run something, well, I hope you have your wallet ready…
And not to mention the insane efforts they put in to use uncommon and bizarre terms for everything.
imho, Urbit is a scam and a cult, created by a man with a serious hardon for monarchies (non other than Curtis Yarvin) who figured that he could create his own religion and become king. Or at least larp as one.
I tried it. I see no technical merit in it. What does it let me do I cant otherwise? Nothing. Even the things it does, it does poorly.
p.s. urbit threads on hn are full of duped accounts promoting the platform so beware.
Does it still require payment to get a “proper” identity?
Yes, scarce identities are an intentional anti-Sybil feature.
And if you actually want to run something, well, I hope you have your wallet ready…
Well yeah, CPUs do cost money. Or you could just run Urbit on the computer you already have. It's easy to say that computing should run on the kindness of strangers but those systems are even more immature than Urbit.
Urbit rant posts never fail to entertain. Lets take a step back and ask us why the Urbit dev team has been going on for years. Where do they get the funding from? What is the motivation if their mission fails to deliver?
"The final nail in the coffin is that – opposite to the real world – in Urbit, 0 is a truthy value, and 1 is falsy. This is the most pretentious, harmful, arrogant, and vain design decision I have seen in years. It underscores that Urbit is not a serious effort but a vanity project."
I wouldn't count strcmp, etc. It returns < 0 if str1 is shorter and > 0 if str1 is longer. Returning 0 means there is 0 difference. That's not a True/False.
"0" is not a "truthy" exit code for a system call, it rather denotes the absence of an error.
In my view, a value X being "truthy" means that `bool(X)` evaluates to TRUE, or `if(X)` gets executed.
In lambda calculus, true and false are conventionally represented as functions
lambda x. lambda y. x
and
lambda x. lambda y. y
so that "if b then x else y" is represented by "b x y".
When identifying booleans with bits, it seems natural to write this as "bit x_0 x_1" rather than "bit x_1 x_0" where the arguments seem to be in the wrong order.
This is one possible justification for identifying true with 0 and false with 1.
i don't really see why. if anything is insane, it's interpreting a number as true or false. but if you're doing that anyway, then you pick a number for false, or you pick a number for true. 0 is a natural number to pick for whichever truth value, because it's the base case of the natural numbers.
it's unconventional, but no more insane than 0 = false, which, again, _is_ insane, but conventional.
> Right now it’s just a platform to make peer-to-peer servers.
Show me any other platform that allows one to easily build, distribute, and run long-running p2p services that communicate strongly typed data over the wire, or any strong decentralized identity system that can even begin to go toe-to-toe with Urbit.
your data is stored on the blockchain, your applications are running as perpetual smart contracts, and you can access it from anywhere in the world with just your private key
It wouldn’t. Author is wrong, Sia doesn’t use the blockchain to store data, just to register storage contracts and mediate storage fees. Sia hosts store O(Pb) of data on servers around the world.
When this article states "If Urbit were reimagined in 2021, it would be running on Sia or Ethereum" I immediately thought, "Wait, you can use Ethereum for decentralized storage?" I'm not following the blockchain space closely, I confess, but I hadn't heard that.
And, Ethereum's web site has a page called "Decentralized Storage" that talks about how it can be used as one! Except that said page goes on to say, "When it comes to large amounts of data, that isn't what Ethereum was designed for." Well. Basically, any blockchain system that requires every copy of the blockchain to be complete is not going to be really great for shoving hundreds of gigabytes -- let alone terabytes -- of data into.
Sia -- which I hadn't of before -- seems like it's explicitly positioning itself as a blockchain-based decentralized storage provider, and is closer to what the article suggests Urbit would be like if it were reimagined now. I don't think Sia's web site does a particularly good job of explaining (or selling) it, but, well, neither does Urbit's.
> the deepest problem with Urbit: it’s light on actual substance. Urbit seems to have spent many years developing fundamental infrastructure – programming languages, tools, etc. – that are a gigantic maintenance burden and orthogonal to its actual mission. That’s a huge distraction, and as a consequence, the “stuff you can do with your Urbit server” section was unimpressive.
This is really the crux. There's nothing on the urbit website but obfuscation of this fact. It's a vanity project reinventing everything from scratch, and the "use cases" are post hoc. If they actually cared about those use cases, they'd do things differently.
Urbit is TempleOS, but written by a neoreactionary instead of a schizophrenic. It's a weird hobby project not a serious attempt to accomplish anything, and it shows up on HN way more than the actual substance merits.
You know whats most interesting about Urbit to me? That no one, as far as I am aware of, given that its “discoverer” is a conservative, has started a cryptocoin for it. Maybe monarchism is too far from anarchism..
(“One is too far from Zero”)
(EDIT: I found a website stub for a urbit cryptocoin though, so Someone must have had an a half baked thing goingoing
Yarvin hates cryptocurrency and you can read about it in the very old Urbit documentation. More recently, Urbit identities are NFTs traded on Ethereum so they got there eventually.
What was that blog post the other day about the appeal of simple-but-wrong solutions? Urbit falls into that category. Hoon is supposed to be vastly more productive than "legacy" programming but it's been available for years and people have only built simple apps.
The greatest enemy of upending norms and forging new territory isn't people who are stuck to the old ways, but people who promote or apologize for objectively bad things just because they are new or edgy. When people hype things that stink they obscure things that are actually better and justify others sticking with the tried and true.
Sometimes a new thing is just bad and saying you think so can add value to the world -- especially in environments where there are potentially billions of dollars in incentives for people to hype otherwise.
> stated mission of upending norms and forging new territory
HN has no such stated mission. But even if it did, that doesn't mean that every upending of a norm or forging of new territory would be view uncritically. Nothing happens in a vacuum, and new things aren't always better than the old.
There's a topic that comes up in the body of this article that is always irritating to read. I won't mention the topic, but a parody is below-- see if you can tell which sentence I'm referring to:
"Greetings, reader! I am a parasite that swims around in my host's conceptual understanding of an esoteric technology with an incredibly narrow set of use cases. My purpose is to spur writing about me in blogs and forum comments in an attempt to rationalize my existence and exaggerate my use cases. This decreases the likelihood that any of us parasites get pondered and ultimately suffocated with conceptual nail polish by a particular host. And that increases the importance of this esoteric tech in the mind's eye of the hosts. So if another parasite is getting fed by reading this, well bon appetite, my friend! If not, please wait patiently for a host near you to explain this exciting investment opportunity."
> This is where Urbit shows its age: it has no ambition for decentralized server ownership. The notion of a user running their own server, having to guarantee its uptime, backup its data, etc., is antiquated. If Urbit were reimagined in 2021, it would be running on Sia or Ethereum: your data is stored on the blockchain, your applications are running as perpetual smart contracts, and you can access it from anywhere in the world with just your private key.
Where does the author think blockchain crap stores things? Hint: It's on other people's servers.
Sure, all data is on other people's servers, but the point is that you have tamper-proof, globally distributed, redundant copies of that data. Storing a piece of data on Ethereum is way different from hosting it on a single cloud machine.
Storing data on Ethereum is absurdly expensive, but further, it simply provides a different value proposition than running your own personal server. These ideas aren’t mutually exclusive, nor can they reasonably serve the same needs.
> the deepest problem with Urbit: it’s light on actual substance.
At heart, urbit is a platform with no compelling software for it yet, and hence subject to the chicken-and-egg problem that was on the HN front page again today[0]. And urbit is famously hard to develop for, which ought to be enough to spell its doom. But I still check in on it every year or so, because it keeps on plugging away, and what it does have (exactly-once messaging, built-in crypto, and a goofy-but-it-works identity/networking system that allows you to do away with app level authentication) is kind of nifty and it's still not totally clear that it won't go somewhere eventually.
0: https://www.joelonsoftware.com/2000/05/24/strategy-letter-ii...