Comments on the Urbit whitepaper

Comments on the Urbit whitepaper

mbuliga@pm.me or @xorasimilarity on telegram

Comments on first reading of Urbit' white paper

date: 21.04.2021

covers: pages 1-6, 8, 10-12, 20, 40

previous: this is a merge of Comments-Urbit-14-04-21.txt and Comments-Urbit-17-04-21.txt


Context: Only my personal impressions; I pass what I read through my filter of interests, see ChemSKI not Nock .

 I am not fixed on chemSKI, nor on chemlambda or dirIC. Maybe on Pure See (when is done). For the moment the reader interested in the context can find lots of material at chemlambda.github.io.

 

Comments:


- p.1

Urbit is a new clean-slate system software stack. 

  p.3

A clean-slate personal server, with its own encrypted packet over-lay network, can forget that Unix and the Internet exist. It can run on Linux and send packets over UDP; it can both provide and consume HTTP services; but its native stack is not affected by 20th-century design decisions.


 I look for such projects, which start from the metal. I don't personally have the competence, nor do I have the age to develop one (probably it takes a decade).


- p1.

combinator VM (Nock)


 is the place where my cuckoo egg (say chemSKI) I think fits. Mind that word: "combinator"


- p4.

Nock, a non-lambda combinator interpreter, is Urbit’s VM and axiomatic definition.  Its informal spec is 340 bytes compressed. Nock is nowhere near the simplest possible definition of computing, but it’s quite simple for a practical one.


 Exactly like Schonfinkel' SKI. By "practical" one means of course the availability of a compiler to Nock or SKI, so that a regular programmer could write a high-level human friendly programming prose which is then compiled to the bare metal Nock (or SKI...).


 Nock is permanently frozen and will never need updating.


 Why not? Probably the reply is "why would it ever need updating?" Here is a possible answer (see context).


 I believe that reality is a discussion (res) which happens in places (chora) and those discussions which achieve consensus (in a place) are named "objective" (in that place). Therefore, in this belief, reality is not objective. Objects are evidence, used to argue that a new discussion is no longer necessary, in the larger discussion which happens in that place.


 A decentralized computation is a discussion. An identity is an object, for example.


 This is different than what I believe people think when they talk about decentralized computing. It is not about p2p communication, nor about trustless consensus.


 The problem is: design a system which can compute anything (computable) locally in space and time, which is real but not objective. And which is scalable by being open to any new participant to the discussion.


 Biological life is such a system. The complexity of it is not to be taken lightly: even the tiniest cell works in ways which are not known to the CS luminaries. It probably involves computations from the quantum level up. But it is local (chemistry is always local) in space and time, it is real (any live part which is isolated dies) and it is not objective up from the physics and chemistry known fundamental laws, in the sense defined previously.


 Instead we have, I think, something much simpler: the possibility (say provided by Ethereum) to share objective programs, inputs and outputs, which can be executed locally in many places. Instead of a global computation executed only with local means, we have many local, identical otherwise small computations which are repeated (and sufficient) many places, many times.


 What we could have (if we want to get closer to the understanding of life) is a big, decentralized computation which never ends, which is self-sustained, based only on local execution, where any two participants can transfer the execution while it happens.


 The purpose of the chemlambda project is to experiment with artificial chemistry (instead of the real one) and to build such a system, in the hope that in the future we shall be compatible with the larget biological life system.


 It happens that recently I realized (excuse my stupidity) that SKI satisfies the exact requierements that Nock satisfy, but more than that, it can be turned into a purely local artificial chemistry which is called chemSKI. (continues ...)


- p.4

