• self@awful.systemsM
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    this is awesome! it fits well with a lot of the (mental) notes I made tracing Urbit history as part of a deconstruction of the earlier inroads technofascism made into the wider tech world. some loose notes to expand on a couple topics:

    • very little of Urbit is actually original. the language itself (called hoon if I remember correctly) is a lambda-calculus-heavy ML with a Lisp-style type system and runtime, with all the names changed to blur the line between Yarvin’s bad ideas and the ideas from computer science that Yarvin implemented poorly
    • notably, hoon inherits the computational inefficiency of lambda calculus but none of the safety of ML or the usability of Lisp. the resulting language is an awful cacophony
    • these sources were most likely used not because Yarvin is any good at functional programming, but because Urbit was a partially successful attempt to insert yarvin’s ideas into the conversation on places like hacker news, where paul graham primed a bunch of folks to accept both Lisp and right-wing libertarianism as the same bundle of ideas
    • the few unique parts of Urbit are interesting only in that they seem to be early attempts at things we’ve seen done by other techfash projects. for example, Urbit claims to be decentralized, but hoon programs are permanently linked to code controlled by the Urbit foundation (most likely still owned by Yarvin even though they claim otherwise), which compliant Urbit implementations must pull from the network (also controlled by the foundation). this allows programs to be effectively broken on the whim of whoever controls their access to their upstream dependencies, effectively making whoever controls the foundational Urbit libraries the rulers of Urbit’s neo-feudal network — and it’s built so that swapping out those dependencies is as hard as possible. I haven’t checked the implementation to see if it prevents changing the meaning of downstream programs yet (because hoon code is brain rot — see the example linked above)
    • I need to dig through Reddit and find the AMA, but yarvin claims that Urbit is the first and only functional language that can pull functions and dependencies from the network. this is false and he probably knows it — Eelco Dolstra’s foundational paper on the Nix package manager was published (this is from memory, probably not accurate) about a year and a half before Yarvin’s first blog post on Urbit, and there are enough similarities between the two that I don’t know if I want to call this a coincidence

    last time I brought this up on r/SneerClub, some weird fascist found the post and made the mistake of linking Yarvin’s original blog posts, which are kind of hilarious. I’ll dig them up and link them here when I can

    • Steve@awful.systems
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      where paul graham primed a bunch of folks to accept both Lisp and right-wing libertarianism as the same bundle of ideas

      PG gets off way too lightly as a mere annoying vc most of the time. There is plenty of sneer project potential in each of his pointed, dumbly confident “essays”

    • self@awful.systemsM
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      the links I mentioned:

      • yarvin’s Reddit AMA warning: high level of smarmy fascists. I can’t find the post where he claims Urbit is the only networked functional language so it might be elsewhere
      • the original Urbit spec, lots to sneer at here as yarvin decides Urbit is best described as how neo-feudal martians would write software
      • @[email protected] linked this in the masto thread but it’s too important not to link: one of Yarvin’s later tech specs with less obfuscation, which literally calls the network address space digital feudalism

      e: holy shit I revisited that last link

      The $2^64 question is thus: who are the dukes?

      My answer is simple. The dukes are the developers of Urbit. They created it - they get to own it. This is standard Lockean libertarian homesteading theory. Lend a hand - earn a slice. Thus Urbit, unlike most open-source projects, offers a rational motivation for contribution.

      this is the most mask off description of the fake decentralization crypto projects build on (and Urbit might have invented, unless we can dig up prior art) I’ve ever seen

      • self@awful.systemsM
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 year ago

        I decided to head the acasualrobotgod off at the pass and torture myself by reading through the early Urbit spec in full (whose content is completely different from the one @[email protected] posted), and I found something interesting; the info I gave above about Urbit taking ideas from Nix isn’t quite accurate. the reality is much worse.

        so yarvin’s specs are meandering as fuck of course, but eventually they get to some kind of point. in short, Urbit’s main computational function consists of two other functions.

        • urbit-infer knows how to pull code from the network, cryptographically verify its integrity, and transform (build) it. this is Nix’s fetchurl and half of Nix’s derivation function.
        • urbit-render takes the output of urbit-infer and stores it in a unique path in Urbit’s pathspace. this is the other half of derivation.
        • the Urbit pathspace is a set of paths on a storage device with the invariant that every path must uniquely represent an output of urbit-infer, and that the existence of a path guarantees that its contents are the output of urbit-render for that path’s instance of urbit-infer. this is just Nix’s core data structure, the Nix store, copied wholesale into Urbit but with a much stupider uniqueness algorithm

        now note that Nix is actually a lot older than I indicated before. it was first released in 2003, and Eelco Dolstra’s first paper on it was published in 2004, 6 years before Yarvin’s first posts about Urbit. that 2004 paper featured details on derivation, fetchurl, and the Nix store, all of which exist almost unchanged in modern Nix

        a lot of the differences between Urbit and Nix (like pathspace forks) seem to be attempts to work around implementing the trickier parts of the Nix evaluation model

        given the big similarities in functionality and structure between the Urbit computational function and Nix’s core functions and data structure, the wide span of time during which Yarvin could have read the Nix paper (and Dolstra published about Nix several more times between 2004 and 2010), and Nix’s obscurity until around 2015, I’m willing to upgrade my suspicion to an accusation:

        Urbit’s core functionality is a shitty, plagiarized version of Nix, but intentionally crippled to keep Yarvin in control

        this has got to be my last Urbit deep dive for a while, but I figured it couldn’t hurt to write up some notes here in case Urbit starts marketing hard again