An Honest Look at Urbit(jayriverlong.substack.com) |
An Honest Look at Urbit(jayriverlong.substack.com) |
> 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...
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."
very confused by this read... what am I missing?
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.
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.
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.
UNIX Style Considered Harmful https://pubs.opengroup.org/onlinepubs/9699919799/functions/e...
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
How would this work if I had O(Tb) of data?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.
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.
(EDIT: I found a website stub for a urbit cryptocoin though, so Someone must have had an a half baked thing goingoing
Countless takes here in favor of established banks, for example
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.
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.
Are the HN critics wrong about Theranos too?
"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."
Edit: wording
Where does the author think blockchain crap stores things? Hint: It's on other people's servers.
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.
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.
Regardless whom does what, I think that a autonomous decentralized website should be possible to be ran on crypto services.
All with gas prices that literally fractions of a penny and 50k+ transactions per second.
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...
(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 you had said "creating an entry in a database" instead of "sharing a file" I don't think I would have had the same misunderstanding.
Sharing a file also has different connotations from uploading an image; when I upload an image to Instagram I am not doing it to share the raw file with someone so they can download it (though they certainly can if they use a browser extension to do so); I'm sharing it because that's where the people I know can see and interact with it.
main() returns 0 for success, but I expect that is owed more to Unix.
A lot of (e.g. Linux) system calls return 0 for success and an error value on error, but again that's more down to Unix than C.
"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.
what is a reasonable alternative?
(this isnt the same as 0 false and 1 true)
success vs. fail
is different than: true vs. false
They're both binary, but only one is boolean.In Hoon/Nock, `if(0)` literally gets interpreted as True. That's insane.
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.
it's unconventional, but no more insane than 0 = false, which, again, _is_ insane, but conventional.
i'm not bothered either way
(or, if instead of mod 2, you use min(1,a + b) to keep things in the set, then + becomes or )
To use 0 as true and 1 as false, you don't get nice things like this. It's not nice.
Well.. I guess * becomes or. But, + (mod 2) becomes, uh, xnor , and (min(1,a+b)) becomes, and...
ok well I guess that's not as bad as I thought.
Still a bad decision imo though.
a = ENV['A']&.to_i || 1
and then run the program with A=0 to set a to 0.(Any string starting with 0 that doesn't evaluate to a different number also works - but "0 but true" is specifically exempt from causing warnings).
DBI uses "0E0" instead, which I guess more reliably evaluates to 0 outside Perl, and still doesn't cause warnings.