[Standard Idea] Community tags / Account self-tags

One of the topics that’s consistently come up when discussing groups and communities on Bluesky is discovery: how can users browse and find groups that fit their interests, needs, values, and identity?

Following the groups-as-DIDs pattern, I’d like to spitball a simple concept and see what people’s initial reactions are: self-tagging, for accounts.

Any account — whether a user, a labeler, or a group — could attach tags to itself as a claim of association (e.g. #furry, #swiftie, #music). These would be distinct from post tags: they attach to the account itself, not to individual posts. Tags would be declarative, so meaning emerges from usage rather than subreddit-style registration.

For groups, tags could be used for discovery: a group’s tags get indexed and surfaced (“here are groups that tagged themselves #music”). Nothing fancy needed there to start.

For users, tags would act as an optional signal of identity and affinity. These could be generic (e.g. #portland). But given the open nature of tags, users could — and probably would — use them as a creative vehicle for social signaling and in-group formation: slang or shorthand that mutates inside a subculture and signals who’s really in it (#protocolnerds, anyone?). There is a well-trodden history of this phenomenon in platforms such as Tumblr, whose robust tagging system allowed for uses and social expression beyond its intended purpose (see here and here).

These novel, user-originated tags could then be picked up by groups to gain discovery and foster community around exactly the identity that emerged organically. Unlike post tags, account-level tags would persist as part of an identity; they would give users a durable surface for individual and communal social signaling, and groups a path to genesis around it.

I’d love to hear thoughts on this. Does this feel like a useful standard to build toward, or does it strike any hesitations?

2 Likes

This sounds cool! I think this currently surfaces in profile descriptions a bit as some folks add those types of tags there, but creating an explicit subfield for it frees up some description space. I think it’d still be good to limit the total number since otherwise I imagine folks spamming every possible tag for discovery.

I definitely agree on an arbitrary cutoff! Without one I would definitely imagine people tagging every adjacent community just for reach.

Beyond the spam question, though, I would actually argue the value here is bigger than just freeing up bio space. The form tags take has a direct effect on whether people use them at all. Tumblr, the one major social network with a truly lively tag culture, treats tags as a first-class element: they live in the outline of the post rather than inline, get their own dedicated field when composing, and are used natively to sort a user’s posts by tag, for both the poster and visitors. My impression is that this made tags a real cultural touchstone for fandoms on Tumblr (though I’d love @essentialrandom.bsky.social’s opinion given her closer experience with it).

By comparison, tags everywhere else (including Bluesky posts and bios) are almost always inline and visually indistinguishable from a link. Almost nothing in the UI marks them as their own unique element, let alone encourages use.

The tagging system and its effects are some of the most beloved aspects of Tumblr’s community-oriented userbase (see the papers above), and I would argue it proves that if you give tags real design care, people will use them, to everyone’s benefit. Self-tags could offer real affordances for users and communities too, if they get that same care.

2 Likes

Similar line of thought here: Interests Lexicon (and graph); I suggest mods merge these threads, with this newest thread as the title.

2 Likes

Oh! Oh! I have opinions about this!

Actually, you could say I have a prototypes about this because it’s what AO3 Ratings labeler and the Fujoshi Type labeler were built to be. These are not labels anyone gives: they’re self-assigned by liking specific posts. I specifically talked about these at the First AtmosphereConf, and pointed out how they can act as “in-group signaling” without necessarily being part of enforced moderation.

There’s a few interesting differences from tags:

  • The labeler gives a certain meaning and grammar to them (for example, you can’t be both a General Audiences and Mature account)
  • Labeled posts/account are “groupable” but not searchable (which is important to some folks)
  • They give you a visible badge, which makes people’s brains happy

I think there’s a lot of things that can converge in such systems: labeling is a form of tagging, attestations are a form of tagging, free-form tags are a form of tagging, and so is saying “this community is about WikiData Entry Q82464”, which also directly links it to the corresponding AO3 tag.

(this is on wikidata.org, and it delights me)

I’m happy to talk more about this, but just want to be upfront that you’re not going to make one single tagging system. Fanfiction people are both super-proud of AO3’s tagging taxonomy, and I have heard a lot about all the ways it falls short and doesn’t serve people’s needs.

Anyway, this needs some scoping work, and some thought about what to do when 1237891 different systems emerge…cause they will.

Do not make me start talking about tags on Tumblr. You are gonna regret it. :joy:

Jokes aside, I’m whispertags #1 defender and appreciator. I should write my 7-years-in-the-making post on how to do them right, because in my heart they remain the interpersonal communication standards every platform measures itself against.

With that said, these are a bit orthogonal because ironically what made them work is also that Tumblr’s tagging system is completely borked. Which also means that if you give no thoughts to your tagging system, sometimes people will make beautiful things out of the brokenness.

(We should think about it though)

Yes, I think this discussion also goes into Interest Lexicons. I can probably do the merging/ask for the power to, but I’m not sure what that looks like. Will it become a new thread?

:down_arrow::down_arrow::down_arrow: Edit: merged thread starts here (ish) :down_arrow::down_arrow::down_arrow:

1 Like

No, it’ll literally merge all the posts together to one thread, ordered chronologically.

Many different projects and people, including @flo-bit.dev, @tompscanlan.bsky.social & @gui.do to name only a few, are thinking about some way for people to state their interests.

This can be on the personal-profile level, but also in the context of a groups-profile, an event page, even a blog post.

GitHub supports ‘topics’ for repos only, but they actually end up working for profiles as well since profiles on GitHub are repos.

A v0.1 lexicon for ‘interests’ wouldn’t need to be much more than that.

At scale there’s also need for a support-system of sorts to deal with things like:

  • de-duplication (stack overflow did a good job of this with its tags)
  • context (the same word/interest can carry different meanings in different context)

Network of Shared Purpose

I’ve done many projects over the years, and for each and every one of them there’s always someone out there with the interest and capability to help me solve some problem, usually because they’ve already been solving that problem for their own project. But it’s unnecessarily difficult for us to find each other.

I think we can make it much simpler for people on the internet to go ‘I’m interested in working on x/y/z’ and be connected with other people who share that interest, especially among open source practitioners.

Imagine a simple directory & search based on people’s public profiles. In the context of my to-be-revived Fish Folk project for instance, I wanna know about people who are into ‘open source’, ‘gamedev’ and ‘rust’.

I’ve searched manually in this way on GitHub many times, and connected with dozens of collaborators that way.

I’ll for example see that someone already worked on a 2D pixel platformer game in Rust already, so I just get in touch and say

hey, seems like we might have a shared interest! Wanna talk?’.

There’s a rather incredible amount of people out there working on the same kind of stuff without ever getting in touch with the others. The Network of Shared Purpose is effectively a global jobs board, but for mutual collaborations rather than work-for-hire.

Prototyping

Here are some of my special interests:

  • Open source
  • Openness philosophy/praxis
  • dweb protocols
    • atproto
  • Cooperativism
    • steward-ownership
    • not-for-profit
    • post-growth entrepreneurship
  • Indie gamedev
    • Godot
  • Community development

I tend to get along well with anyone who have two or more of these interests in common with me.

Next up we just gotta build more glue layers so that anyone already on atproto can easily participate in this network for people of common interests, or as I like to call think of it, shared purpose.

I have an assortment of notes expanding g on this idea here, but for the purposes on a lexicon discussion it’s best to think primarily in terms of just the foundational ‘tag’ we wanna collectively support.

3 Likes

Haven’t planned interests yet, right now it’s focused on skills (id.sifa.profile.skill) with endorsements (signed attestations from other users). But interests feel like a logical next step and I’d love to see this happen.

There’s overlap, but they’re not the same. Skills = “I can do this”, Interest = “I care about this.” I suppose they’d both use the same dictionary. I think they should be separate records but maybe linkable somehow.

On deduplication… yeah. Stack Overflow’s tag synonym system works because there’s a central team curating it AND the topics are very programming/tech centered.

I think it makes sense to have a skill/interest system, but not sure if alignment in the dictionary makes sense. There will always be a community/tool that will need other/more specific words, which will make no sense to include in another community. No idea how to get that to work though… :sweat_smile:

Sifa.id already reuses community.lexicon.* for location and calendar data, so if interests end up there too I’d probably just use that directly instead of inventing a id.sifa.interest. :flexed_biceps:

1 Like

Also interested in this.

The Smoke Signal LFG feature uses some flat tags and the feedback has been good.

at://did:plc:cbkjy5n7bk3ax2wplmtjofq2/events.smokesignal.lfg/3mdtckku6hl2b

{
    "$type": "events.smokesignal.lfg",
    "tags": [
        "ATProtocol",
        "StayingWarm",
        "Donuts"
    ],
    ...
}

Would be very interested in both long-term / semi-permanent interests as well as time-scoped ones.

2 Likes

I like the Wikipedia approach with its tag(specifier) convention.

That way no term/tag can be captured by one particular meaning. Trying to solve for tag-squatting and duplications might be premature as far as a v1 goes though, I just wanted to acknowledge the inevitability.

1 Like

Also interested, just behind on getting to it. Plan to use it in the future. Landing something in the community lexicon would be great.

Time-based interests is fun. You’re great at translating into lexicon, how would you represent that @ngerakines.me ? Is it an ical recurrence, or several records per interest?

@gui.do do you curate allowed skills somehow, or is any claimed skill allowed? Trying to understand if there is a limited dictionary of skills that users are supposed to pick from, or is any skill name allowed?

1 Like

Good question! Any skill name is allowed at the data layer. The user’s PDS stores exactly what they typed, and I think that’s the right call: you don’t want a protocol-level taxonomy gate-keeping what people can write to their own data store for something as insanely broad as a skill (which can be insanely specific for many different specialists).

The normalization happens at the AppView layer. When a skill record comes in via Jetstream, Sifa lowercases it, trims it, and checks it against a canonical skills table with aliases. So “React.js”, “ReactJS”, and “react” all resolve to canonical “React.” If there’s no match, it gets indexed as-is and queued for review.

AFAIK this is the same pattern Bluesky uses for hashtags, basically. Free text in the record, normalization in the AppView. Other AppViews consuming the same id.sifa.profile.skill records can implement their own normalization if they want.

I bootstrapped the canonical registry from LinkedIn imports (the first wave of users gives you the top ~1000 skill names for free), then cluster unresolved ones periodically. It’s not a curated dictionary so much as a growing alias table. This is something LLMs are pretty good at, don’t do this matching manually…. :sweat_smile:

On the edit UI side, there’s a combobox with typeahead that suggests existing skills from the network (ordered by frequency), but you can always type something new. Think GitHub Topics rather than a strict controlled vocabulary.

Does that make sense? :slight_smile:

Not sure if this is useful input for a shared interest graph, but it was a practical solution for Sifa when I built it 2 weeks ago.

2 Likes

:up_arrow::up_arrow::up_arrow: merged thread ends here :up_arrow::up_arrow::up_arrow:

Well, that was weird! Thanks for suggesting it, I was not… expecting it to work quite like that. I’ve elected to append them so they’d be preserved as the “here’s the previous convo”.

Anyway, now it’s a single convo!

People who were talking about this earlier…any updates? Have you settled on something? Learned anything new?

1 Like

Ahah, me neither, it probably depends on which thread you merge into from.

1 Like

Just ran in to this, interesting topic! (for me at least, would be keen on using this in my App)

Just a quick blast from the past (I am talking communities in the Internet here in like Fido times, that’s way before WWW was even an idea in anybodies head): tagging - posts, people - always sort felt like a one way street. Like me expressing I am into a particular topic or would like to draw attention to a topic.

So a community using a tag could sort allow for a match, finding mutual/overlapping interests. Things became a lot more powerful/useful when we allowed :

  • acknowledging: community claims they are into/about #exampleTag and users in that community confirming that. Guess in today speak you would call that an “upvote”? “like”? …? in some cases a statement like “this community is about #exampleTag and 42 out to its user also have #exampleTag in there profile, …” (automatically by the client) proved to be very helpful and tags became sort of a 2-way-street
  • ohh and we had sort of hierarchical tagging, sort of like #Germany#Bavaria#Pliening , which was (turned out to be) different from just having 3 tags, just to second @erlend.sh point.

I’ve given some thought to something like this before, but I kind of struggled to find a reason as to how tag permutations could be semantically distinct enough to distinguish them from simple combinations. Could you elaborate on how you think this could be useful for users/communities?