unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: John Yates <john@yates-sheets.org>
To: Drew Adams <drew.adams@oracle.com>
Cc: Michael Heerdegen <michael_heerdegen@web.de>,
	Help Gnu Emacs mailing list <help-gnu-emacs@gnu.org>
Subject: Re: Temporary notes in Emacs buffers?
Date: Mon, 6 Jan 2020 09:18:56 -0500	[thread overview]
Message-ID: <CAJnXXojFedoUeatEaSBqFn=HDZrMeo+0jL-FKgqcd+Vz0Zc2vg@mail.gmail.com> (raw)
In-Reply-To: <2e0e01a2-d945-4492-94ec-eb903764a7ef@default>

On Sat, Jan 4, 2020 at 11:05 AM Drew Adams <drew.adams@oracle.com> wrote:
> > An approach not yet mentioned is including some form of
> > UUID as a file local variable.  In such a setting notes
> > indirect through a persistent UUID-to-path map.  A file
> > handler recognizes relevant operations on UUID annotated
> > and updates the map.  This might also include updating
> > the new copy's UUID to preserve uniqueness.
>
> My question about this is (still) how do you use
> `find-file' (or something else) to open a file
> for editing, given just the inode/UUID?
>
> Such a thing could be recorded in a bookmark,
> but how to use it, to get to the file, with
> Emacs?

This is rather half baked.  It combined ideas from Gnu arch and
Apollo Computer's distributed file system.  The common thread is
the idea of a UUID.

The Gnu arch DVCS embedded the UUID in the text of a file being
managed (essentially an elisp file local variable).  This was
crucial to supporting renaming.

An Apollo UUID contained the equivalent of the MAC address for
the node which first handed out that UUID.  UUIDs were used in
many ways and many APIs.  In particular the UUID replaced an
inode index.  This made the ID of a file container universal
rather than file system relative.  The equivalent of the inode
table was a persistent hash table indexed by UUID.

File lookup by UUID was not only supported but fundamental:
directories were mapping from names to UUIDs.

Simplified file open by UUID:

  First: attempt local open:
  * Probe local file system's hash table using UUID as key
  * If found return a local file connection

  Fallback: attempt remote open:
  * Extract MAC address from UUID
  * If self then return file-not-found
  * Use MAC address to talk to node that issued that UUID
  * Ask that node to open a file by UUID
  * Remote node performs only the local half of file open
  * If found return a cross-network remote file connection

  Otherwise return file-not-found

The above works up until one allows UUID identified objects to
migrate across nodes.  To support such use cases Apollo added a
redirection service.  The idea was that any node that allowed a
UUID containing its own MAC address to be exposed on another node
was responsible for tracking that UUID.  Persisting a foreign
UUID involved first obtaining permission from the source node's
redirection service.  This allowed the source node to record
whither its UUID had migrated.  With the redirection service in
place prior to probing the local file system's hash table for a
local UUID one would ask the redirection service whether the
presented UUID had been migrated.  If so the result was a
redirect status identifying the node now hosting that UUID.

If any of that makes sense then perhaps some of the ideas can
be turned into a design using a persistent UUID-to-path map to
associate notes to files identified by an embedded UUID.

/john



  reply	other threads:[~2020-01-06 14:18 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-27 10:19 Temporary notes in Emacs buffers? Marcin Borkowski
2019-12-27 10:43 ` Mpho Jele
2019-12-27 11:51   ` tomas
2020-01-01 21:48     ` Marcin Borkowski
2019-12-27 15:54 ` Drew Adams
2020-01-02 17:49   ` Marcin Borkowski
2020-01-05  2:37   ` Michael Heerdegen
2020-01-05 17:54     ` Drew Adams
2020-01-06  5:18       ` Jean-Christophe Helary
2020-01-06 15:12         ` Drew Adams
2020-01-09  1:03           ` Michael Heerdegen
2020-01-09 23:35             ` arthur miller
2020-01-10  4:58               ` Michael Heerdegen
2020-01-10  9:30                 ` Robert Pluim
2020-01-10 10:01                   ` Michael Heerdegen
2020-01-10 17:04                   ` Drew Adams
2020-01-10  9:10               ` Unknown
2019-12-27 17:48 ` Sharon Kimble
2020-01-01  1:42 ` Michael Heerdegen
2020-01-01  4:45   ` Drew Adams
2020-01-01  5:00     ` Michael Heerdegen
2020-01-01  6:25       ` Drew Adams
2020-01-01 20:34         ` John Yates
2020-01-01 21:19           ` Drew Adams
2020-01-01 21:47           ` Marcin Borkowski
2020-01-02  1:25         ` Michael Heerdegen
2020-01-02  3:16           ` Drew Adams
2020-01-02  3:45             ` Michael Heerdegen
2020-01-02  5:30               ` Drew Adams
2020-01-02 15:41                 ` Drew Adams
2020-01-03  1:07                 ` Michael Heerdegen
2020-01-03  3:35                   ` John Yates
2020-01-03  6:38                     ` Drew Adams
2020-01-03  7:06                     ` Drew Adams
2020-01-04  6:39                     ` Michael Heerdegen
2020-01-04 16:04                       ` Drew Adams
2020-01-06 14:18                         ` John Yates [this message]
2020-01-06 14:34                           ` tomas
2020-01-06 15:19                             ` John Yates
2020-01-06 15:31                               ` tomas
2020-01-06 16:28                               ` arthur miller
2020-01-03  7:00                   ` Drew Adams
2020-01-03 13:31                   ` arthur miller
2020-01-05  2:18                     ` Michael Heerdegen
2020-01-11  7:36         ` Michael Heerdegen
2020-01-11 10:00           ` Jean-Christophe Helary
2020-01-11 11:38             ` Michael Heerdegen
2020-01-11 16:00           ` Drew Adams
2020-01-11 23:46             ` John Yates
2020-01-12  2:47               ` Drew Adams
2020-01-12  7:31             ` Michael Heerdegen
2020-01-12 16:37               ` Drew Adams
2020-01-14  7:08                 ` Michael Heerdegen
2020-01-14 17:32                   ` Drew Adams
2020-01-15 23:10                     ` Drew Adams
2020-01-02 17:48     ` Marcin Borkowski
2020-01-02 17:48   ` Marcin Borkowski
2020-01-09  3:57 ` Michael Heerdegen
2020-01-15 18:43   ` Marcin Borkowski
2020-01-20 12:40     ` Michael Heerdegen

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to='CAJnXXojFedoUeatEaSBqFn=HDZrMeo+0jL-FKgqcd+Vz0Zc2vg@mail.gmail.com' \
    --to=john@yates-sheets.org \
    --cc=drew.adams@oracle.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=michael_heerdegen@web.de \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).