Identity / Key: What are the "name", "displayname" and "username"?

Even after reading through

and pijul/pijul - Discussion #521 - Can’t get a new repo going, pijul/manual - Discussion #58 - Update documentation on keys/identities including the change proposed there, I’m still not sure I understood what’s what.

So it seems like “key” has been renamed to “identity”, probably to better capture what the concept it is actually about, and that with pijul identity new I can create such an identity. (Which I’d need to pijul record changes.) But what are all those different names?

Here’s what I could find out so far:

interactive prompt pijul identity new option arg / option description pijul identity list findings
“Unique identity name” (none, use positional argument [NAME]) “Set the new identity name” Entry directly under “Identities” Must be locally unique. Positional argument ignored (and default or answer to prompt used), unless --no-prompt is passed.
“Display name” --display-name <DISPLAY_NAME> “Set the display name” “Display name: …”
“Remote username” --username <USERNAME> “Set the username” “Login: <USERNAME>@…”

With that I can make some guesses. Thus: Are the following assumptions correct?

  • The “Unique identity name” is not part of the identity, but just a way to reference it locally. (Similar to an “Account Name” in Thunderbird or to the name of a Git “remote”.)
    • It is never transmitted anywhere outside the local machine, even when the concerning identity is being transmitted.
  • That pijul identity new prompts for “Unique identity name” even when the positional NAME argument is passed (and that it ignores whatever is passed there, in favor of the reply to the prompt or even the default) unless --no-prompt is also passed, is simply a bug.
  • The “Display name” is for how I want others to recognize me when I’m acting with said identity. (E.g. when authoring changes.)
    • It can be my real name (or part thereof), a pen name, nickname, username or other alias,
    • It does not need to be unique, neither among my own identities nor globally.
    • … nor does it need to correspond between different of my identities. (⇒ I can have as many alter egos as I have Pajul identities.)
  • The “Remote username” is used for authentication towards the service pointed to by the “Remote URL” (e.g. Nest).

This was confirmed on Zulip:

I asked:

Is the “Unique identity name” passed to pijul identity new as a positional argument part of the identity to be created (and will thus be transmitted when making the identity known to others) or is it just a local way to refer to the identity, similar to how Git remote names are local ways to refer to other Git repositories, identified by URLs? (With the difference that a Pijul unique identity name would be scoped to the operating system user account, while a Git remote name is only scoped to the (local) repo.)

and @Finchie replied:

You’re pretty much spot on, it’s the second one. “Unique identity name” is just a local alias to the public/private key pair stored on disk.

I got a reply on Zulip on this:

@_Finchie|455831 said:

@_Raphael Das Gupta|662705 said:

Is it a bug that that positional argument seems to be ignored unless --no-prompt is passed?

Quite possibly! The whole --no-prompt architecture is very fragile and I’m in the middle of re-working it.