12 ms·
Urbit user guide, hosted on Urbit
- deleted 11y ago[deleted]
- wyager 11y agoI am not convinced that urbit is not just some sort of ironic performance-art criticism of computer science. Perhaps it would be elucidating if someone would be so kind as to explain what the point is.
- micaeked 11y agoI'm not involved with the project, but here's what I got: - Programming/computing is very new. - Many mistakes were made. - Due to human stuff, mistakes stick around. - It's pretty clear that computing as it is today is very far from optimal. - What can computing/programming look like if we start from a clean slate?
- mjfl 11y agoNo. I did a project on Urbit for an OS course. It is deliberately obfuscated. For example, take the specification of Nock, the lisp-like "assembly code": https://github.com/cgyarvin/urbit/blob/master/doc/book/1-nock.markdown https://github.com/cgyarvin/urbit/blob/master/doc/book/1-noc... The symbol evaluation is designed to take whoever is trying to program in Nock in circles around the specification. It makes even the most basic operations unnecessarily verbose and hard to memorize. To increment a number, you must put it adjacent to the expression [4 0 1]. So 42 [4 0 1] evaluates to 43, after several steps. There is no reason that an "assembly code" should have a decrement operator that must be evaluated more than once in order to get to the final expression. Hoon, the "high-level" langauge is worse. A function to decrement an input by one is specified by the expression: (a=. =+(b=0 |-(?:(=(a +(b)) b $(b +(b)))))) Like a postmodernist artists asks "what makes art?" and answers that there can be no objective answer, Urbit asks the question "What makes good software engineering?" Unfortunately there are many objectively bad design decisions you can make in software engineering. Forcing even the most basic operations to be incredibly verbose and unintelligible is one of them.
- state 11y agoIs your project online anywhere?
- mjfl 11y agoIt is not. It might still be on the school's network, but I did it back in the spring and our department's network admin might have wiped my account since I graduated. Didn't accomplish too much to be honest, as might be hinted at by the frustration underlying my post.
- yarvin9 11y agoYou can certainly blame our (old) doc for that. Sorry for the bad experience -- we're definitely still at the stage where I wouldn't expect people to be playing with Urbit and not asking for handholding. Even more so this spring.
- yarvin9 11y agoWell, normally, if you want to decrement a, you write (dec a). But yes, if you want to write your own implementation of decrement, you could do it this way. It's just as bad an idea in Urbit as in any other language. Nock is a functional assembly language, so it's not meant as a human interface. I think you mean "increment" instead of "decrement." Yes, [4 0 1] is an increment formula in Nock; 4 is the increment operator, 0 dereferences a tree address in the subject, 1 is the root of the tree; so [4 0 1] means "increment the subject," where your subject is 42. If you know Lisp, you can think of Nock as Lisp without symbols or an environment; instead of having this hardcoded key-value store, the environment, you have a subject which is referenced with tree addresses (1 is the root, n2 is the left child, n2 + 1 is the right child). Is this horribly arcane? It doesn't seem that way to me, but de gustibus non disputandum.
- openasocket 11y agoNock just seems deliberately obtuse. The website boasts that "Nock is also the easiest thing in the world to learn" and that the spec "gzips to 340 bytes", but I can't seem to make heads or tails of it. Sure, you can defend Nock by saying it's not meant to be used directly, but can you give any advantages Nock offers over anything else? Because lambda calculus is even easier to implement and is more intuitive.
- zaphar 11y agoAt this point I think it's part performance-art criticism and part a serious attempt at rethinking the entire computing stack from the bottom up. Either way it's undeniably fun to play with right now.
- state 11y agoFair! We do a pretty good job of generating this response. The point is that we ought to have a permanent, immutable home for our personal computation that's universally available on the network. Not an app, not a service, but a general-purpose tool that I trust and can program. I have one on my desk, but I want one in the cloud that doesn't feel like flying a 747 (aka being a unix sysadmin). Our approach is simple: the reason this doesn't exist is not because it's not a good idea, but because existing old-school system software is too complicated.
- Rusky 11y agoThis reasoning is great and makes perfect sense. The thing that makes it look like performance art is where Urbit appears to replace that complexity with something incredibly obscure that does not look like it will do anything helpful.
- Niksko 11y agoI think this is just borne out of the stark and daunting difference between the way Urbit works and everything else we're familiar with. I'm daunted by it, but I'm intrigued by it. I'm also pretty convinced that if I devote some time to it, it will make sense. And as a bonus I'll probably understand the rest of my computing a little better as well. Which is why I'm cloning the repo right now to have a play. PS. Big repo. 400mb and counting.
- Rusky 11y agoJust because a system is unfamiliar does not mean that it hides some new insights, though the reverse is often true. Urbit's problems are much bigger than that- it is full of redundancies and poor choices of abstractions, like using "jets" to optimize away peano numbers.
- state 11y agoUgh! So sorry about the repo size. We can archive some old binaries to get that down.
- kungfooguru 11y agoThere is no point.
- unimpressive 11y agoUrbit is a reinvention of the Old Internet with a lot of the principles from ancient computer lore thrown in. (eg. Lisp Machines) It reintroduces the social computing environment, emphasis on the word computing. The Old Internet and timesharing systems like ITS and Unix were based around this model: https://medium.com/message/tilde-club-i-had-a-couple-drinks-and-woke-up-with-1-000-nerds-a8904f0a2ebf https://medium.com/message/tilde-club-i-had-a-couple-drinks-... So you have a standard identity layer, instead of a million little fiefdoms of identity competing for sign ups. You have proper one-to-one connections between individual users on the system, with modern cryptography inbetween. You have a functional, very very small kernel out of which the rest of the system is built. This kernel and core concept is a sort of distillation of the ACID concept from database systems, so that your computer has transactions and forgives mistakes. It bakes the social layer and the community layer of the Internet into the protocol. Urbit tries to be community-aware and politics-aware and handle this gracefully. This sort of formal acknowledgement of necessary human factors in technology is certainly in line with Curtis Yarvin's previously expressed views on social organization. (And is mostly what people are talking about when they say he 'baked neoreaction' into Urbit. This accusation strikes me as intellectually dishonest on multiple levels, but I'd rather not digress on it.) If nothing else it's a very interesting piece of new research in computer science, you should be excited about it. EDIT: Curtis I know you're lurking, can I get an invite?
- yarvin9 11y agoThanks! The appropriate authorities have been contacted :-)
- wyager 11y agoWhy do you think it is a good idea to make things "social" at the OS level? That seems like a very strange abstraction policy. And how is this system "politics-aware"? I'm not even sure what that would entail from what basically seems to amount to a collection of esolangs.
- unimpressive 11y ago>Why do you think it is a good idea to make things "social" at the OS level? That seems like a very strange abstraction policy. Social means a bit more than just Facebook. It also means primitives for things like collaborative editors and coworking spaces, video conferencing, etc. IMO the ideal social system would look a lot like a mix between the old timesharing systems, the early Internet and Douglas Engelbarts "Mother of All Demos": https://archive.org/details/XD300-23_68HighlightsAResearchCntAugHumanIntellect https://archive.org/details/XD300-23_68HighlightsAResearchCn... >And how is this system "politics-aware"? I'm not even sure what that would entail from what basically seems to amount to a collection of esolangs. Well it comes with the community. The way Urbit is structured your personal cloud/ship/etc is intended to be linked up to a community of other users. Politics are part of being social and part of communities. If you don't have a structured way of handling it it'll happen regardless and can be made less ugly with official support. "The part that is stable we are going to predict, and the part that is unstable we are going to control." - John Von Neumann, 1948
- phlandis 11y agoA narrow example, but maybe it will give you a better perspective. Traditionally every app has its own backend and database storage. With urbit your personal credentials live as variables on your ship (personal cloud computer). Apps can then utilize the API. Correct me if I'm wrong.
- powera 11y agoIt is performance art. Any language that brags that addition is O(n^2) is pure performance art.
- state 11y agoWe also put up a new homepage that's hosted on Urbit: http://urbit.org/ http://urbit.org/.
- Mithaldu 11y agoIt would be nice if i could read the docs without needing JS. It is nice to see sanely written documentation though. Cheers on improving that. :) Edit: Useful, thanks! vvvv
- state 11y agoFair enough. All those resources are actually markdown files that are being built for use in our doc browser — but you can also browse the raw .md. Here's an example of how to retrieve raw .md: http://urbit.org/docs/user/intro http://urbit.org/docs/user/intro http://doznec.urbit.org/home/pub/docs/user/intro.md http://doznec.urbit.org/home/pub/docs/user/intro.md
- zerker2000 11y agoOr for that matter http://urbit.org/home/pub/docs/user http://urbit.org/home/pub/docs/user, which is a simple-html rendering of the OP link. Some of the pages require JS to list children components, however.
- TheDividualist 11y agoThanks, because something is not working with the main site. You go to the user introduction, click on the install manual or dojo or something, and nothing happens. PaleMoon, latest.
- to3m 11y agoSuggest adding a reminder that when saying "urbit" as "herb it", you need to not say the "h". Unless you are actually supposed to say the h, of course. Perhaps it's the opposite of a silent letter.
- yarvin9 11y agoSorry, this is a ridiculous parochialism on our part. In America, which is where English was invented and is also of course the biggest bestest country in the world with giant atomic bombs and stuff, we don't say the "h." But apparently there's some little islands or somewhere where they do. Will fix.
- Mithaldu 11y agoHonestly, i was a little sad to see you mention latin out of the corner of my eye, which would mean you'd properly pronounce it oorbit, to then find out you're being as english about it as the internet usually is.
- networked 11y agoI was late last time, so this is my chance to ask again. Is the Urbit team familiar with Ted Nelson's work? For some context, see my question from the previous Urbit thread at https://news.ycombinator.com/item?id=10286521 https://news.ycombinator.com/item?id=10286521.
- yarvin9 11y agoHow could anyone not be familiar with Ted Nelson's work? In the broad sense, anyway. I think the crucial layer that we need to implement... a lot of things... is a global immutable (aka referentially transparent) namespace. Urbit is one project building such a thing; another one is IPFS. (Urbit names are addressed by identity; IPFS names are content-addressed; so they're complementary and not competitive.) One of the reasons the Web seems like such a poor imitation of Xanadu is that it rests on this rickety foundation of a mutable binding from name to resource. Once global immutable namespaces -- Urbit, IPFS, anything -- are more widely deployed, I think Xanadu would be wise to use such a thing as a layer. But to paraphrase a famous saying: grant me the serenity to accept the code I cannot rewrite, the courage to rewrite the code I can, and the wisdom to know the difference :-)
- unimpressive 11y ago>I think the crucial layer that we need to implement... a lot of things... is a global immutable (aka referentially transparent) namespace. Theodore Nelson has said this himself, I can't remember the exact source but I think it was in his google talk he said that you need permanent addressing for Xanadu to work. He at least reiterates the concept (though with less principal importance) here: http://xanadu.com/XanaduSpace/btf.htm http://xanadu.com/XanaduSpace/btf.htm "STABILIZED ADDRESSES Imagine that everything you type is given a permanent, immutable address. Then to refer to a given sentence, or paragraph, you would refer to its permanent address span (start, length). This would have many benefits. This is not the way things are ordinarily done, but in this system we simulate such permanent addresses in order to get these benefits."
- e12e 11y ago> How could anyone not be familiar with Ted Nelson's work? In the broad sense, anyway. Computer Science is not renowned for it's diligent study of history. And that's just for those that actually study it in some form of institution, not all the people who "practice" it without any formal training. That said, the fact that Ted Nelson/the publisher have stubbornly refused to just publish for example "Computer Lib/Dream Machines" free on the (inferior) web, or at least as a DRMed ebook or merely a dead-tree re-print -- makes it unnecessarily hard for people to read up on the concept(s).
- GFK_of_xmaspast 11y agoIsn't this one of those Mencius Moldbug things.
- e12e 11y agoFrom[1]: "Anyone can run the Urbit VM, of course. But the %ames network is officially invitation-only. Not that we're antisocial -- just that we're under construction." So, is there support for running a separate p2p network? Or is the only option to wait for urbit to stabilize? [ed: Never mind, it's covered under "Launch Instructions": If you don't have an invitation, pick a nickname for your comet, like mycomet. Urbit will randomly generate a 128-bit plot] [ed2: Hm, looks like the ability to spawn an alternate universe would make playing with urbit more interesting, as I understand it - without an invite, most of the best parts are inaccessible: "The fanciest way to control your urbit is through Urbit itself: a moon, or satellite urbit. Sadly, only planets can have moons."] [1] http://urbit.org/docs/user/intro http://urbit.org/docs/user/intro
- e12e 11y agoAnother interesting tidbit, that maybe someone can shed some light on: "Reactive auto-updates are a particular speciality of %clay. We use them to drive auto-updates of code at every layer. A normal Urbit user never has to think about software update." Is this another way to say that you can never know what version of urbit you're running? So when someone compromises the upstream keys/ids urbit becomes one big botnet?
- yarvin9 11y agoYes. And the same is probably true of the browser you used to post this. Also, the OS it's running on. It's the price of being "evergreen." It's worth thinking about why we've accepted this tradeoff. The cost of evergreen software is that we put all our eggs in one basket, and watch the heck out of that basket. The benefit is that we solve a huge set of system administration problems that would otherwise be ridiculously impractical. One metaphor I like to use is the difference between the Soviet and American design styles in aerospace. The Soviet way was to build systems with loose tolerances that worked okay even when parts were a little out of spec. The American way is to build systems with precise tolerances that work perfectly when everything is right, and fail catastrophically when it isn't. There's much to be said for the Soviet style, and indeed it might be summed up well in Postel's law. But as the problems you're trying to solve get harder (like keeping all the world's browsers updated), it doesn't scale very well. If we compare the problems we can solve with manual upgrades and Postel's law, to the problems we can solve with automatic upgrades and rigorous protocol validation, there's no contest.
- deleted 11y ago[deleted]