on master help sign in
no comments on clay
1bd5dc6Galen Wolfe-Pauly
main/blog/clay.md+12−13
@@ -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
8−comments: false
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
79
78
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.
83
82
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
296modes.)
295modes.)
297
296
298−For example, the full path to my cat picture is
297+For example, the full path to my cat picture is
299
298
300```
299```
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.
351
350
352−#### Userspace synchronization
351+#### Userspace synchronization
353
352
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`.
358
357
@@ -546,13 +545,13 @@ is the hash that this reference refers to.
546
545
547### Change #2: unconfuse merge and rebase
546### Change #2: unconfuse merge and rebase
548
547
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.
551
550
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
558edges.
557edges.
@@ -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.
650
649
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`.
672
671
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.
675
674
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.
687
686
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.
693
692
@@ -706,7 +705,7 @@ is a merge that produces conflicts, the next is an edit that
706resolves them.
705resolves them.
707
706
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.
929
928
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.
933
932
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