Nock cannot create cycles, so nouns can be managed without a tracing garbage collector.


 (continued...) Now finally to the point. Instead of Nock nouns we might use (with chemSKI) mols. This corresponds to the possibility to reduce graphs which are not trees (or dags). Oh, but you might say, nouns are trees exactly because they are enough to do computations and we don't want to fall into infinite reflections between mirrors. Yes, I would counter, but in chemSKI, or chemlambda, the graphs are used differently from what you think. Be it a tree or a graph with a cycle in it, a graph is not (a representation of) a computation, with nodes as functions with inputs and outputs. Instead a graph is like a chemical molecule which is modified  (reduces) by local chemical reactions, therefore it is irrelevant if the molecule has or not cycles in it.


 More: a mol file is more flexible than a Nock noun. You can split a mol into two mols in whatever way and share the parts. You will just get mols with "free ends", that is with some port variables which appear only once. The parts will reduce just the same, except when a reduction would involve patterns which are partly in one mol and partly in the other. For this you need some discipline of naming (identity problem) the free ports, a problem which you already solved in the communication part of you project. You may say: this is a part which has to be objective, therefore it does not satisfy your requirements, @xorasimilarity. Yes, but let's arrive there and then we can discuss about places and space and their objectivity... when we shall have the computing power to care about this.


- p. 4

As an axiomatic model of computing, Lisp and/or lambda are an imperfect fit, because the reduction axioms define high-level programming concepts such as variables and functions,


 Agree, but not in chemlambda or chemSKI, where on the contrary the desire is to stay at the bare metal level


 which (a) should not be coupled to the lower layer, and (b) are properly human-interface features belonging in the upper layer.


 ... because programmers are human and they wish to be able to speak high-level to their computers.


 Nock defines no variables, environments, functions, etc.;


 Just like chemSKI.


 It doesn’t even have a syntax.


 I would prefer to say that it does not have a global semantics.



- p 5.

Hoon is a low-tech functional programming language which does not use category theory, lambda calculus or unification inference. The Hoon style discourages aggressive abstraction and promotes a concrete, almost imperative style 


 Applauses for this!



- p. 11, 4.1, p. 12 4.2 "break symmetry", p. 20, 6.4 the lifecycle function


 If E = [a b] then


 *[E [2 [0 3] [0 2]]] -> *[*[E 0 3] *[E 0 2]] -> *[/[3 E] /[2 E]] -> *[b a]


 What is "step history" E? Is b the state and a the new step?


- p. 6

The formal state of an Arvo instance is an event history, as a linked list of nouns from first to last.


 p. 6

The only semantics outside the event history are Nock itself, plus a “functional BIOS”: the noun [2 [0 3] [0 2]]. This noun is a Nock function; it calls the first event as a Nock function on the rest of history.The result of this function is the current operating state, a noun.


 explains the previous, namely that a is the initial step and b is the rest of the event history, correct?


- p. 8

Logically, we could imagine the ideal network as a global broadcast Ethernet.  Everyone hears every packet; every packet is signed and encrypted.  If you have the correct keys to authenticate and decode a packet, you learn from it; otherwise, you discard it.


 Is this scalable?


 - p. 10

an interrupted event never happened.  The computer is deterministic; an event is a transaction; the event log is a log of  successful transactions. In a sense, replaying this log is not Turing-complete. The log is an existence proof that every event within it terminates.

 

 Dennett describes this as stalinesque: 

[quote from Dennett] events would be reconciled prior to entering the subject’s consciousness, with the final result presented as fully resolved. This is akin to Joseph Stalin’s show trials, where the verdict has been decided inadvance and the trial is just a rote presentation


 the same page

(Of course, a packet that times out remains a DoS attack.  Because Ames addresses are scarce, DoS attacks via authenticated packets should be relatively easy to track and throttle.)


- p. 40

Urbit is designed to run in a data center; it assumes that a high-reliability, low-latency cloud log is a service we know  how to deliver. On mobile hardware, low-latency NVRAM would be ideal, but mobile hardware and critical data remain a bad fit. 


 This project has the same worst features as the old stack?


 Maybe not, but the whitepaper does not help.



 My impression is that the more technical part is interesting, but it relies on the same BS concerning "facts", i.e. objects in my parlance. Because discussion (reality) is not welcomed, the reliance on facts is of course impossible in practice without some other component which has to impose an order by force.


 The stack is impressive! Does it work without this medieval forced order? Can it be made to welcome reality?



 I can't understand how Urbit is compatible with anarchism though, but probably I don't understand anarchism. Just a geometer here, not a modern philosopher. Modern philosophers don't get well with "ageometretos medeis eisito" "ἀγεωμέτρητος μηδεὶς εἰσίτω".

Report Page