Plunder and Urbit
gist.github.com
gist.github.com
I know I'm shouting into the void here, and under a pseudonym to boot, but this is an active FOSS project that real live people work on in their spare time because they hope it'll be important and useful. I like to think it's a convention here not to shit on such people for comedy value.
For me it’s also a red flag: Neither system seems to be designed to be approachable. One or two brand names are OK, but these systems seem to use them way too liberally.
They may not grasp every little thing, but they would be likely to get an understanding.
But the use of deliberately weird terms for things makes it less possible for those who likely have overlapping domain knowledge to understand these systems or posts about them.
But there's also probably some new and interesting criticisms one could make? Perhaps about the actual project described in the article? And maybe after having read it and understand it? That doesn't seem like too high a standard.
The fact is that’s a major red flag.
Also I’m not sure you get to claim boredom with the answer to a question you directly asked.
And that's not because I am beefing with him or have any personal beef with him. He's literally not there anymore. He went away, years ago.
this would be a true "personal server", and it will achieve much more than Urbit ever could.. except insane jargon at least...
Urbit is really an outlier, with jargon/innovation fraction far exceeding anything else I have seen.
Behind the impenetrable jargon, Urbit has always put a lot of emphasis on this "digital real estate" aspect. For example:
"Urbit IDs are property, and we think of the entire registry of Urbit IDs as a vast territory of digital land." [https://urbit.org/overview/urbit-id]
It's not exactly an altruistic open source project if your fundamental motivation is to become a member of the digital landowner upper class.
(And if you scratch the surface of Urbit, you'll find the creator is a reactionary extremist who has said he prefers feudalism to democracy. Those ideas are embedded in the platform design that makes lip service to decentralization but actually concentrates control to the very few.)
Thirty years ago I would have been on this train. No question. It's giving me early 90s internet optimism techno-utopia feels. Now I'm older and a lot more jaded, I think I'll give it a miss and set my sights lower with something like Gemini for my weird niche internet protocol needs.
The deliberately impenetrable jargon reminds me of 90s-era Wired's reader-hostile graphic design. We're so cool, we can put barriers in your way and you'll clamber over them to get to us. That's a marketing technique - I've heard it called challenge appeal.
All federated solutions need some kind of trust model. Money is not, at first glance, a terrible answer to that problem (hashcash for email, and some web forums charge a few dollars for accounts just to keep the spammers out). Mastodon delegates trust to the instance admin, Scuttlebutt limits its web of trust to two degrees. But this elaborate tiered model is just unnecessary - they must have considered, and rejected, proof of work or many other possible solutions. It's sad that I assume bad faith because of someone's political position, but so it goes on the post-enshitiffication internet. The trust has already been eroded.
Isn't it interesting that a piece of software can be the concrete embodiment of a philosophy?
Probably, as they were asking for it by doing their work in cultish style. If you want to change the world, you need people to accept the change you want to bring, and for that you must make it understandable, approachable for them.
Why would I need to put a lot of effort to be able to be part of a discussion which is seemingly not intended for me? If the ideas behind it prove to be useful, they will eventually resurface/be done by a more welcoming/industry standard way. Then it will be worth the effort. Until then if I want to waste my time on esoteric nonsense I go look at the Woynich Manuscript or read schizo larp on /x/. (Or just try to keep up with the SV JS scene where everything is reinvedted ignoring every industry standard ligo and is named crazily)
> this is an active FOSS project that real live people work on in their spare time because they hope it'll be important and useful.
So what? There are lots of other project done on the same basis, and for most of them you don't have to learn a new dialect just to understand what their work is about.
That's funny, and it is OK to make fun of it.
I love the intention and think many readers here on HN are unlikely to appropriately value Urbit (and decentralization broadly), but it seems some of Urbit's lessons were not learned.
As for decentralisation, can a system that appears to be so explicitly bound in hierarchy actually be said to be decentralised? Certainly it seems to be a distributed system, but AFAICT the actual power in the system is entirely centralised, though delegated through various layers. Maybe I'm just not reading it right, which would be their intention I guess...
Plunder is a definition of what they want to become a foundational system of computation that will allow past, current, and future systems to run any program.
This is achieved by three parts:
Plan is the computational model. It defines four things, pins (basically, global singletons), laws (defined functions), apps (partially applied functions), and nats (natural numbers). There are 5 axiomatic operations defined as well.
Sire is a language used to bootstrap the plunder system. I don’t get how that works yet but it seems like an implementation detail we don’t need to know unless we’re developing a new plunder virtual machine runtime.
Cogs are processes running in the virtual machine runtime that interface with calls to system hardware. They’re the programs you’re running on your virtual machine, like a message (email) client. I don’t get how this works yet, but again that seems like a detail for plunder cog programmers.
The rest of the strange words are generally urbit terms that aren’t a part of plunder. Arvo seems like the urbit operating system, nock is its bytecode like plan, hoon is a language that compiles to nock, and terms like noun or subject are just terms within the urbit model like pin or law.
None of this stuff is alien language. I think the concept here is that the program is the data is the state is the program. If you look at the state of a plunder system it’ll effectively be a big serialized string of the plan language.
The power here is supposedly that no authority can override your desires on your plunder system because it will eventually be a frozen spec, and so virtual machine runtime implementations that are correct must run any program from any time after the freeze. That means a vm I make today will run programs a thousand years from now (probably inefficiently) and a vm created in a thousand years must run programs from today. Theoretically speaking.
(1) maintain the tradition (mistakenly) established by Urbit
(2) create an artful and amusing atmosphere for the ingroup
(3) filter and keep curious normies out
None of these are reasons I can get behind.
I've been following along w/ Plunder for the past 10ish months out of personal interest, and I find the terminology to be about as straightforward as one can expect for a technical domain which is quite complicated.
perhaps this document is more straightforward? feedback is welcome.
https://git.sr.ht/~plan/plunder/tree/master/item/doc/PLAN.md
No, your traditions are a mistake. (How do you like it?)
Plunder is not an obscurantist project, and intends to be straightforward and easy to understand.
~/projects/plunder ‹master› » grep -i urbit -r . | wc -l
5
I've been following along w/ Plunder for the past 10ish months and I essentially "bounced off" of Urbit's (imo) opaque terminology, opting to learn Plunder instead as it seemed much more concise and better conceptually distilled. not knowing Urbit has not been much of a hindrance. so I think the "guilt by association" you are seeing comes more from the framing of the above gist, which was aimed at an Urbit audience & cross-posted to HN by someone not associated w/ Plunder.The whole thing was originated by a man (Curtis Yarvin) with some very questionable political views, and even though he isn't directly involved in the project any more, he seems to have baked some of them into his design of the system.
It has been around for about 13 years and is one of those "we're going to change everything!" projects that never really gets off the ground, but has a tranche of true believers.
At this point it's probably something to be filed in the same sort of mental folder as TempleOS, though with less religion and more authoritarianism.
From a quick read, 'Plunder' appears to be an attempt to use similar ideas to make a slightly more functional system. As such I'd regard it as a little like FreeZone scientology - a splinter group who can see the issue with the church, but still believe in the fundamental model for whatever reason.
It’s a system that’s explicitly designed to be really hard to understand and use. Why would that get adopted? How will that succeed?
Then they moved it all to Ethereum in 2018 but I had stopped giving a shit so I don't know what happened after that.
I should also note they did an auction of address space prior to Ethereum, seemed like they were trying to get in on the crypto grifts. It's all completely incomprehensible to me even though I used it for a good year or so lol
In this it’s closely related to Scientology and cryptocurrency. Urbit is a distributed computing platform in the same sense as Scientology is a mental health program, or Bitcoin is peer-to-peer electronic cash. Sure, there’s technically someone using it for that, but for most people the value is in the social belief system.
> It should be obvious that, although I am not a white nationalist, I am not exactly allergic to the stuff.
His projects should probably be viewed through the lens of what he is trying to accomplish more generally.
2. AFAICT some of Yarvin’s ideology, particularly Neo-feudalism, is explicitly baked into Urbit’s design.
The Linux community has broadly decided that the answer to that question is yes. No corporate Linuxes would touch it any more, and it is even scheduled for removal from the kernel.
As someone who thinks urbit would solve an important use case but is too hopelessly weighed down by the stench of its founder to go anywhere, a good fork seems is a reason for optimism, so best of luck Plunder team!
If you can't get this, I don't see how you're even here on HN, honestly.
While reading this, the list of words I'd never heard before as a software engineer grew very long. I started looking some of them up, found a glossary, and that only served to increase the list of unknown words exponentially.
Jet gate core Hoon battery. I still don't know what I'm dealing with. It sounds like a really awesome system on the one hand, and sounds like smoke and mirrors on the other.
What are Plunder and Urbit, actually?
> "Do we really have to be bound by what he received from aliens during an acid trip?"
Urbit, and plunder, TLDR from someone who dipped their toe into urbit a year or two ago (marking things I'm still uncertain about with "?"):
A from scratch system and networking "protocol"(?) that features its own micro-languages. You can write programs which communicate with each-other, and their state is somewhat synced between users(?), meaning it's possibile to pick state back up from elsewhere as a user. However this is all underpinned with a purposefully cryptic language, horrific political stances by developers, and really not developer friendly interfaces for creating programs. Also, since urbit was really the first attempt at this idea, it does not scale very well and suffers from major scalability issues relating to the amount of data being thrown around by users and their apps on the network.
Honestly, writing this out I've probably done a shit job at explaining it but this is what I thought about it after using it for 6-7 months as a hobbyist. I dont use it anymore, but I'm still quite interested in the idea of a "from scratch" micro language that can run on anything. The idea of Perma-computing[^1] I guess?
Urbit terminology is obscure, probably intentionally so. (As an example, Urbit picked 0 = true and 1 = false, just because it's different than what you're used to.)
Nock is a virtual machine that defines only a few primitives. If I recall correctly, there is no "add," only +1. If you want to add 2, run +1 twice. The intent is that the VM is so impossibly simple that there is nothing to add. Just express whatever new semantics you want in terms of the frozen core.
A "jet" is a JIT-compiled version of a Nock expression, via pattern matching. The expectation is that the Nock interpreter will notice common patterns and execute some identical, but faster, computation under the hood to evaluate a jet. To continue the example, repeated application of "increment" could be lowered to the machine's add instruction. (However, I was under the impression that the pattern matching happened automatically, but it apparently involves Nock primitive 11, which is... less elegant. Sounds like Plunder gets this part right.)
Hoon is a small language on top of Nock ("typed Nock" if you like, but I understand that also macro-expands to pure Nock). I find it absolutely impossible to read because it makes extensive use of sigils ("runes"). A gate is a Hoon function. An arm is basically a member method or namespace member function. You get the idea.
The article does a good job of using the more-standard term to describe the remaining pieces: arvo (kernel), vane (driver), etc. Since Urbit is so opinionated on these, my prediction is that eventually someone is going to steal one or two Urbit terms to describe something another system does - probably "jet" if I had to guess - and that will be Urbit's ultimate legacy.
they were also caught cheating, e.g. when the jet for markdown had different bugs to the alleged Urbit version
Here is a recent attempt to explain the paradigm succinctly: https://git.sr.ht/~plan/plunder/tree/master/item/doc/PLAN.md
Very open to feedback as to how to express these ideas more clearly.
Plunder is a new programming model where programs run forever.
Hardware restarts are invisible to the software, as is moving a running program from one physical machine to another.
Because of this, programs don't need to save their state into an external database, they can simply keep everything "in memory", and that state will be synchronized to disk transparently.
https://git.sr.ht/~plan/plunder/tree/master/item/doc/PLAN.md
This document was written by an Urbit dev, and the Urbit community is the target audience.
The conversation here seems to be mostly shitting on Urbit with the usual HN critiques.
However, Plunder is only tangentially related to Urbit.
It's the same paradigm, but totally different otherwise. Heavy Haskell influence.
The project is still mostly underground, but I'm happy to answer any questions.
It's interesting. Not something I think will affect my day to day life, but in a thought-experiment, LISP-y sort of way I can see why a certain kind of coder might find such a system intriguing. I imagine such a coder is probably into language design, lambda calculus, functional purity and formal verification rather than being on the 'just get things done' end of the spectrum.
I also don't think I can see such a design ever doing anything very quickly, as every operation is necessarily committed to disk. I guess that's where Jets come in...
It's amusing to contrast this with the general mood in programming where we strive to make programs ephemeral so that we don't care what's in memory, things die often and we just re-start them when we feel like it, allowing them to rebuild their internal state.
The win is basically that the entire stack gets much less complex. Network, database, and business logic all operate within the same model.
For example, once the system is finished, building a full p2p chat should be possible in a couple hundred LOC.
The goal is somewhat political, to enable people to build their own social software, instead of depending on finance for everything.
> I also don't think I can see such a design ever doing anything very quickly, as every operation is necessarily committed to disk.
There is overhead to be sure, but it's nowhere near as bad as it sounds.
In practice, we don't need to fsync every input. Each syscall chooses if it should wait for a sync before running effect. Sync only blocks that effect, everything else continues to run.
For example most REPL IO doesn't need to wait for a sync, but a network transaction does.
P2P chat doesn’t seem like a very lofty goal at this point.
I’m sure there’s a lot more to your platform than PLAN, providing all sorts of facilities, but at that point you’ve kinda scuppered the “execute anywhere, forever” aspect of your model IMHO, because it relies on quite a complex VM to provide the simple coding environment.
Best of luck to you, but I’m still thinking “nerd trap” rather than “revolutionary tech”.
"A lisp machine with fully automatic persistence. No database or filesystem needed" is actually a fairly accurate description.
I'm glad to see Plunder having another go at the ideas Urbit had, some of it was really interesting and it'll be cool to see how these ex-devs run with it.
The idea of Urbit is very interesting, the initial older premise was sound. The current execution is a fallacy of its own goals. It does not replace computing. It does not even proxy it. It literally is built on top of everything else which it directly against the impetus of the project in the first place.
A total new way to solve computation with no baggage was a great vision; especially one that was a sort of Maxwell’s minimally defined set of functions that represent computing forever and ever in the most reducible form. The ideas still have legs. The project doesn’t. It forked into a territory that is unable to fix itself. It would have to abandon all “jets” and all bs cryptohype nuisance as well.
Love the original design.
Can you elaborate?
> The data model of Nock is the noun (*), which is either a natural number (@, called an "atom") or a pair of nouns
> The noun is famously simple; it competes with the list as the simplest possible recursive datatype
All code and all data is like that. So to me it's basically a Lisp-y networked operating system.
This also makes it very inefficient, which the doc explains. But the idea is to build everything on top of the most minimal axioms, which never change.
Urbit solved this with nouns, which is arguably a substantial innovation. PLAN (in the author's view, which I find convincing) improves on this: https://git.sr.ht/~plan/plunder/tree/master/item/doc/PLAN.md
Have you seen Unison[1]?
Unison seems like a much more interesting approach to making functions "serializable" and functional programming acquiring distributed capabilities almost transparently.
http://moronlab.blogspot.com/2010/01/urbit-functional-progra... Isn’t the link I was looking for but I think it’s the blog.
It always seemed a big no-no to couple the VM and OS to the language. Language diversity is a good thing.
What would it take to build something with the interesting properties of Urbit on a more normal, not-purposefully-obscure stack?
As far as I understand, Guix has deterministically built the whole ecosystem from a 357 byte bootstrap
https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-...
OK so now you have, C compilers, Python, JavaScript, etc.
---
Now what do you need to do to Linux? Do you need to get rid of time() and rand() ? (Not sure if Urbit is functional like that)
---
What about the networking? The whole network has a single state?
So is this like if you had all of these separate Linux systems all writing to one big distributed git repository or something? I never really understood how the networking is done.
---
This leaves the identity parts; I would also leave out the crypto parts too ...
But as far as language / OS / networking, I'm sorta interested in what a "conventional" system of this type would look like. I actually think it has some practical applications for some kind of functional distro like Guix (since these distros all become networked systems eventually -- they are not really single-machine systems)
I also wonder if this already exists -- are there "non-obscure" and "non-ideological" systems like this? When you add some language diversity, it becomes more interesting to me.
And Nix is a package manager / build system, while Urbit is more of a "distributed Lisp OS", with networking and identity
Or at least, I'd like to read a post that's not so clearly driven by personal animosity :-P
---
FWIW I briefly worked on Google's Bazel in ~2006, and all the Nix ideas were there, but nobody referenced Nix. They referenced Vesta (and other systems):
https://en.wikipedia.org/wiki/Vesta_(software_configuration_...
from 1993. Bazel is way faster and more distributed than Nix, probably because it's just had much more engineering effort behind it.
The key point is really that Urbit is not a fount of hitherto unknown novelty, however Yarvin paints it (2010):
> So we have the Urbit problem: a frozen, universal, static functional namespace. In other words: a standard static functional namespace. Perhaps we are getting further into the rocket-science department. It is not hard to write a functional namespace. But how can we standardize a functional namespace? You will search the RFC Editor's shelves in vain for anything even remotely like Urbit.
http://moronlab.blogspot.com/2010/01/urbit-functional-progra...
As you note, this claim of novelty is nonsense.
New basic computing primitives are like punk rock bands: the first few are fresh and exciting, the ten thousandth is … not. Turing machines and Lisp were new and interesting, Urbit is Yarvin’s favourite toy language.
Urbit does well-understood things, badly.
I don't agree with the post that says it's a derivative of Nix. Nix is interesting, and there are some common ideas, but it doesn't make any sense to say Urbit derives from it
The 2010 post cites Arc and VPRI as other "software from scratch" efforts
What other "software from scratch" efforts have extended into the realm of networking?
Nix/Guix don't tackle that problem or claim to -- e.g. it doesn't make sense to write a chat app "running in" Nix/Guix because they are package managers, not OSes. The OS is Linux; the networking stack is the Internet.
---
It's also an open question how self-hosted Urbit really is though ... if there's not an instantiation of it that's outside of Unix/Windows/the Internet, then I would say it falls short of "software from scratch". Also, it seems like the current dev process leans heavily on cloud software; it's not really self-hosted or self-sustaining.
Is it really a computer, or is it an app running inside existing computers?
The uxn system that's gotten a bunch of attention on HN is interesting because it does run on hardware, divorced from Unix/Windows - https://100r.co/site/uxn.html (but it also doesn't tackle networking)
This is a critique that boils down to "they haven't achieved their actual goal in full yet".
What do you want? They have to start somewhere, and when you are reimagining an existing system from the ground up, there will necessarily be usage of existing tools even if your goal is to eventually supplant them. The whole point of something like jets is because you have to interact with what exists right here right now, at least with this there is a bright line between the new stuff (running purely in a nock/hoon VM), the bridge code, and the runtime for what ever operating system.
The fact that something like https://github.com/mopfel-winrux/NockPU (nock in hardware) is even possible is amazing.
There existed at some point progress towards the vision of Urbit, and as of now it is so far beyond that scope it has retreated from a static namespace of computational vapor ware into perpetual “non-maxwellian” ever-growing “ball of mud” bolted onto the status-quo of today with ever increasing complexity.
\(-.-)/
[0] https://web.archive.org/web/20160102004721/http://semarch.li...
https://awful.systems/comment/279#person-listing https://awful.systems/comment/287#person-listing
note how Yarvin claimed he was working on Urbit since 2002, but didn't drop any code until 2010.
EDIT: the Lemmy links above are hard to read. Here's a clearer cut'n'paste of the text and the claims: https://reddragdiva.tumblr.com/post/724590682207141888/so-it...
And here we are in 2023 and wikipedia says that as of last year the main thing it can do is ... a bare bones text-based message board. 20 years well spent!
TBH after looking into plunder a little more, this whole area starts to feel a bit like "Nano" and their excursion into trinary computation.
What are you trying to do? Deliver a rapid P2P application development environment with built in auth.
How are you going about it? By redefining computation from the ground up, discarding standard memory models, reorganizing the whole internet into a hierarchical...
Yeah, let me stop you there. Maybe do one thing at a time and demonstrate how great it is before moving on with this magnum opus.
I wonder what Urbit will win, and whether it is a prize worth chasing.
Making processes persistent has nontrivial overhead, so the Erlang model probably doesn't translate well in practice to Plunder.
https://unherd.com/thepost/curtis-yarvin/
It’s an interesting thought experiment but I agree with Churchill on democracy being a bad form of government, yet better than all alternatives I can think of.