I'm building a webapp where I want content to be taggable in a few different ways:
- Public system-added tags. Non-removable tags added automatically when content is created based on how it was created
- Private user-added tags. These should only be visible by the user that adds them
- Public user-added tags. These should be visible to and editable by everyone
I have a few different problems I need to solve as a result:
- How to visually distinguish the tags when they're displayed
- How to make it simple and intuitive to type a tag of a given type
- Should each type of tag have its own namespace?
For display and editing, I'm planning on having a UX that matches Stackexchange's for tags.
In order to visually distinguish tag types, the most obvious approach that comes to mind is to simply color them differently. I think this could work but could also fail to accommodate color-blind users, especially if color is the only visually distinguishable difference.
The next best approach that comes to mind is to prefix the different types of tags with a symbol. Eg. system tags might appear as
!repeatable; private user tags could appear as
*review-later, and public tags could appear without a prefix.
Or, with color as well:
The symbol prefix approach could work and also serve as a means of distinguishing the tag types when entering them. For example, when searching for content with specific tags, a user could type
!autogenerated, *review-later, amazing in a tag search input. In this case, there would be a separate namespace for each type of tag and
amazing would all be different tags.
The open questions I have around this are:
- Are symbol prefixes the best approach?
- If using symbol prefixes, which symbols are best for each type?
I'd prefer to choose symbols which have at least some amount of pre-existing association with the purpose I'd be using them for, but I can't think of any widely known precedents to draw from. The use of a period prefix in Unix filesystems for hidden dotfiles comes to mind as a possibility for the private user tags, but I don't like how subtle and easy to miss the period is. I also wouldn't expect users to be familiar with that convention.
I'm concerned that this approach overall is too convoluted. I'm personally unaware of any software which utilizes multiple types of tags and I imagine this will be a source of confusion for users. At the same time, I do think this functionality is valuable and would require an even more contrived solution to achieve any other way. I am also intending to build the application in a way that favors power over ease of use, so I'm OK with a steeper learning curve for some features.