zulip/docs
Rohan Tibrewal 8e1724e81e Vagrant: Make host_ip a variable set in ~/.zulip-vagrant-config. 2016-12-30 14:50:08 -08:00
..
_static docs: Add Git and GitHub Guide. 2016-10-17 16:18:16 -07:00
images docs: Update remote dev with better details about editing. 2016-11-29 14:13:21 -08:00
.gitignore Initial sphinx setup from sphinx-quickstart 2015-08-18 17:31:32 -07:00
Makefile Initial sphinx setup from sphinx-quickstart 2015-08-18 17:31:32 -07:00
README.md help: Enable and use the markdown admonition extension. 2016-12-21 11:01:49 -08:00
THIRDPARTY Move static/third/gemoji to static/generated/emoji. 2016-12-27 20:16:23 -08:00
architecture-overview.md Django 1.10: Use uWSGI. 2016-12-13 21:40:43 -08:00
bots-guide.md Update the bots development guide for change in triage_message 2016-12-26 16:10:54 -08:00
brief-install-vagrant-dev.md Vagrant: Make host_ip a variable set in ~/.zulip-vagrant-config. 2016-12-30 14:50:08 -08:00
changelog.md User user_id, not email, in peer_add events. 2016-11-04 11:37:14 -07:00
chinese.md docs: Add chinese translation style guide. 2016-12-04 14:36:04 -08:00
code-of-conduct.md docs: Add code of conduct. 2016-11-26 18:40:16 -08:00
code-reviewing.md Add additional resources to code review. 2016-12-13 23:12:10 -08:00
code-style.md lint: Remove old jslint linter. 2016-12-02 18:49:42 -08:00
conf.py lint: Fix pep-8 rules on recently added files. 2016-12-27 20:16:23 -08:00
conversion.md docs: Improve export documentation. 2016-10-20 22:52:32 -07:00
custom-apps.md docs: Properly capitalize GitHub. 2016-10-17 19:31:50 -04:00
dev-env-first-time-contributors.md Vagrant: Make host_ip a variable set in ~/.zulip-vagrant-config. 2016-12-30 14:50:08 -08:00
dev-overview.md docs: Change dev -> development everywhere. 2016-11-29 14:23:54 -08:00
dev-remote.md dev-remote: Clean up some text, mostly dev->development. 2016-11-29 14:16:51 -08:00
dev-setup-non-vagrant.md emoji: Move tools/setup/emoji_dump to tools/setup/emoji. 2016-12-27 19:58:41 -08:00
directory-structure.md tornado: Move zerver.tornadoviews to zerver.tornado.views. 2016-11-26 22:29:28 -08:00
front-end-build-process.md Update documentaton to reflect Django-Pipeline==1.6.8. 2016-07-09 07:09:55 -07:00
full-text-search.md Support full text search for all languages using pgroonga. 2016-08-26 21:04:03 -07:00
git-guide.md docs: Fix broken link in git-guide.md 2016-12-10 06:09:46 -08:00
html_css.md Extract media queries to media.css. 2016-08-05 10:32:55 -07:00
html_unescape.py Change shebangs from python2.7 to python. 2016-05-29 05:03:08 -07:00
index.rst Rename and reorder the bots guide 2016-12-20 11:40:04 -08:00
install-docker-dev.md docs: Simplify hierarchy of dev setup docs. 2016-11-29 14:13:09 -08:00
install-generic-unix-dev.md docs: Simplify hierarchy of dev setup docs. 2016-11-29 14:13:09 -08:00
install-ubuntu-without-vagrant-dev.md docs: Simplify hierarchy of dev setup docs. 2016-11-29 14:13:09 -08:00
integration-guide.md mypy: Update docs to recommend typing.Text instead of six.text_type. 2016-12-26 16:11:37 -08:00
life-of-a-request.md docs: Don't include zulip.readthedocs.io in internal links 2016-11-19 10:16:38 -08:00
linters.md lint: Remove old jslint linter. 2016-12-02 18:49:42 -08:00
logging.md Improve first-time contributor docs. 2016-05-31 07:47:45 -07:00
manual-testing.md docs: Change dev -> development everywhere. 2016-11-29 14:23:54 -08:00
markdown.md docs: Add documentation for linking to a stream. 2016-12-06 17:47:26 -08:00
migration-renumbering.md Add docs/migration-renumbering.md 2016-07-18 12:02:50 -07:00
mypy.md mypy: Update docs to recommend typing.Text instead of six.text_type. 2016-12-26 16:11:37 -08:00
new-feature-tutorial.md Update update_realm view path and signature in the new feature tutorial. 2016-08-25 19:35:42 -07:00
pointer.md Expand pointer and unread counts guide. 2016-08-16 16:17:54 -07:00
polish.md translation: Create Polish translation style guide. 2016-11-29 19:36:57 -08:00
prod-authentication-methods.md docs: Fix style in authentication methods doc. 2016-10-22 20:14:56 -07:00
prod-customize.md Always start python via shebang lines. 2016-11-26 14:46:37 -08:00
prod-install.md docs: Improve installation instruction headings. 2016-12-06 17:36:42 -08:00
prod-maintain-secure-upgrade.md Add initial implementation of custom realm filters. 2016-11-17 17:11:25 -08:00
prod-postgres.md Move prod postgres details to separate page. 2016-07-12 15:46:10 -07:00
prod-requirements.md requirements: Document anti-recommendation of t2 style instances. 2016-11-26 19:06:45 -08:00
prod-troubleshooting.md docs: Rename status/debug page to troubleshooting. 2016-08-25 09:37:33 -07:00
queuing.md Update documentation on development auto-reloading. 2016-06-26 20:20:13 -07:00
readme-symlink.md Rearrange docs table of contents for coherence. 2016-05-31 09:07:09 -07:00
realms.md docs: Fix a missing close paren. 2016-11-01 12:32:36 -07:00
release-checklist.md docs: Add a brief release checklist. 2016-11-04 10:52:48 -07:00
requirements.readthedocs.txt Move doc building dependencies to requirements/docs.txt. 2016-06-20 16:05:42 -07:00
roadmap.md roadmap: Add buddy list scalability to agenda. 2016-11-18 15:58:08 -08:00
schema-migrations.md Link to migration-renumbering.html in schema-migrations.md 2016-07-18 12:02:50 -07:00
settings.md docs: Fix typo in spelling of generate_secrets. 2016-10-05 17:47:14 -07:00
spanish.md docs: Create a translation guide for Spanish. 2016-11-29 19:31:29 -08:00
ssl-certificates.md docs: Move SSL docs to a dedicated page. 2016-08-25 09:37:33 -07:00
testing-with-casper.md docs: Change dev -> development everywhere. 2016-11-29 14:23:54 -08:00
testing-with-django.md tests: Split out ZulipTestCase and WebhookTestCase to a separate file. 2016-11-10 19:29:43 -08:00
testing-with-node.md docs: Fix broken link in node testing docs. 2016-10-22 19:21:19 -07:00
testing.md docs: Change dev -> development everywhere. 2016-11-29 14:23:54 -08:00
translating.md docs: Fix i18n documentation for translating blocks. 2016-12-15 13:44:13 -08:00
users.md Add draft document for user populations. 2016-11-08 15:28:04 -08:00
using-dev-environment.md docs: Don't include zulip.readthedocs.io in internal links 2016-11-19 10:16:38 -08:00
version-control.md docs: Clarify commit message portion of version control docs. 2016-10-05 19:28:21 -07:00
writing-views.md mypy: Update docs to recommend typing.Text instead of six.text_type. 2016-12-26 16:11:37 -08:00

