This might be the most revolutionary technology in the world, but I really have no idea because your landing page is full of the vaguest most utopian promises. You might say, well, you should go read the "technical docs", but have read about so many hyped techonologies that came to nothing at this point that I am incredibly skeptical.
If you can't tell me what you are doing in a single paragraph, then you've got a problem. If you can, why doesn't your homepage reflect that? Show me! I don't want to scroll through another website with 16 point font.
We all love the Unix philosophy and puppies, too.
Please take this as the constructive criticism it is.
I don't disagree with your criticism. I read through the Urbut whitepaper [1] a while ago, and there's some meat and novel ideas there. As far as a concise description, here's my attempt, followed by some content from the whitepaper.
The key idea that distinguishes Urbit is its focus on deterministic computing. Urbit is a computing environment, like a virtual machine, with the distinction that the entire computational result is designed to be a deterministic function of the inputs. The inputs are represented as a sort of transactional log-structured file system, where computation is a pure function of the input events. They have provisions for multiple computers interacting over a network while handling inputs in that way.
They implement a sort of combinator-based assembly language and virtual machine, a higher level language on top, and then an OS on top of that. Their virtual machine runs on a regular computer, but in theory you could run an Urbit VM on any machine and observe the same computational result. This is not a trivial problem to solve for an entire OS and network! They invented some interesting optimization techniques ("jets") and networking concepts to make it feasible. As an analogy (this is a stretch): it's like Plan9, except purely functional and deterministic.
> Urbit is a new clean-slate system software stack. A nonpreemptive OS (Arvo), written in a strict, typed functional language (Hoon) which compiles itself to a combinator VM (Nock), drives an encrypted packet network (Ames) and defines a global version-control system (Clay). Including basic apps, the whole stack is about 30,000 lines of Hoon. Urbit is a “solid-state interpreter”: an interpreter with no transient state. The interpreter is an ACID database; an event is a transaction in a log-checkpoint system.
Their goal is to make hosting this virtual machine easy enough to do that anyone could, while (if I recall correctly) decoupling it from the underlying physical machine it's running on, such that it could run anywhere you want it to. Then they speculate that, if many people hosted their own, then people would be less reliant on cloud services, or at least could fully trust computational results from the cloud.
The ideas are unfortunately cumbersome to follow once the whitepaper and other technical content reach the point where they explain things with made-up, Urbit-specific terminology [2]. The authors explain their rationale for their choice to do this (IIRC, their reasoning was that they need to name so many new concepts that it's better just to assign random words like codenames - something like that). I feel ambivalent about this, but I will respectfully mention that the choice to do this might make more sense from the perspective of someone who lives and breathes Urbit every day. From the perspective of a beginner, it's a turn-off; I find it grating and it doesn't work for me. Haskell and Rust have terms to introduce, but their material doesn't leave me feeling bamboozled.
If an alien species had invented computing, what might it look like? I think Urbit is a credible answer to that question. I'm joking, but only partially: from the perspective of "throw out everything and start over from scratch to see what modern computing would be like", Urbit seems like it may be a sincere attempt. At one point in the past, the ideas appeared to be deliberately obfuscated, like performance art or like Brainfuck. They've subsequently made efforts to explain the ideas and build things up from basic concepts, and I think the authors are sincere, but don't hold me to that. In conclusion, I think it's technically neat, but I think it'd be a lot neater if it were documented and presented within a grounding of typical CS and software terminology/concepts. Or if they can't give up the custom terminology, I'd want to see ~10X more material (per unit concept) introducing and clarifying the ideas slowly from the ground up. If they're inventing their own alien computer science, then they need to write the alien "C Programming Language" (K&R) and alien "Structure and Interpretation of Computer Programs" [3].
It might not be easy in terms of connecting it to your existing knowledge, but it could be easy in terms of learning it for the first time. Beginner's mind.
> while (if I recall correctly) decoupling it from the underlying physical machine it's running on
> Urbit is a new clean-slate, full-stack server. It's implemented on top of the old platform, but it's a sealed sandbox like the browser.[0]
It appears that you do indeed recall directly.
Also, thank you. The two quotes from your comment, plus your sentence following, do describe it in a nice single paragraph. Granted, I do have to research most of the technologies in the stack, admittedly.
I hope they integrate a proper capabilities framework too, ideally one with cryptographic credentials that allows for reasonable assurances in distributed systems. Stuff like being able to provide a cryptographic guarantee of who have access to what data.
What are they talking about? Dry/wet arms? Batteries? Metal cores? Bridges? Gates? Superpowers?
For me it looks like they've just replaced common concepts with random "cool" words, deliberately obfuscated the syntax and try to sell it as an innovation.
You jumped straight into the 'advanced types' section of their high-level language documentation, which is quite different from most "mainstream" programming languages, so of course a lot of concepts are going to be very foreign to you. You might want to check out their talk at LambdaConf for a better overview of these: https://www.youtube.com/watch?v=I94qbWBGsDs
Also, I doubt they could handle it, their scope is huge: new OS, new programming language, networking, encryption, time, compilation, virtualization etc.
I don't believe group of 5 unknown people can handle it.
Not only that, they are incorrect constants. The definition for :cet, for example, is only correct for non-leap centuries. 2000-2099 has an extra day compared to 1900-1999, or its partner :qad, which has the opposite problem and assumes any 4-year span has a leap year.
Of course, the language has other problems too, like 'moar' being used as a serious part of the language's grammar, or worse, more nebulous verbs like 'snag', which makes the language even more difficult to understand for non-native english speakers. It's just an utter mess.
>
Au contraire! They managed to almost eliminate any advantage that programmers who speak english usually enjoy.
What are those advantages?
When I was young and my English was really bad, I simply learned the keywords just as mathematical terms (i.e. if, else, for, while, break, next, goto, gosub, signed, class etc.) - I mean, they aren't that many (say 40 and you've covered most mainstream programming languages that aren't really verbose (OK, COBOL is an exception, but who uses COBOL ;-) ). This really isn't much harder than learning mathematical terms as sin, log, cos, exp, cot, asec etc. even if you know no word of English.
What really makes programming hard when you are not sufficiently fluent in English is that lots of documentation is only available in English (this was the main problem I had). And I don't see how Urbit is going to change that.
As a native english speaker, I'd like to politely disagree with this phrase! (and that was the GP's joke... since they're using so many made-up terms, it effectively isn't english).
If you know about Yarvins other beliefs, the fact that t seems obfuscated makes quite a bit of sense in my view. I think it's a superiority thing for him.
At its core? I think it's kind of interesting. Would have been more useful if he had made it simpler to understand/develop in. In its current form, it seems like a vanity project to me.
Discounting Yarvin feeling superior, or others perceiving that, I am in favor of the 'start from scratch' here. Worst-case scenario it fails, and only drags a few bleeding edgers with it. If it succeeds, we have a whole new way to proceed without necessarily abandoning the old.
Just at the hardware level, we are forever, it seems, stuck in the von Neumann architecture with some recent hops to vector processing on GPUs and FPGA/ASIC/GPU hybrids. We need software for these new platforms if they divorce from the von Neumann machine. I am not calling for reincarnating Lisp Machines, but maybe its time to build and test new (not the same old) hardware and software,to see how it competes with this path we're on. Why not? Experimentation is fruitful one way or the other; you learn from your mistakes too.
I am interested in Urbit, and I can separate myself from Yarvin's political writings, the same way I could still concede that 1 + 1 = 2, even if Hitler had written a paper saying so without any of his views contained therein.
Yarvin admits the obfuscation by using different terms, or swapping 1 and 0 from their current boolean understanding, 'may hold water' per the bootleg YouTube video of the talk he just gave. I personally think when you are trying to usher in something different, it is helpful to shed old terms. So much weight is carried by words, good and bad. It sometimes helps to freshen up the lingo with the new or slightly-altered concepts. After having read a little Wittgenstein and the late Umberto Eco's works on semiotics, I am convinced language or signs carry significant biases that are useful to put aside or rename if it helps you to think of an old concept in a new light.
>After having read a little Wittgenstein and the late Umberto Eco's works on semiotics
Do you have any suggestions on good starting points? I found Tractatus Logico-Philosophicus to be a rough introduction to Wittgenstein. I'm also curious what Eco you'd recommend; I've only read his novels and essays.
I've only read two of Eco's fictional works: The Name of the Rose, and Foucault's Pendulum. I loved them both, but then I picked up The Island of the Day Before, and didn't finish it. I have also read his essays.
The book I was referring to was Theory of Semiotics by Eco. I picked it up in 1982 or 83, after having read The Name of the Rose, and I honestly didn't know what Semiotics meant until I spent 20 minutes reading it in the bookstore (no Googling then!).
I had read Tractatus Logico-Philosphicus around the same time, 1983 or so. I read most of it, some pages multiple times, but I didn't finish it. I only grasped enough to know I wasn't going to change my major to Linguistics. I was hopping off of references in the bookstores the way I now follow links down rabbit holes.
I should revisit these works now that I have some more years on me!
Wittgenstein only really published two works: The Tractatus and Philosophical Investigations, in which he completely revises his approach. Read the latter.
Elitist language can be used by any group to partition themselves from others. I'm sure many groups (formal and informal) do it.
That said, I believe there has to be a floor to the language level you choose, and it's reasonable to use "high school English" as that floor. Besides, I checked out that link (history section) and didn't see anything that screamed "overly clever"...
The comparison to marxist texts is more pointed if they were unapproachable not just to the layman, but to people proficient in (non-marxist) political economics -- which is arguably the case.
I'm not sure why that's ironic. Extremists tend to have a lot in common in their overall approaches, even if they may be violently opposed on the specifics.
I dived into urbit a while ago, and the way it is described makes sense. It's a completely new paradigm and trying to fit naming from popular programming languages would only lead to confusion. You have some new things, built on top of other new things and so on. When trying to describe higher level abstraction layer you can't afford to spend 2 sentences to describe each element from the lower one. So sure, you could go with some smart sounding names, but they would need to be much longer and they would make things seem more complicated than they are in reality.
I agree. What it really needs is an 'example' page, or a walkthrough of how/what you'd use it for.
I just spent 10 minutes reading the docs and I'm not sure I get it. Is it like Owncloud? disapora*? ITTT? Is it an interface to mirror all my content from other social media sites, and interact with them? You say I can use it to authenticate with sites - is it an OpenID provider? Something something blockchain? All of the above?
This page explains a little bit [1], but a walkthrough or video or screenshots or something would help immensely
It's personal computing, explained in the context of a VC pitch to people who have never heard of an OS, think the browser is their computer, and don't seem to comprehend software that gets installed.
Look at the Evernote example - wouldn't it be great if you could replace the Evernote UI with a different one for $10? Well, you could do that today on any OS with an app and a REST API, but it either doesn't exist (because it's not that great) or it does already exist (so what's revolutionary?).
The same thing applies to almost every single thing lauded. Your data is saved locally! Great, my UrbitTwitter clone keeps my data locally in some undocumented format. But that's ok, I'm not beholden to the app developer in case they die (yes, that's in there), because I can get someone else to reverse engineer that format and build me a new twitter clone. How does Hoon make that special?
Gmail works locally! And <other Web service> Translation - someone (lots of someones) will build APIs and SDKs for our platform to interface with those services, and they'll be used just like in any other OS to make apps that run in your machine.
It lauds "you can install software, and it runs locally, forever!" as something new and great, when really that's existed since we got off mainframes in the 70s.
Everything it offers is stuff that was solved the first go around in personal computers, but this time with a cryptographic identity and an obtuse language. Maybe there's something I'm missing, but I've been looking at urbit for 2.5 years, know (good) people that worked on it, and still can't find a compelling reason to think of it as something other than a hipster OS, reinventing decades old ideas because this time they'll do it right.
> the ideas appeared to be deliberately obfuscated
It reminds me of early days of http://21.co ,the Bitcoin computer, with the same ambiguous wordings. I assume the libertarian socialistic aspects of this genre of technology is prior to its technical and practical aspects.
Actually, I've been following Urbit for a while - it's decidedly not designed to be socialist, or libertarian, it is instead feudalistic. Specifically, the network protocol, once you get past the level of "two computers communicating", is based around a system where users are given land (a "planet") by a landlord (a "star"), and are then tied to that landlord in terms of infrastructure and trust.
The system is also, weirdly, specifically designed so that not every person in the world can have their own planet.
Sure, but as a global personal computing infrastructure, the idea of absolutely ensuring that some people's identities will be worth more than others (not only in terms of monetary worth, but in terms of trust, etc) based on an artificial limit is a bit weird.
Urbit people make too much effort to justify urbit extrinsically. Hey, we can use it to make P2P facebook, and to render websites that resemble a ruby-powered startup launch site. OK but urbit is also good for urbitting. Why stoop to using the idiom of today's crappy browser apps, and why bother justifying urbit to people who are apparently happy with the way things are on Earth now? Forget them, I say!
Below the intro paragraph on the homepage are two links: "Learn more" and "jump to the technical docs".
Given your aversion to the technical docs, I'd imagine you might click "learn more". This scrolls the page down to another lead in para with links to "overview" and "beliefs and principles".
So sure, it's two clicks not one but are you seriously telling me the https://urbit.org/posts/overview/ (posted on HN the other day) isn't a well written explanation of what Urbit is / does / why you'd be interested in it?
>This might be the most revolutionary technology in the world,
Don't worry, it's not. It's a VM with bent towards distributed computing. That's all.
I mean maybe one day it'll have an ecosystem of libraries and applications that makes that interesting but it's not today and it's not inherent in the technology.
I think it's a piece of software. That's all I know. I don't know if it's something you run on your own computer or distributed on a blockchain or something. I guess it's supposed to be obvious. It's not obvious to me.
If you can't tell me what you are doing in a single paragraph, then you've got a problem. If you can, why doesn't your homepage reflect that? Show me! I don't want to scroll through another website with 16 point font.
We all love the Unix philosophy and puppies, too.
Please take this as the constructive criticism it is.