2018-10-10 00:00:35 +02:00
|
|
|
|
# User documentation
|
2017-01-17 06:58:25 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
Our goal is for Zulip to have complete, high-quality
|
2017-10-13 19:38:36 +02:00
|
|
|
|
documentation about Zulip's features and how to perform certain tasks, such
|
|
|
|
|
as setting up an organization.
|
|
|
|
|
|
|
|
|
|
There are two types of documents: articles about specific features, and a
|
|
|
|
|
handful of longer guides.
|
|
|
|
|
|
|
|
|
|
The feature articles serve a few different purposes:
|
2017-10-17 07:37:34 +02:00
|
|
|
|
* Feature discovery, for someone browsing the `/help` page, and looking at
|
2017-10-13 19:38:36 +02:00
|
|
|
|
the set of titles.
|
|
|
|
|
* Public documentation of our featureset, for someone googling "can zulip do .."
|
|
|
|
|
* Canned responses to support questions; if someone emails a zulip admin
|
|
|
|
|
asking "how do I change my name", they can reply with a link to the doc.
|
|
|
|
|
* Feature explanations for new Zulip users and admins, especially for
|
|
|
|
|
organization settings.
|
|
|
|
|
|
|
|
|
|
This system is designed to make writing and maintaining such documentation
|
|
|
|
|
highly efficient. We link to the docs extensively from the landing pages and
|
|
|
|
|
in-product, so it's important to keep the docs up to date.
|
2017-01-17 06:58:25 +01:00
|
|
|
|
|
2017-01-17 07:12:29 +01:00
|
|
|
|
## Editing and testing
|
|
|
|
|
|
2017-01-16 21:38:07 +01:00
|
|
|
|
The user documentation is available under `/help/` on any Zulip server;
|
2017-03-19 13:07:57 +01:00
|
|
|
|
(e.g. <https://chat.zulip.org/help/> or `http://localhost:9991/help/` in
|
|
|
|
|
the Zulip development environment). The user documentation is not hosted on
|
|
|
|
|
ReadTheDocs, since Zulip supports running a server completely disconnected
|
|
|
|
|
from the Internet, and we'd like the documentation to be available in that
|
|
|
|
|
environment.
|
2017-01-17 06:58:25 +01:00
|
|
|
|
|
2017-01-16 21:38:07 +01:00
|
|
|
|
The source for this user documentation is the Markdown files under
|
2017-01-17 06:58:25 +01:00
|
|
|
|
`templates/zerver/help/` in the
|
2017-01-16 21:38:07 +01:00
|
|
|
|
[main Zulip server repository](https://github.com/zulip/zulip). The file
|
|
|
|
|
`foo.md` is automatically rendered by the `render_markdown_path` function in
|
|
|
|
|
`zerver/templatetags/app_filters.py` when the user accesses a URL of the
|
|
|
|
|
form `/help/foo`; with special cases for `/help/` going to `index.md` and
|
|
|
|
|
`/help/unknown_article` going to `missing.md` (with a 404 response). Images
|
|
|
|
|
are usually linked from `static/images/help/`.
|
|
|
|
|
|
|
|
|
|
This means that you can contribute to the Zulip user documentation by just
|
|
|
|
|
adding to or editing the collection of markdown files under
|
|
|
|
|
`templates/zerver/help`. If you have the Zulip development environment
|
|
|
|
|
setup, you simply need to reload your browser on
|
2017-01-17 06:58:25 +01:00
|
|
|
|
`http://localhost:9991/help/foo` to see the latest version of `foo.md`
|
|
|
|
|
rendered.
|
|
|
|
|
|
2017-01-16 21:38:07 +01:00
|
|
|
|
## Writing documentation
|
2017-01-17 06:58:25 +01:00
|
|
|
|
|
2017-01-16 21:38:07 +01:00
|
|
|
|
Writing documentation is a different form of writing than most people have
|
|
|
|
|
experience with.
|
2017-01-17 06:58:25 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
Tips for adding a new article:
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* Find an existing article in the same section of the help documentation,
|
|
|
|
|
and copy the format, wording, style, etc as closely as you can.
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
2019-07-19 21:59:28 +02:00
|
|
|
|
* If the feature exists in other team chat products, check out their
|
|
|
|
|
documentation for inspiration.
|
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* Fewer words is better than more. Many Zulip users have English as a second
|
|
|
|
|
language.
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* Try to put yourself in the shoes of a new Zulip user. What would you want
|
|
|
|
|
to know?
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* The goal of user-facing documentation is not to be comprehensive. The goal
|
|
|
|
|
is to give the right bits of information for the intended audience.
|
2017-01-17 07:12:29 +01:00
|
|
|
|
|
2019-07-19 21:59:28 +02:00
|
|
|
|
* Real estate in the left sidebar is somewhat precious. Minor features
|
|
|
|
|
should rarely get their own article.
|
|
|
|
|
|
|
|
|
|
An anti-pattern is trying to make up for bad UX by adding user
|
|
|
|
|
documentation. It's worth remembering that for most articles, almost 100% of
|
|
|
|
|
the users of the feature will never read the article. Instructions for
|
|
|
|
|
filling out forms, interacting with UI widgets (e.g. typeaheads),
|
|
|
|
|
interacting with modals, etc. should never go in user documentation.
|
|
|
|
|
In such cases you may be able to fix the problem by adding text in-app,
|
|
|
|
|
where the user will see it as they are interacting with the feature.
|
|
|
|
|
|
2017-01-16 21:38:07 +01:00
|
|
|
|
### User interface
|
|
|
|
|
|
|
|
|
|
When you refer to the features in the Zulip UI, you should **bold** the
|
|
|
|
|
feature's name followed by the feature itself (e.g. **Settings** page,
|
|
|
|
|
**Change password** button, **Email** field). No quotation marks should be
|
|
|
|
|
used.
|
|
|
|
|
|
|
|
|
|
Keep in mind that the UI may change — don’t describe it in more detail than
|
|
|
|
|
is needed. **Never identify or refer to a button by its color.**
|
|
|
|
|
|
2019-05-21 08:32:34 +02:00
|
|
|
|
### Voice
|
|
|
|
|
|
|
|
|
|
Do not use `we` to refer to Zulip or its creators; e.g. "Zulip also
|
|
|
|
|
allows .." rather than "we also allow ..". `You` is ok and used liberally.
|
|
|
|
|
|
2017-01-16 21:38:07 +01:00
|
|
|
|
## Features
|
|
|
|
|
|
|
|
|
|
Zulip's Markdown processor allows you to include several special features in
|
|
|
|
|
your documentation to help improve its readibility:
|
|
|
|
|
|
|
|
|
|
* Since raw HTML is supported in Markdown, you can include arbitrary
|
|
|
|
|
HTML/CSS in your documentation as needed.
|
|
|
|
|
* Code blocks allow you to highlight syntax, similar to Zulip's own markdown.
|
|
|
|
|
* Anchor tags can be used to link to headers in other documents.
|
|
|
|
|
* [Images](#images) of Zulip UI can be added to documentation.
|
|
|
|
|
* Inline [icons](#icons) used to refer to features in the Zulip UI.
|
|
|
|
|
* You can utilize [macros](#macros) to limit repeated content in the
|
|
|
|
|
documentation.
|
|
|
|
|
* You can create special highlight warning blocks using
|
|
|
|
|
[tips and warnings](#tips-and-warnings).
|
2019-10-27 10:29:43 +01:00
|
|
|
|
* You can create tabs using [markdown tab switcher](#tab-switcher).
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
|
|
|
|
### Images
|
|
|
|
|
|
2017-01-17 07:12:29 +01:00
|
|
|
|
Images and screenshots should be included in user documentation only
|
|
|
|
|
if it will help guide the user in how to do something (e.g. if the
|
|
|
|
|
image will make it much clearer which element on the page the user
|
|
|
|
|
should interact with). For instance, an image of an element should
|
|
|
|
|
not be included if the element the user needs to interact with is the
|
|
|
|
|
only thing on the page, but images can be included to show the end
|
|
|
|
|
result of an interaction with the UI.
|
|
|
|
|
|
|
|
|
|
Using too many screenshots creates maintainability problems (we have
|
|
|
|
|
to update them every time the UI is changed) and also can make the
|
|
|
|
|
instructions for something simple look long and complicated.
|
|
|
|
|
|
|
|
|
|
When taking screenshots, the image should never include the whole
|
|
|
|
|
Zulip browser window in a screenshot; instead, it should only show
|
|
|
|
|
relevant parts of the app. In addition, the screenshot should always
|
|
|
|
|
come *after* the text that describes it, never before.
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
2019-10-27 10:29:43 +01:00
|
|
|
|
Images are often a part of a numbered step and must be indented four
|
|
|
|
|
spaces to be formatted correctly.
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
|
|
|
|
### Icons
|
|
|
|
|
|
2018-05-17 13:54:18 +02:00
|
|
|
|
You can refer to features in the Zulip UI by referencing their names
|
2018-10-15 16:26:55 +02:00
|
|
|
|
and their [FontAwesome](https://fontawesome.com/v4.7.0/) (version 4.7.0) text
|
|
|
|
|
icons within parentheses. **Note:** We have completed migrating away from older
|
|
|
|
|
base class `icon-vector` and have dropped support for it. We now only support
|
|
|
|
|
icons from [FontAwesome](https://fontawesome.com/v4.7.0/) (version 4.7.0) which
|
|
|
|
|
make use of `fa` as a base class.
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
|
|
|
|
* cog (<i class="fa fa-cog"></i>) icon — `cog (<i
|
2017-04-03 05:31:28 +02:00
|
|
|
|
class="fa fa-cog"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* down chevron (<i class="fa fa-chevron-down"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`down chevron (<i class="fa fa-chevron-down"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* eye (<i class="fa fa-eye"></i>) icon — `eye (<i
|
2017-04-03 05:31:28 +02:00
|
|
|
|
class="fa fa-eye"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* file (<i class="fa fa-file-text-o"></i>) icon — `file (<i
|
2017-04-03 05:31:28 +02:00
|
|
|
|
class="fa fa-file-text-o"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* filled star (<i class="fa fa-star"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`filled star (<i class="fa fa-star"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* formatting (<i class="fa fa-font"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`formatting (<i class="fa fa-font"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* menu (<i class="fa fa-bars"></i>) icon — `menu (<i
|
2017-04-03 05:31:28 +02:00
|
|
|
|
class="fa fa-bars"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* overflow ( <i class="fa fa-ellipsis-v"></i> ) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`overflow ( <i class="fa fa-ellipsis-v"></i> ) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* paperclip (<i class="fa fa-paperclip"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`paperclip (<i class="fa fa-paperclip"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* pencil (<i class="fa fa-pencil"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`pencil (<i class="fa fa-pencil"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* pencil and paper (<i class="fa fa-pencil-square-o"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`pencil and paper (<i class="fa fa-pencil-square-o"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* plus (<i class="fa fa-plus"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`plus (<i class="fa fa-plus"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* smiley face (<i class="fa fa-smile-o"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`smiley face (<i class="fa fa-smile-o"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* star (<i class="fa fa-star-o"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`star (<i class="fa fa-star-o"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* trash (<i class="fa fa-trash-o"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`trash (<i class="fa fa-trash-o"></i>) icon`
|
2017-08-11 01:51:48 +02:00
|
|
|
|
* video-camera (<i class="fa fa-video-camera"></i>) icon —
|
|
|
|
|
`video-camera (<i class="fa fa-video-camera"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
* x (<i class="fa fa-times"></i>) icon —
|
2017-04-03 05:31:28 +02:00
|
|
|
|
`x (<i class="fa fa-times"></i>) icon`
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
|
|
|
|
### Macros
|
|
|
|
|
|
|
|
|
|
**Macros** are elements in the format of `{!macro.md!}` that insert common
|
|
|
|
|
phrases and steps at the location of the macros. Macros help eliminate
|
|
|
|
|
repeated content in our documentation.
|
|
|
|
|
|
|
|
|
|
The source for macros is the Markdown files under
|
|
|
|
|
`templates/zerver/help/include` in the
|
2018-09-16 09:37:31 +02:00
|
|
|
|
[main Zulip server repository](https://github.com/zulip/zulip).
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* **Administrator only feature** `{!admin-only.md!}`: Notes that the feature
|
|
|
|
|
is only available to organization administrators.
|
2017-01-17 06:58:25 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* **Message actions** `{!message-actions.md!}`: First step to navigating to
|
|
|
|
|
the on-hover message actions.
|
2018-09-16 17:23:45 +02:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* **Message actions menu** `{!message-actions-menu.md!}`: Navigate to the
|
|
|
|
|
message actions menu.
|
2018-09-16 17:23:45 +02:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* **Save changes** `{!save-changes.md!}`: Save changes after modifying
|
|
|
|
|
organization settings.
|
2017-01-16 21:38:07 +01:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* **Stream actions** `{!stream-actions.md!}`: Navigate to the stream actions
|
|
|
|
|
menu from the left sidebar.
|
2018-09-17 00:00:37 +02:00
|
|
|
|
|
2018-10-10 00:00:35 +02:00
|
|
|
|
* **Start composing** `{!start-composing.md!}`: Open the compose box.
|
2018-09-17 00:00:37 +02:00
|
|
|
|
|
2017-01-16 21:38:07 +01:00
|
|
|
|
### Tips and warnings
|
|
|
|
|
|
|
|
|
|
A **tip** is any suggestion for the user that is not part of the main set of
|
|
|
|
|
instructions. For instance, it may address a common problem users may
|
|
|
|
|
encounter while following the instructions, or point to an option for power
|
|
|
|
|
users.
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
!!! tip ""
|
|
|
|
|
If you've forgotten your password, see the
|
|
|
|
|
[Change your password](/help/change-your-password) page for
|
|
|
|
|
instructions on how to reset it.
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
A **warning** is a note on what happens when there is some kind of problem.
|
|
|
|
|
Tips are more common than warnings.
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
!!! warn ""
|
|
|
|
|
**Note:** If you attempt to input a nonexistent stream name, an error
|
|
|
|
|
message will appear.
|
|
|
|
|
```
|
|
|
|
|
|
2019-10-27 10:29:43 +01:00
|
|
|
|
All tips/warnings should appear inside tip/warning blocks. There
|
|
|
|
|
should be only one tip/warning inside each block, and they usually
|
|
|
|
|
should be formatted as a continuation of a numbered step.
|
|
|
|
|
|
|
|
|
|
### Tab Switcher
|
|
|
|
|
|
|
|
|
|
Our markdown processor supports easily creating a tab switcher widget
|
|
|
|
|
design to easily show the instructions for different
|
|
|
|
|
[platforms](https://zulipchat.com/help/logging-out) in user docs,
|
|
|
|
|
languages in API docs, etc. To create a tab switcher, write:
|
|
|
|
|
|
|
|
|
|
{start_tabs}
|
|
|
|
|
{tab|desktop-web}
|
|
|
|
|
# First Tab's content
|
|
|
|
|
{tab|ios}
|
|
|
|
|
# Second Tab's content
|
|
|
|
|
{tab|android}
|
|
|
|
|
# Third tab's content
|
|
|
|
|
{end_tabs}
|
|
|
|
|
|
|
|
|
|
The tab identifiers (e.g. `desktop-web` above) and their mappings to
|
|
|
|
|
the tabs' labels are declared in
|
|
|
|
|
[zerver/lib/bugdown/tabbed_sections.py][tabbed-sections-code].
|
|
|
|
|
|
|
|
|
|
[tabbed-sections-code]: https://github.com/zulip/zulip/blob/master/zerver/lib/bugdown/tabbed_sections.py#L37
|
|
|
|
|
|
|
|
|
|
This widget can also be used just to create a nice box around a set of
|
|
|
|
|
instructions
|
|
|
|
|
([example](https://zulipchat.com/help/deactivate-your-account)) by
|
|
|
|
|
only declaring a single tab.
|