#diasporadev

dredmorbius@diaspora.glasswings.com

How to Refer to Diaspora* Profiles Using Links

... and Otherwise --- Many Ways, Many Traps


Diaspora* being what it is, there are four principle ways to refer to a specific profile. Three are useful, though each in different ways, the fourth ... usually is not.

With many people switching pods either in the recent past or near future, understanding the differences, and their pros and cons, is helpful. This is also useful in referring to troll, sockpuppet, and spam profiles, for people tracking and sharing those. Unfortunately, there's accumulated software and system cruft,, unexpected behaviours, and resulting confusion over this.

I'm discussing alternatives, pros, cons, results, and methods here.


Three Recommended References

TL;DR: I recommend in generaly using all three of these references for maximum clarity and utility. I'm picking on @Lee Rothstein here as I'm adapting this post from a comment I'd just made on their own migration announcement:

I recommend NOT using the "/people/" form of link as it is almost always useless to viewers.

I explain this below.


Clickable profile reference:

@Lee Rothstein

Pro: Logged-in Diaspora* and Fediverse members can directly click on or hover over the link to add to / edit Aspects. Clicking on the link takes members directly to their Pod's instance of the profile's page.

Con: The profile's Pod is not directly viewable. Especially where people are changing Pods it is difficult to tell which Pod is being referenced. There are also problems with sock-puppet or spoof profiles impersonating others. Non-member / general public viewers are usually directed to a login/registration page. The actual username / handle name may not be apparent.

How to enter

Because Diaspora* interprets and modifies even escaped and code-block versions of profile-link references, I cannot show the actual markup directly, but split it in two parts.

The general form is @name@pod-url. For any extant user, ... that reference even in backticks or a code block will be interpreted and the entered code won't be presented when a post is viewed. The transformation is also present when extracting source markup from a post's JSON link, requiring profile references to be edited when resubmitting / re-editing posts using this method.

Instead I approximate by leaving off the initial @ character, as here. Include the initial @ to create the actual link.

{drldr@diaspora.permutationsofchaos.com}

The intended rendering is achieved by including the above plus an added initial @:

@Lee Rothstein

That can be clicked on directly, a hover-card will appear, and your profile can be followed from there, or your profile's page opened directly.