README.md

Documentation

Zulip has three major documentation systems:

  • Developer and sysadmin documentation: Documentation for people actually interacting with the Zulip codebase (either by developing it or installing it), and written in Markdown.

  • Core website documentation: Complete webpages for complex topics, written in HTML, JavaScript, and CSS (using the Django templating system). These roughly correspond to the documentation someone might look at when deciding whether to use Zulip. We don't expect to ever have more than about 10 pages written using this system.

  • General user documentation: Our scalable system for documenting Zulip's huge collection of specific features without a lot of overhead or duplicated code/syntax, written in Markdown. We expect to eventually have around 100 pages written using this system. The target audience for this system is individual Zulip users.

These three systems are documented in detail below.

Developer and sysadmin documentation

What you are reading right now is part of the collection of documentation targeted at developers and people running their own Zulip servers. These docs are written in Commonmark Markdown with a small bit of rST. We've chosen Markdown because it is easy to write. The source for Zulip's developer documentation is at docs/ in the Zulip git repository, and they are served in production at zulip.readthedocs.io.

If you want to build the developer documentation locally (e.g. to test your changes), the dependencies are automatically installed as part of Zulip development environment provisioning, and you can build the documentation using:

cd docs/
make html

and then opening file:///path/to/zulip/docs/_build/html/index.html in your browser (you can also use e.g. firefox docs/_build/html/index.html from the root of your Zulip checkout).

If you are adding a new page to the table of contents, you will want to modify docs/index.rst and run make clean before make html, so that other docs besides your new one also get the new entry in the table of contents.

You can also usually test your changes by pushing a branch to GitHub and looking at the content on the GitHub web UI, since GitHub renders Markdown, though that won't be as faithful as the make html approach.

When editing dependencies for the Zulip documentation, you should edit requirements/docs.txt (which is used by ReadTheDocs to build the Zulip developer documentation, without installing all of Zulip's dependencies).

Core website documentation

Zulip has around 10 HTML documentation pages under templates/zerver for specific major topics, like the features list, client apps, integrations, hotkeys, API bindings, etc. These documents often have somewhat complex HTML and JavaScript, without a great deal of common pattern between them other than inheriting from the portico.html template. We generally avoid adding new pages to this collection unless there's a good reason, but we don't intend to migrate them, either, since this system gives us the flexibility to express these important elements of the product clearly.

General user documentation

Our goal is for Zulip to have complete, high-quality user-facing documentation about how to use every feature and how to do common tasks (like setting up a new Zulip organization well). This system is designed to make writing and maintaining such documentation highly efficient.

The user documentation is available under /help/ on any Zulip server; (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.

The source for this user documentation is the Markdown files under templates/zerver/help/ in the main Zulip server repository. 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 http://localhost:9991/help/foo to see the latest version of foo.md rendered.

Since raw HTML is supported in Markdown, you can include arbitraty HTML in your documentation in order to do fancy things like highlighting an important aspect of your code. We'll likely add a library of common components over time, which will be documented below.

Supported features

  • All the usual features of Markdown with raw HTML enabled so you can do custom things with HTML/CSS as needed. The goal is to make reusable markdown syntax for things we need often, though.
  • Code blocks with syntax highlighting, similar to Zulip's own markdown.
  • Anchor tags for linking to headers in other documents.
  • You can create special highlight warning blocks using e.g.:
!!! warn "title of warning"
    Body of warning

to create a special warning block with title "title of warning" to highlight something important. The whitespace is important. Often, we just use "" as the title. !!! tip "title" is useful for less scary tips. See the python-markdown docs on this extension for details on how this extension works; essentially the value warn or tip is an extra CSS class added to the admonition.