@@ -5,7 +5,6 @@ title: Toward a new %clay
5author: Curtis Yarvin
5author: Curtis Yarvin
6preview: Toward a new %clay
6preview: Toward a new %clay
7layout: urbit,post
7layout: urbit,post
9navmode: navbar
8navmode: navbar
10navdpad: false
9navdpad: false
11navselect: blog
10navselect: blog
@@ -78,7 +77,7 @@ There are six big questions in the design of a DVCS:
78## Anatomy of %clay
77## Anatomy of %clay
80A good way to summarize `%clay` (at present) is that its answers
79A good way to summarize `%clay` (at present) is that its answers
81−to the first four questions are interesting, and its answers to
80+to the first four questions are interesting, and its answers to
82the last two are boring. We'll talk about all six, though.
81the last two are boring. We'll talk about all six, though.
84### Global namespace: [ship desk case]
83### Global namespace: [ship desk case]
@@ -295,7 +294,7 @@ data, `%y` for a list of children, `%z` for the whole arch
295subtree, `%w` for the version number. (Each vane has its own
294subtree, `%w` for the version number. (Each vane has its own
298−For example, the full path to my cat picture is
297+For example, the full path to my cat picture is
301/cx/~sorreg-namtyv/home/[now]/my/cat/picture
300/cx/~sorreg-namtyv/home/[now]/my/cat/picture
@@ -349,10 +348,10 @@ all the data the server has available right now; updates will
349follow when they become available; the subscription will be
348follow when they become available; the subscription will be
350closed when the request range is complete.
349closed when the request range is complete.
352−#### Userspace synchronization
351+#### Userspace synchronization
354Synchronization per se is done in userspace. In `%clay`, sync just
353Synchronization per se is done in userspace. In `%clay`, sync just
355−means an application (typically the `%kiln` module in the system
354+means an application (typically the `%kiln` module in the system
356app `:hood`) subscribes to a remote desk, and saves its change
355app `:hood`) subscribes to a remote desk, and saves its change
357stream locally. So sync is really an emergent feature of `%clay`.
356stream locally. So sync is really an emergent feature of `%clay`.
@@ -546,13 +545,13 @@ is the hash that this reference refers to.
547### Change #2: unconfuse merge and rebase
546### Change #2: unconfuse merge and rebase
549−The dispute between merge and rebase has all the bad smells of
548+The dispute between merge and rebase has all the bad smells of
550a historical wart. But here I'm just not sure what's right.
549a historical wart. But here I'm just not sure what's right.
552The user has one *intent* whether merging or rebasing, which is
551The user has one *intent* whether merging or rebasing, which is
553to combine changes on one desk into another. The *algorithm*
552to combine changes on one desk into another. The *algorithm*
554used to construct this change, whether operational transformation
553used to construct this change, whether operational transformation
555−(rebasing) or a 3-way diff (merging) has one goal: use all
554+(rebasing) or a 3-way diff (merging) has one goal: use all
556available information to model the authors' editing intent as
555available information to model the authors' editing intent as
557realistically as possible. If we save edges, we should use
556realistically as possible. If we save edges, we should use
@@ -648,7 +647,7 @@ or a dependency of the mark source (slightly less unlikely).
648And if so, do we have to update all the leaves in the dome?
647And if so, do we have to update all the leaves in the dome?
649This is also very unlikely. And yet, it happens.
648This is also very unlikely. And yet, it happens.
651−Instead, we could simply designate, by beak (ship, desk, and
650+Instead, we could simply designate, by beak (ship, desk, and
652case) a dome which contains the canonical mark source. This
651case) a dome which contains the canonical mark source. This
653would rarely change -- you could upgrade a desk to a new mark
652would rarely change -- you could upgrade a desk to a new mark
654dome, but it would be a manual operation and probably a rare one.
653dome, but it would be a manual operation and probably a rare one.
@@ -671,7 +670,7 @@ So we added an app hierarchy within the mark namespace, using hep
671`talk-message`, whose sources is in `/===/mar/talk/message`.
670`talk-message`, whose sources is in `/===/mar/talk/message`.
673This helps, but it doesn't solve another two problems: trivial
672This helps, but it doesn't solve another two problems: trivial
674−nouns and containers.
673+nouns and containers.
676It's retarded to have to add a source file to send a `@ud` or a
675It's retarded to have to add a source file to send a `@ud` or a
677`*`. An aura (see above under `coin`) should be a trivial mark.
676`*`. An aura (see above under `coin`) should be a trivial mark.
@@ -687,7 +686,7 @@ difference, and invalid marks.
688Conflict data and difference data are two types of noun that are
687Conflict data and difference data are two types of noun that are
689generated in normal RCS operation. If we have the concept of an
688generated in normal RCS operation. If we have the concept of an
690−`%html` noun, we also need the concept of an invertible change
689+`%html` noun, we also need the concept of an invertible change
691from one `%html` file to another; a merge conflict between two
690from one `%html` file to another; a merge conflict between two
692`%html` files; and even a conflict between two marks.
691`%html` files; and even a conflict between two marks.
@@ -706,7 +705,7 @@ is a merge that produces conflicts, the next is an edit that
706resolves them.
705resolves them.
708Similarly, all sorts of errors can produce invalid leaves. One
707Similarly, all sorts of errors can produce invalid leaves. One
709−particularly rare case which is nonetheless important is schema
708+particularly rare case which is nonetheless important is schema
710evolution: what happens to files in a mark, when the mark source
709evolution: what happens to files in a mark, when the mark source
711code changes. They all need to be re-normalized. And this
710code changes. They all need to be re-normalized. And this
712operation can fail, producing an invalid value. (We don't do any
711operation can fail, producing an invalid value. (We don't do any
@@ -928,8 +927,8 @@ contents into Urbit, you should be able to control a mounted
928`%clay` desk through Unix filesystem operations alone.
927`%clay` desk through Unix filesystem operations alone.
930No Urbit command-line access, not even any `urb/` HTTP control
929No Urbit command-line access, not even any `urb/` HTTP control
931−channels, should be required for the user to generate `%clay` data
930+channels, should be required for the user to generate `%clay` data
932−through filesystem mount, or to set up the mount.
931+through filesystem mount, or to set up the mount.
934An RCS experience that works entirely through Unix tools, in
933An RCS experience that works entirely through Unix tools, in
935which the only connection between content creation tools and
934which the only connection between content creation tools and