Adding Tags to Talkyard
Update 2023-07-19:
- Now there're
basictags in Talkyard (since a year+ back). Listing pages by tag, hasn't been implemented though. o.ONow implemented. And tags can have values and you can sort & filter by value, look: "tags:priority:desc>=3"- Turns out that for some things, like Assign-To functionality, it was complicated to use tags. Instead, Assigned-To is stored in a people-to-posts relationships table (relationship of type Assigned-To), like in a graph database.
/ End update.
Time to add tags to Talkyard?
TL;DR: (Too Long page, Didn't want to Read it) In a month? there'll be plain boring ordinary tags in Talkyard. And tag hierarchies, I hope. /TL;DR.
Here's how tags could look. With colors (optionally), spaces allowed (optionally, admin setting?) — still easy to read the text:
(There's an old tagging system but I think it needs to be rewritten: the tags ids and names are the same, so if a tag got renamed, lots of things would need to get reindexed — not good in Talkyard's case. Update: Done, it's been rewritten.)
Brainstorming tags
The idea with this topic is ~ brainstorming, to think about "all" ways in which tags might get used — so will be simpler to implement tags in a future compatible way. The idea is Not to build all the below stuff the nearest time.
Ok. What can get tagged? Pages, of course. And comments/replies (power user feature). And also, people can get tagged? And categories? And you can tag tags / have parent-child tags, i.e. tag hierarchies. And in the distant future: Maybe one could select and tag text.
Tags have a name (label) ... and, values?
-
A tag value could be a user or a group? Look:
Assigned-To: KajMagnus
(the tag name here is "Assigned-To" and the value is a person). -
Or a number:
Price-Euro: 123.45
orPriority: 5
. -
Or a date:
Event-Start: 2020-12-31 23:00
. -
Or a link? Tag an event topic with
Tickets-URL: https://events.example.com/buy-ticket?eventId=1234
.
Or aHomepage: https://ex.com
tag-value that people can add to themselves — could be visible on their user profile. -
Or the value can be another tag. Let's say there're tags
California
andFlorida
andAlaska
. Then, there can be aEvent-Location
tag, like so:Event-Location: California
. Here's a related topics about events: Add a way to create events, with date and location. Or you could tag a person:Lives-In: Alaska
.The location tag gets it meaning from its parent tag:
Event-Location
orLives-In
. This sort of is tags tagged by tags? Tag hierarchies?Or, software versions: Let's say there're tags
v12.0
,v12.3
,v12.4
. Then you can have these tags:Bug-Appeared-In: v12.3
andBug-Fixed-In: v12.4
. (All of these are tags:Bug-Appeared-In , Bug-Fixed-In , v12.3 , v12.4
.)(Now you can list all topics with tag
v12.3
and find out which bugs got fixed in, and which ones appeared in, version 12.3. Don't know if ElasticSearch's faceted search features would make it possible to find bugs not yet fixed in v12.3 — that is, bugs with anAppeared-In: <= v12.3
tag, but noFixed-In: <= v12.3
tag.)Related post about tag hierarchies — thanks for the ideas @chrscheuer. B.t.w. I really like the ideas in the "Forum Knowledgebase" section incl "These tag groups will be displayed on KB front page". Also related: Displaying, sorting, filtering by tags in the topic lists.
-
A tag value can also be a topic. Let's say you create a "Staff-Notes" tag, which only admins and moderators may use and see. Now, tag user Alex with
Staff-Notes: [topic link]
— now the forum admins and moderators have a way to share notes with each other about the community members. Since the Staff-Notes tag is visible to staff only, the tagged page with notes would also be staff-only by default.Or let's say there's a feature idea topic: "Build Feature Z", with tags
Depends-On: Build-Feature-X
andDepends-On: Feature-Y
— that could mean that feature X and Y need to be completed, before feature Z can get build.
Tag definitions and tag sets
A tag definition could consist of:
- The tag name.
- Who may use the tag? Maybe
Assigned-To
tags could be used only by members of groups Developers and Staff. - Who may see the tag?
Staff-Notes
would be visible to staff only. - Who may edit the the tag definition? Maybe a forum admin creates an
Assigned-To
tag, and wants all Developers to use it — but the devs should not rename the tag, or change it's value from being a person, to being, say, a number; or suddenly let All Members use the tag. - What can be tagged by the tag: Pages, replies? Users and groups? Only oneself? (e.g. tag oneself with
Homepage: https://...
). - Show where? Maybe some tags are less interesting and don't need to appear on the topic list page.
- What value can the tag have: No value? (the default). A number? Start-end date? A page? A person? Another tag, from a set of tags?
There would be tag sets. For example, a Location tag set could include these tags: Alaska
, Florida
, California
. And an admin could edit the Event-Location
and Lives-In
tag definitions, so that their allowed values are one of the Location tags.
And a global setting: Which user groups may create new tags. E.g. the Trusted Members group.
Colors. A tag definition, and/or a tag set, could have a color.
Searching for tags
Let's say there's a Milestone
tag and sub tags M-1
, M-2
. Then, if you search for "milestone:m-1 search-phrase"
Talkyard could, because of the colon :
, understand that this is a tag and sub tag? and search for "search-phrase" in topics in that milestone only?
Or maybe prefix with #
, like so: search phrase #milestone:m2
to clarify it's a tag.
Tags elsewhere:
- Kubernetes has labels and annotations with text values, or URL links, or someone's name and contact info, or team website link. In Talkyard, that could betags with tags as values, or text/json, or a user or group, as values.
- There are User badges in phpBB, Drupal etc, which is a form of tags? Here's a topic about user badges in Talkyard — maybe instead of adding user badges to Talkyard, there can be tags. And a Ty community can create a Badges tag set and Badge tag definition, and tag people with the badges, which would then appear on their profiles or (optionally) next to their usernames.
- Bookmarks are also a flavor of tags? One could create a Bookmark tag, with tag values like Reply-to-Later, Reply-to-Soon, or Read-this-later. And only oneself could see one's bookmark tags. Here over at Discourse some people see similarities between bookmarks and tags.
- GitHub has labels with colors, and milestones. In Talkyard, a milestone could be a
Milestone
tag, whose value can be a tag from a milestones tag set. - Issue trackers have "Assigned to". In Talkyard, that could be
Assigned-To: @somone
tag. And, you could also haveAssigned-to-Code-Review: @someone
, andAssigned-to-QA-Check: @a-qa-team-member
depending on the workflow.
-
Twitter:
#hashtags
. Maybe that can be Markdown like shortcut syntax in Talkyard, for quick-linking to a tag, inside text? Or#[tag_name]
. -
Something called "Marketo" has tag types, tag values and a setting to choose where a tag type can be used.
-
Discourse has tag groups and parent tags. Discourse also has custom fields that plugins can add to users, topics, replies etc — I think Talkyard's tags would work for that, in a future plugin system.
-
StackOverflow has tags, and "values" as part of the tag:
c#-5.0
andc#-6.0
andc#-7.0
etc. User reputation could possibly be tags in Talkyard — which external rep calc bots can update based on community specific rules about Good and Bad. Here's a topic about user reputation in Talkyard. -
Emacs Org-Mode has hierarchical tags, and features like "... agenda view ... customized to display ... using specific tag ...." (https://orgmode.org/features.html ). Talkyard will probably some day support this, maybe via optional custom menu buttons that link to custom search queries, which could search for a tag and sort by date. Org-Roam has tags too, flat not hierarchical?
-
Obsidian (a personal knowledge base) supports tags apparently by typing
#TagName
somehow, and has a tags view panel. -
Wiki links are a bit similar to tags? Wikipedia, Obsidian, Vimwiki, GitHub have
[[page title]]
links, and sometimes showing all such backlinks — then in a way each page can be considered a kind of tag? Markdown-it (which Talkyard uses) has a wiki links plugin. Related Talkyard topic: Backlinks feature (hi Christian :- )). -
TiddyWiki has tags and automatic Table of Contents pages generated via tags, and nice quick dropdowns if one clicks a tag — have a look: https://tiddlywiki.com/#Structuring TiddlyWiki, click the
Working with TiddlyWiki
tag. And a tag manager: https://tiddlywiki.com/#%24%3A%2FTagManager -
DokuWiki has at least one tags plugin, tags syntax:
{{tag>[list of tags]}}
, and a one level tag hierarchy (?) via "namespaces"{{tag>ns1:tag1 ns1:tag2 ns2:subns1:tag3}}
. Example:==== Page Title ==== \n {{tag>version:v1 status:done year:2020}}
. And ways to filter on tags: https://www.dokuwiki.org/plugin:tagfilter -
Something called Noteplan has nested tags: "... Mark notes with nested tags like
#project/marketing
to sort them into different categories ..." but maybe this is not really tags, rather, categories? -
mdBook, for writing books, has a tags plugin with this syntax:
`tag:one-tag` `tag:two-tag`
which is then rendered like so: #one-tag #two-tag. -
NextCloud has automatic tagging if one uploads a file. Auto tag rule example: If file type is ... and file name matches ... and size is ... and uploaded by user in group ... then add this tag: ....".
-
IntelliJ Spaces:
/
to quickly create tag hierarchies: https://www.jetbrains.com/help/space/tag-an-issue.html, e.g.cloud / AWS / SES
. When grouping issues by tags, they'll be listed according to the hierarchy, as a tree. -
Amplenote has pretty fancy tags: https://www.amplenote.com/help/organizing_notes_nested_tags, incl tag hierarchies as left sidebar shortcuts. Ty will probably have that, and also tag hierarchies as a way to create a curated knowledge base main page, where a tag could say where on the KB main page, Ty should place the tagged page. — Amplenote also uses
/
to visually separate tags in a tag hierarchy. -
In real life: Think about a clothes store. You see a red text on a tag on a pair of running shoes: "Sale 50%". And tag with orange text: "New offer!", and a third: "Hot price! $99". Real world tags, with labels "Sales", "New", "Price" and tag values 50% and $99. What about many tags with the same name in real life? Take a "Sale 50%" tags from another pair of shoes, add to the first shoes — now, two "Sale" tags —, show in the counter, get the shoes for free. And, in real life, tags can have many values: "Sale 50%, until the end of the week" (two values: a percentage and a time span).
- Progresswith doing this idea