9front - general discussion about 9front
 help / color / mirror / Atom feed
From: tlaronde@kergis.com
To: 9front@9front.org
Subject: Re: [9front] Enabling a service
Date: Wed, 8 May 2024 22:34:17 +0200	[thread overview]
Message-ID: <ZjvhyQ8qfbi3cGHO@kergis.com> (raw)
In-Reply-To: <ZjvWowfjIDbvvbMa@simple-cc.openbsd.amsterdam>

On Wed, May 08, 2024 at 09:46:43PM +0200, Roberto E. Vargas Caballero wrote:
> On Wed, May 08, 2024 at 11:10:00AM -0500, Jacob Moody wrote:
> 
> > No matter how you cut you are going to have to deal with multiple people merging
> > their cache in to the single root of truth with potentially latent updates.
> > Either you have to serialize all mutations at the source of truth (and at that point
> > you are latent bound) or you have to be clever about merging. A lot of ink has been
> > spilled about this problem in the scope of web programming (CRDs iirc), perhaps
> > that may serve as some inspiration.
> 
> I would suggest to take a look to AFS (Andrew File System, that I think had also
> an evoultion but I don't remember the name) and how it works, and the implications.
> Sometimes you can merge the changes, and other times you have to request

I bought, long ago, a book about the AFS system. But it was no
explanation about how things were done, but only the overall organization
and how to administrate it.

To be honest, the conclusion was: for the "big" picture, it was simply
what I would have thought almost at first. But there were no
indication of what supplementary features pop up when thinking about
filesystems considering a WORM, registering file content history by
blocks, but adding another layer for tentative writes (I call them
"minutes") for files that are tentative files and that have to be
backed-up without history and differently, and a special command to
"commit" the file, that is to indicate that this version has to be
saved.

All in all several combined levels:

1) A rock solid low level WORM filesystem, with deduplication of
blocks and history, with a canonical name for a file and a way to
retrieve a specific version of the file;

2) A mechanism providing a way of scripting a policy allowing to create
a namespace and allowing to pile storages (being anywhere: local or
remote), with the upper level being a local cached (and back-upped
with no history) of the current version, commiting being a special
command saying that this version is to be saved in a versioning
WORM;

3) One server (that could simply be special instances of 2) )
to contact to centralize requests for sharing, knowing where the files
are in whatever version, with scriptable policy about the delay for
requiring the canonical version in order to save it in one or more
back-upped WORM systems a changed file, with the ability to reconstruct
information from local caches when a version of the file is missing in
the authoritative servers, and the possibility to redirect a request
to another local cache (if allowed by administration) even if the
canonical version has not been for the moment saved in an authoritative
server.

But all this (except perhaps for the "tentative" layer that is not
exactly a "/tmp") exists more or less.

The problem is to try to make the thing reliable and efficient.

I wonder too if the aliases of the file should be in the low level
filesystem (like hard links), or if the filesystem should have a
canonical name (and only one), and the user aliases for a same content
(several user names for the same content; or several user names for
different versions of the same content) should be a separate feature,
the filesystem keeping only one pair (some uniq id + some canonical
utf-8 userlevel name---its birthname).

Plan9 has already some chunks of all this. And AFS, if I read
correctly, was not a panacea and, if I'm not mistaken, is declining or
is even more or less orphaned.

The WORM and deduplication of blocks was, for me, a feature discovered
with Plan9. And I still think it's a great idea and a basis for VCS.
And it seems not many have got it right in this area---from what I
read, it was supposed to exist with ZFS but it does not widely exist
in the implementations and I seem to recall that even when it is
existing, its use is discouraged.
-- 
        Thierry Laronde <tlaronde +AT+ kergis +dot+ com>
                     http://www.kergis.com/
                    http://kertex.kergis.com/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C

  reply	other threads:[~2024-05-08 20:38 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-06 11:32 Rocky Hotas
2024-05-06 11:58 ` Alex Musolino
2024-05-06 12:43 ` ori
2024-05-06 15:16   ` Scott Flowers
2024-05-06 15:37     ` sirjofri
2024-05-06 16:32     ` Stanley Lieber
2024-05-06 22:18   ` Rocky Hotas
2024-05-06 22:59     ` ori
2024-05-06 23:00     ` ori
2024-05-07  8:22       ` Rocky Hotas
2024-05-07  8:29         ` Frank D. Engel, Jr.
2024-05-07  9:03           ` Rocky Hotas
2024-05-07  9:14         ` sirjofri
2024-05-07 21:11           ` Shawn Rutledge
2024-05-07 21:35             ` Kurt H Maier
2024-05-07 21:45               ` sirjofri
2024-05-07 21:54             ` sl
2024-05-07 21:58               ` sl
2024-05-07 23:15                 ` Lennart Jablonka
2024-05-07 23:16                 ` Shawn Rutledge
2024-05-07 23:45                   ` Shawn Rutledge
2024-05-08  0:34                   ` Kurt H Maier
2024-05-08  0:35                   ` sl
2024-05-08  1:05                     ` Jacob Moody
2024-05-08  1:24                       ` sl
2024-05-08  7:22                         ` hiro
2024-05-08 14:04                           ` Stanley Lieber
2024-05-08 12:08                         ` Stuart Morrow
2024-05-08 16:37                           ` Brian Stuart
2024-05-08 20:16                             ` hiro
2024-05-08 21:26                               ` Stuart Morrow
2024-05-08 21:17                             ` Disconnection-tolerant / distributed filesystems (was Re: [9front] Enabling a service) Shawn Rutledge
2024-05-08 14:25                         ` [9front] Enabling a service Jacob Moody
2024-05-08  3:41                       ` Ori Bernstein
2024-05-08  4:09                         ` sl
2024-05-08  8:39                           ` Frank D. Engel, Jr.
2024-05-08 14:17                             ` Jacob Moody
2024-05-08 15:49                               ` Frank D. Engel, Jr.
2024-05-08 16:10                                 ` Jacob Moody
2024-05-08 16:33                                   ` Frank D. Engel, Jr.
2024-05-08 17:27                                     ` Jacob Moody
2024-05-08 18:00                                       ` Steve Simon
2024-05-08 19:46                                         ` hiro
2024-05-08 19:46                                   ` Roberto E. Vargas Caballero
2024-05-08 20:34                                     ` tlaronde [this message]
2024-05-08 14:57                   ` Lucas Francesco
2024-05-08 15:10                     ` an2qzavok
2024-05-08  2:11             ` Thaddeus Woskowiak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZjvhyQ8qfbi3cGHO@kergis.com \
    --to=tlaronde@kergis.com \
    --cc=9front@9front.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).