If I do include the initial @, even within a code block or backtics, Diaspora* expands the user name as well, after submission (so you won't catch this in preview), even in a raw-code block, as here. Again, what was entered was @ followed immediately by `{drldr@diaspora.permutationsofchaos.com}:

Backticks: @Lee Rothstein

Code Block

@Lee Rothstein

Raw full username reference

drldr@diaspora.permutationsofchaos.com

Pro: This shows the username and pod unambiguously. It's possible to tell what Pod is being referenced. The string can be entered into Diaspora*'s Search box to find the associated profile. (Diaspora* seems to really like hiding Pod context...)

Con: The reference isn't a link and cannot be interacted with and won't directly bring up the user's profile.

How to enter

Input the full user-handle reference leaving off the initial @ and surrounding curly braces ({}), inside backticks (`):

Lee Rothstein's raw profile: `drldr@diaspora.permutationsofchaos.com`

Renders:

Lee Rothstein's raw profile: drldr@diaspora.permutationsofchaos.com


User home-pod URL reference:

https://diaspora.permutationsofchaos.com/u/drldr

Pro: Universal access for all Diaspora* AND non-DIapsora* viewers. Provides a clickable link to bring up member's Pod homepage. Will show content even if the user, Pod, or individual posts are locally blocked. Can be viewed by the general public and non-Diaspora* members, or when not logged in to a Diaspora* Pod. Unambiguously shows the Pod the profile belongs to.

Con: The link isn't interactable except to members of the profile's own home Pod. Many members won't be able to use this page to add or remove the profile from Aspects, to Ignore or Unignore the profile, or to interact (Like, Comment, Share) posts and content.

How to enter

As a standard URL. Angle braces (<>) remove ambiguity for referencing a URL, though they are not strictly necessary here.

Lee Rothstein's profile page:  <https://diaspora.permutationsofchaos.com/u/drldr>

Renders as:

Lee Rothstein's profile page: https://diaspora.permutationsofchaos.com/u/drldr

----.

Generally do NOT use the /people/GUID/ reference

I see this used often, and it is the link format generally presented internally on Diaspora* for profile references. In most cases it will redirect the reader to a login/registration page rather than the profile in question. This tends not to be useful or the intended result.

/people/GUID/ reference

https://diaspora.permutationsofchaos.com/people/e85721a07a29013ab1b60242ac120002

I'll note that Lee's profile does seem to appear for me, proving that Diaspora*'s inconsistancies are inconsistently inconsistent. This is not usually the case and is not reliable behavour. An alternate profile shows, at least as of now, the more typical result, a login/registration page on Glasswings:

https://diaspora.glasswings.com/people/3eefd570b6d001395a191eac510f7330

Pro: The URL is easy to find for the submitter. This is the link that's generally shown when referring to a profile within Diaspora* Unfortunately it is useless to virtually everyone in the world.

Con: The link is typically useless to anyone not on the same Pod as you, and especially the general public. Most will be redirected to a login/registration page, which is probably not your intent.

How to enter

This is usually the link given when seeing a profile reference on Diaspora* As noted, Lee's profile seems to work for me, though @tom grzyb's does not, so I'll use tom's to illustrate the more-typical behaviour. I believe the hexadecimal string is the profile's own GUID (globally unique identifier), so I'm calling this the "/people/<GUID/' method.

Selecting the URL from that reference I get:

<https://diaspora.glasswings.com/people/3eefd570b6d001395a191eac510f7330>

Rendered:

https://diaspora.glasswings.com/people/3eefd570b6d001395a191eac510f7330

Opening that link in an incognito browser session, where I'm logged out, I see the Glasswings login/registration page. This is ... not especially useful, and isn't my intended result.

Oddly, in the case of Lee's profile, I do see his profile page. I'm not sure why this is.

The /people/ version is ... highly unreliable and usually does not work in my experience.


Bonus tip: Public Extended Bio visibility

Among information presented on a user's profile page may be an extended biography. This is not visible to the general public by default. In general I recommend you do provide information here, even if pseudonymous (as I have), especially when migrating between Pods. Of course if you have specific reasons not to do this, then don't.

**To make the extended biography information publicly visible, change the setting here: /profile/edit (Diaspora* Pods only, other Fedeiverse software may use different references).

For "Visibility of your extended profile" select "Public" to enable non-logged-in readers to be able to see your extended bio description, then save your profile settings by pressing the "Update Profile" button at the bottom of the page.

And if you've recently moved from another pod and want others to know your previous identity, this is a good place to leave tracks on your NEW profile. If you're planning to move pods in the future, you can also leave a reference here on your OLD profile.

See my own profile bios here as examples:


#Diaspora #Tips #DiasporaDev #Pluspora #Joindiaspora #Bio #Migration

dredmorbius@diaspora.glasswings.com

Can someone #ELI5 Diaspora short vs. GUID post references?

TL;DR: There are two distinct ways to reference a post and then it gets complicated.


GUID vs. Short-Form Post References

That is, what is the difference between:

And

Both refer to the same content. In this case, a reshare of my "Markdown Quick Reference" post from Joindiaspora. Which has its own GUID (ROOT_GUID), but let's not get ahead of ourselves....

In my experience, most Diaspora* users, including those who've been on the platform for ten or more years, or are developers or Podmins get confused, confounded, or tripped up by this. It is a BAD FEATURE and BAD BEHAVIOUR by this objective measure.

The long number is a GUID, referenced as such in profile data exports and when referencing content with a .json extension, but I’m not sure what the short value (978058) is, or how it is derived. Any guidance on this is appreciated. There is no mention in the Diaspora* documentation that I can find.

I know that bb9efd507ee8013a5b42448a5b29e257 is the post GUID, and encodes for my profile (07eeb013a5b40448a5b29e257), leaving 029707b as ... the post-specific bit.


GUID as Universal Identifier

The GUID reference is common regardless of the hostname of a given Diaspora* Pod. So I could link any of the following hosts where if federated the same post content appears:

There is the possibility that the post is not yet federated, as seems to be the case for diasp.de as I write this (Archive). Comments may differ depending both on when federation occured as well as Pod-specific moderation and federation policies. E.g., users or Pods specifically blocked at a Pod level won't be federated to the Pods blocking them.

The short-form reference is specific to a given Pod. The following do not refer to the same content, or even any content at all, despite having the same short identifier:

Results here will be an essentially arbitrary set of posts, or missing (404) content.


Local-Part URLs

The fact that GUID references are, well, global unique identifiers, means that it's possible to construct a "local-part" reference to a particular post and be guaranteed that it will refer to the same post on all instances, though it may or may not resolve unless the post has been previously federated. You'll have to construct a Markdown link to do so. Just the local part by itself, even within angle brackets to force link resolution, will not be interpreted as a hyperlink:

</posts/bb9efd507ee8013a5b42448a5b29e257>

Resolves as:

... which is not in fact a hyperlink.

Here I'm using the local part URL as the link text as well, to achieve the result I'd intended the above example to produce.

The Markdown:

[/posts/bb9efd507ee8013a5b42448a5b29e257](/posts/bb9efd507ee8013a5b42448a5b29e257)

And the rendered content:

/posts/bb9efd507ee8013a5b42448a5b29e257

More usually one might refer to the post by descriptive text, such as, say, "Markdown Quick Reference reshare". Again, that references the same content on any Diaspora* pod to which the post has been federated. A side-effect is that members of such pods can then interact with the post directly: like, re-share, comment, dismiss, or flag.

On any Pod to which the post has already been federated that link will refer to the same content.

This, incidentally, is why I often reference posts in the form of named-local-part-link, brief-context, and host-specific-link, as with:

[Markdown Quick Reference reshare](/posts/bb9efd507ee8013a5b42448a5b29e257)

> I’d like to fix a few of the omissions and a couple of mis-categorisations, such as the role of the description text in images.

<https://diaspora.glasswings.com/posts/bb9efd507ee8013a5b42448a5b29e257>

Which renders as:

Markdown Quick Reference reshare

I’d like to fix a few of the omissions and a couple of mis-categorisations, such as the role of the description text in images.

https://diaspora.glasswings.com/posts/bb9efd507ee8013a5b42448a5b29e257

The first link will work for Diaspora* users. The second will at least point members of pods to which the content hasn't federated OR of other systems to the content in question. They may not be able to find an interactable version, but they can at least read the post. That's been the best solution I've been able to find.

By contrast, a liink to a remote Pod with a short-form reference does not provide content that is accessible to other Diaspora* members not on that pod. Visit, say, https://diasp.org/posts/978058, and try to sort out how to find that post's GUID. The ... most intuitive ... method I can find is to request the post's JSON abstract: https://diasp.org/posts/978058.json, which provides the following highly user-friendly interface:

{"id":978058,"public":true,"guid":"88207916cf429559","created_at":"2012-04-16T03:57:58.000Z","provider_display_name":null,"interacted_at":"2012-04-19T16:30:46.000Z","text":"![image name](/gocamo/9e0f11531bce86f327414ce0b965ad69cd4af3dc/687474703a2f2f64323477366273726862656839642e636c6f756466726f6e742e6e65742f70686f746f2f333832323537375f343630732e6a7067)\r\n#jesus #funny #lustig","post_type":"Reshare","nsfw":false,"author":{"id":79239,"guid":"7103eca9cc32b7ea","name":"St. Martin (der)","diaspora_id":"eiseskaelte@despora.de","avatar":{"small":"/gocamo/1b372f038c8b74131ae147c4f98306c0d4005c96/68747470733a2f2f646573706f72612e64652f75706c6f6164732f696d616765732f7468756d625f736d616c6c5f31653962636565363236363635363463383462312e6a7067","medium":"/gocamo/dcee8773f5984d2465a4be58a2b0e1de194b86b4/68747470733a2f2f646573706f72612e64652f75706c6f6164732f696d616765732f7468756d625f6d656469756d5f31653962636565363236363635363463383462312e6a7067","large":"/gocamo/b3d8ca033f5fa63518f15078e3c95b1c3f5566cd/68747470733a2f2f646573706f72612e64652f75706c6f6164732f696d616765732f7468756d625f6c617267655f31653962636565363236363635363463383462312e6a7067"}},"o_embed_cache":null,"open_graph_cache":null,"mentioned_people":[],"photos":[],"root":{"id":971667,"public":true,"guid":"9809f7ca269e53ce","created_at":"2012-04-13T13:28:05.000Z","provider_display_name":null,"interacted_at":"2012-05-29T21:29:43.000Z","text":"![image name](/gocamo/9e0f11531bce86f327414ce0b965ad69cd4af3dc/687474703a2f2f64323477366273726862656839642e636c6f756466726f6e742e6e65742f70686f746f2f333832323537375f343630732e6a7067)\r\n#jesus #funny #lustig","post_type":"StatusMessage","nsfw":false,"author":{"id":64425,"guid":"70a53686776a814d","name":"Susi Kunterbunt","diaspora_id":"susikunterbunt@joindiaspora.com","avatar":{"small":"/gocamo/ec18e26cf52a80516d8f5eeaab0f4dad2ec89483/68747470733a2f2f6a6f696e64696173706f72612e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f696d616765732f7468756d625f736d616c6c5f36303565316365626236626537313962636633332e6a7067","medium":"/gocamo/2962f942cd84af4979ac80638bbaee941866ea1e/68747470733a2f2f6a6f696e64696173706f72612e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f696d616765732f7468756d625f6d656469756d5f36303565316365626236626537313962636633332e6a7067","large":"/gocamo/5a37c0f77aab27117fe1c13b977179dfe013f2a3/68747470733a2f2f6a6f696e64696173706f72612e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f696d616765732f7468756d625f6c617267655f36303565316365626236626537313962636633332e6a7067"}},"o_embed_cache":null,"open_graph_cache":null,"mentioned_people":[],"photos":[],"root":null,"title":"image name http://d24w6bsrhbeh9d.cloudfront.net/photo/3822577_460s....","location":{"address":null,"lat":null,"lng":null},"poll":null,"poll_participation_answer_id":null,"participation":false,"interactions":{"likes":[],"reshares":[],"comments_count":0,"likes_count":2,"reshares_count":1}},"title":"image name http://d24w6bsrhbeh9d.cloudfront.net/photo/3822577_460s....","location":{"address":null,"lat":null,"lng":null},"poll":null,"poll_participation_answer_id":null,"participation":false,"interactions":{"likes":[],"reshares":[],"comments":[],"participations":[],"comments_count":0,"likes_count":1,"reshares_count":0}}

If my best option is to unholster jq ... there seems to be some kind of failure at hand.

For the record, not even page source seems to help as the GUID isn't referenced within it by either label or value. See [view-source:https://diasp.org/posts/978058](view-source:https://diasp.org/posts/978058). Note that that link only works if your browser supports the view-source: meta-protocol. You may need to use tools such as curl or wget instead to grab raw page source.

I'll also note that for posts archived under their short-reference URL won't suffice to indicate GUID as that information is not available until an independent and additional JSON request is made. That is not possible for a downed Pod or deleted post or user.

Oh, and for the record, the GUID for that diasp.org post is 88207916cf429559.

In posts that are reshares of earlier posts, you'll also find a ROOT_GUID reference, which is the GUID of the original ("root") post reshared.


Diaspora* vs. other Fediverse Services and Federation

I've been careful to specify Diaspora* pods, as non-Diaspora* services (Friendica, Hubzilla, SocialHome, ...) may not use the same local-part reference.

Mind, now we've also got Federation to contend with, and not all content federates to all Pods. Worse, I'm not aware of a way to force federation of content through some pull action which isn't already federated via a Follow, Reshare by some profile followed on a Pod, or a direct mention of some profile on a Pod. Despite a GUID, simply requesting that GUID-identified content on a Pod won't generate a federation event. Though one would think that the encoded profile tag might identify the Pod the profile is on.

In practice, I forced Federation of many of my early Joindiaspora posts to Glasswings by specifically mentioning my Glasswings profile from a profile which could see the post, typically the original authoring profile --- my old Joindiaspora proifle @Doc Edward Morbius (moved to Glasswings). (Generating a huge volume of "ping spam" Notifications alerts for anyone who'd previously subscribed to those posts... Again, my apologies, but I couldn't find any other way.)


Making all of this all the more complicated... Why a Short-Reference default?

... Diaspora* defaults to using short vs. GUID references, most especially in post links and notifications.

To view the GUID reference one must click on either the hidden-by-default link-icon on a post in Stream view, or the date indicator within a post page. (You can view either of these yourselves in stream / post view.)

This means that in most cases, people are using non-portable references to posts. When viewing posts publicly, the GUID is not shown or accessible.

Among reasons why this matters: I've spent two months ensuring that most of my posts from the now-defunct Joindiaspora Pod are archived at the Internet Archive (about 73% success rate) and Archive.Today (approaching 100%). But I'd archived the GUID reference URLs of those posts. The short-URL formats, including the short-URL formats included for other posts referenced within those archives or of archives of Profile pages are not archived. External links to short-URL formats are also not archived.

All of which is something of a mess.


Which leaves us with a few questions

Q: What is the official name of the short-post reference?

Poking at page source suggests data-guid. That also does not exist in the Wiki or Discourse. There are six references presently in the Diaspora* codebase.

Q: Is there any extant documentation or discussion of this at all?

I've found none at the Diaspora* Wiki or the Diaspora* Discourse sites.

Q: Why distinguish "short" and "GUID" references at all?

Q: Is there some cost to GUID references I'm unaware of?

Q: Why are "short" post references the default reference?

Q: Why are "short" post references used at all?

Q: Why are GUID post references not exposed for general-public access to a post?

Q: Why does a local request for GUID-identified posts not trigger a federation event and fetch request for that post?

I could probably extend that list and likely will in comments. But it's a good start.


Shares and boosts appreciated.

#diaspora #eli5 #help #tips #FAQs #GUID #federation #DiasporaDev #Podmins