Confluence is a perfect tool for online team collaboration. It makes it easy for everyone on the team to add information. Due to a lack of structure the team wiki may pretty fast become a place where it gets more and more difficult to add information so that it can be found in a reasonable amount of time. It also gets harder for team members to know where to add new content.
In the last article, Finding without Searching, we examined the different ways of information seeking needs and behaviors. We came to the conclusion that categorizing information is the key to understanding and to support the users of an information system. In the context of a project the users are first and foremost the members of the teams and stakeholders with access to the project wiki.
It may be helpful to know about the following resources prior to continuing reading this article:
- Obviously it is recommended to have skimmed through the first article Finding without Searching which introduces some concepts of structuring information for users.
- According to projectdoc you may have a glance at projectdoc Document for a short introduction to projectdoc documents and how they differ from native Confluence wiki pages. This article assumes that you know what a document property is.
- If you don't know Confluence you may start learning about wikis in Why Wiki Software? Collaborate and Accelerate Productivity.
In a project team members usually have not much time to organize and reorganize information. So we are looking for some time-savers that support teams on creating project documentation collaboratively. We will not dive into any specifica here, but investigate generic approaches that are helpful for any project or communication need.
We examine the following tools:
Knowing these tools for categorizing your information will improve your documentation in aspects of extending and navigating.
If you add a page to another page in your wiki as a child, you are building a hierarchy and therefore categorize your content. The parent relationship is quite strong. While a parent may have many children, each child has exactly one parent. And although there lies some value in defining your categories mutual exclusive, you should not feel to be bound to. But since each child cannot have more than one parent, you would need to be strict by design.
A Category enables the team to define a classification outside a single page hierarchy. A document may be assigned to multiple categories and therefore may have multiple semantic parents.
The information is attached to a category by selecting it's name as a value for the Categories property.
The category is itself documented by a document. The document automatically lists all documents associated with it. The following example shows the document for the category 'AtlasCamp'. The example shows two documents attached to this category.
Categories define navigation paths through your documentation. It is typically useful to define the major categories that are relevant for your team and project. Creating them adhoc usually yields inferior results.
Hierarchies and Queries
It is also helpful to define your category hierarchies more wide than deep.
Categories over Topics
Whenever you think to create a topics page for collection resources for a given topic, consider to create a category. The category document is usually good place to define and collect resources for a topic.
Confluence allows to tag documents with labels. This is an adhoc approach that is easy to use. Unfortunately labels are usually not documented. So authors may use a single term differently or use different terms for referring to the same thing.
The Tag document type allows to add semantics to a tag. To have a lightweight start to define a controlled vocabulary. You may also use them in the context of folksonomy, but be prepared that this may not work out great without effort.
The advantage of folksonomies isn't that they're better than controlled vocabularies, it's that they're better than nothing, because controlled vocabularies are not extensible to the majority of cases where tagging is needed...Peter Morville and Louis Rosenfeld. Information Architecture
Categories or Tags?
It is not always clear, when to create a category and when to use a tag. There is no hard rule for the selection. Every project has different documentation needs. Nonetheless some ideas on this topic.
As a rule of thumb you could use categories to define the domain that is relevant for your project. Usually this works best if the team creates the project context in one or two short timeboxed sessions. Then every team member has visualized what is relevant to be documented or tracked and where. Categories are naturally hierarchical in nature. Use them and try to build flat taxonomies. Think of categories as a tool to organize the menus for your wiki space and therefore to control the navigation.
For instance, if you have a number of marketing channels you want to have quick access to (information on how and why your team uses them), you may define a tree rooted in
/ Marketing / Channels
and define subcategories like
On the other hand use tags for labelling. Typically tags are not hierarchic or have a one-step-deep hierarchy to group related tags. Think of tags as a tool to link to related resources in a given context.
Tags could be something very simple as
Feedback or define a list of related topics you do not want as categories (like
While a document can be associated with any number of categories and tags, the subject is defined to be exclusive (although there is no technical constraint that enforces this). Think of a subject as a workspace to hold information for a specific project or spike. Subjects may be temporary. If you conduct a spike you may add all insights to a subject. Later in the iteration you have more information on the matter and may apply the collected resources where they belong.
Subjects are typically not hierarchic, but if it works out well for you, you can organize you subjects as you can do for categories, tags, or any other document type.
If you expect to work on a subject with a larger team, consider to create a separate workspace and link from the subject document to that space. This is especially useful to get your team running without having to consider where to place a new piece of information. After the spike is run, the team decides which information will make it to a topic space and which is only an intermediary result to be archived with that space. This helps to decide which information has a stakeholder and is assumed to be valuable on the long run. Every document is a liability that absorbs maintenance costs.
Documents and Records
It is usually a good idea to separate documents (which will be updated) and records (which will not be updated). If your team collects information on a topic, that document will be updated whenever a new relevant piece of information is discovered. On the other side minutes, for example, are typically not updated.
In addition to that you also have investigations in unknown territory where you want to share the actual state of knowledge with your team. Also consider to separate these work spaces from spaces where your organization scheme is carefully designed. Allow teams to work without constraints while being on a discovery mission. Limit the application of documentation rules to spaces that contain information that is worth to be maintained over the project's lifetime.
For every document type you may define specific types that are only valid for this type. Think of
Whenever you have specific categorization in mind for a group of document instances, consider to define a new specific type. But every type requires additional work! Be sure to discuss the usefulness of additional types with your team. As often, less is more.
Other than the categorization types discussed so far, specific types are key-value pairs. The name of the type is the key.
If you define a new type, this type typically names the reasons and stakeholders that support this type.
The page with the type instance definition usually also lists the documents associated with this type. Therefore each instance of a type is a natural hub for information tagged with this type.
Types may be semantical or technical. Albeit semantics are usually more helpful than pure technical categorization, due to their combination they can form a powerful tool to categorize content with automatic lists.
Category or Tag or Type?
When should you use a category / tag and when a specific type? Categories and tags are generic by design. This implies that they have valid semantics on any document type. A category or tag should be valid for use on documents for a person, a topic, or minutes. Types are specific and therefore defined for a single doctype.
Note that there are more generic categorization options than categories and tags: The Audience Property allows to define the target group for your document.
Every Doctype is a Type
There is nothing special for a doctype to be a type document. So every doctype supports your organisation system. For instance you may
- use Glossary Items to define the terms of your domain and relate information to them
- collect information according to Organizations you are partnering or competing with on your project
- organize publications by their Authors via the Person Doctype.
This approach is very generic. Use what works best and naturally. But you need to discuss and communicate your strategy within your team.
Every page title has to be unique within a space. Sometimes names of categories, tags, or subjects may collide with titles of other pages. You may have a category named "Continuous Delivery" and also a resource that refers to a book with that title. You may have a tag "OOP" before you find out that you have a page referring to a conference with that name.
To differentiate the titles of organizing documents from those with specific information, you may prepend the page title with a special character. The name of the document (defined as a document property) will not use this prefix. The name is not limited by the uniqueness constraint since the name of the document is only unique within its document type (and this constraint is not technically enforced).
Typical prefixes for types are:
- # for tags
- / for categories
- § for subjects
- ? for open issues
- ! for decisions
You may define any number of encodings, but be aware that they have to be recalled by the authors. So it is typically a good idea to limit them to tags, categories, and subjects. If you think you do not need them, go without prefixes!
Simple values do, in opposition to all the other mentioned categorization tools, not refer to document that documents the semantics of the value. Examples are theor the amount of story points of a user story.
Simple values are simply a tool to define metadata for a document. A doctype usually defines the properties for all document instances. Authors are free to add any number of a additional properties, but doing so may hurt the principle of similar structured documents. Similar structures support authors to create documents and makes them more easily readable by users.
Once you have organized the documents in your space and labelled them, it is easy to render context-sensitive links with automatic lists.
You may define queries to list all documents with a set of properties bound to specific values. These automatic lists - automatic since new documents will be automatically matched and show up in the list - are a helpful tool to define context sensitive navigations.
The following projectdoc macros are rendering automatic lists:
- Display List Macro
- Lists references to projectdoc documents in a list. List contain names and optional short descriptions.
- Display List Template Macro
- Lists references to projectdoc documents in a list. List items are defined by templates referencing properties.
- Display Table Macro
- Lists references to projectdoc documents in a table. Allows to select document properties for columns. Also non-list representations are provided.
- Index Card Macro
- Renders transcluded content fetched from documents of a result set.
- Index Entries Table Macro
- Renders a table of index entries.
- Transclude Documents Macro
- Renders transcluded content fetched from documents of a result set.
The basic principle behind the combination of categorization and automatic list is the open/closed principle: Your documentation is open for extension, but each individual document is closed for modification. If you add a new document you extend your documentation. But you do not need to modify existing documents. This helps you creating and maintaining your documentation as a team.
If you have long lists of query results you may choose to further create partitions. This may be by adding subtypes (an option not available for simple values) or you may define queries to dissect your result list in multiple list. A Space Index is typically used to hold a list of related information where you do not want to use an instance of a particular doctype (such as a topic or resource).
We had a deep look into tools provided by projectdoc to organize information in Confluence spaces. Unfortunately there no not a single hard rule that can be applied on what tool to use for which categorization. But we gave same rules of thumb and offered some basics to discuss with your team.
Most of the automatic collection of information by type work best for a small to medium amount of documents for that particular type. Once your space gets larger and larger you'll probably add additional queries to establish more partitions for your space. Either you can use hierarchies (parent/child relationships) or add additional space index pages.
Creating a sound and easy-to-use organization structure for your project documentation is not an easy feat. Nor is it a one-shot endeavour. As you learn more about your domain, do not consider it a fault if you need to refactor your documentation. In fact it may be a moment to celebrate since you have worked your way to a new insight.
If you have questions or want to discuss your improvement ideas, please do not hesitate to get in touch!