From abc7a00d3546ca89a6a78b7ed86c9fcbac0a31a4 Mon Sep 17 00:00:00 2001 From: Tim Abbott Date: Fri, 5 Apr 2019 17:58:44 -0700 Subject: [PATCH] Revert "docs: Update .html links to .md." This doesn't work without the CommonMark upgrade. This reverts commit c87893feeacaa78315ffc72510afe8e92477f4e8. --- docs/contributing/chat-zulip-org.md | 2 +- docs/contributing/code-reviewing.md | 18 +++++------ docs/contributing/code-style.md | 4 +-- docs/development/overview.md | 18 +++++------ docs/development/remote.md | 15 ++++----- docs/development/request-remote.md | 8 ++--- docs/development/setup-advanced.md | 14 ++++---- docs/development/setup-vagrant.md | 34 ++++++++++---------- docs/development/using.md | 4 +-- docs/git/cheat-sheet.md | 6 ++-- docs/git/cloning.md | 6 ++-- docs/git/collaborate.md | 2 +- docs/git/overview.md | 22 ++++++------- docs/git/pull-requests.md | 6 ++-- docs/git/reviewing.md | 2 +- docs/git/setup.md | 2 +- docs/git/troubleshooting.md | 4 +-- docs/git/using.md | 10 +++--- docs/git/zulip-tools.md | 6 ++-- docs/overview/architecture-overview.md | 24 +++++++------- docs/overview/changelog.md | 18 +++++------ docs/overview/directory-structure.md | 10 +++--- docs/overview/gsoc-ideas.md | 30 ++++++++--------- docs/overview/roadmap.md | 4 +-- docs/production/authentication-methods.md | 6 ++-- docs/production/deployment.md | 8 ++--- docs/production/email.md | 2 +- docs/production/export-and-import.md | 6 ++-- docs/production/install-existing-server.md | 2 +- docs/production/install.md | 30 ++++++++--------- docs/production/maintain-secure-upgrade.md | 20 ++++++------ docs/production/mobile-push-notifications.md | 2 +- docs/production/multiple-organizations.md | 8 ++--- docs/production/password-strength.md | 2 +- docs/production/requirements.md | 16 ++++----- docs/production/security-model.md | 6 ++-- docs/production/settings.md | 8 ++--- docs/production/ssl-certificates.md | 2 +- docs/production/troubleshooting.md | 4 +-- docs/production/upload-backends.md | 2 +- docs/subsystems/auth.md | 8 ++--- docs/subsystems/caching.md | 2 +- docs/subsystems/client.md | 2 +- docs/subsystems/conversion.md | 2 +- docs/subsystems/dependencies.md | 18 +++++------ docs/subsystems/documentation.md | 10 +++--- docs/subsystems/email.md | 8 ++--- docs/subsystems/emoji.md | 4 +-- docs/subsystems/events-system.md | 6 ++-- docs/subsystems/front-end-build-process.md | 4 +-- docs/subsystems/hashchange-system.md | 4 +-- docs/subsystems/html-templates.md | 2 +- docs/subsystems/html_css.md | 2 +- docs/subsystems/logging.md | 2 +- docs/subsystems/pointer.md | 2 +- docs/subsystems/realms.md | 4 +-- docs/subsystems/schema-migrations.md | 4 +-- docs/subsystems/sending-messages.md | 22 ++++++------- docs/subsystems/settings.md | 2 +- docs/subsystems/thumbnailing.md | 2 +- docs/subsystems/typing-indicators.md | 2 +- docs/testing/continuous-integration.md | 4 +-- docs/testing/linters.md | 10 +++--- docs/testing/testing-with-django.md | 6 ++-- docs/testing/testing.md | 20 ++++++------ docs/translating/translating.md | 22 ++++++------- docs/tutorials/documenting-api-endpoints.md | 2 +- docs/tutorials/life-of-a-request.md | 6 ++-- docs/tutorials/new-feature-tutorial.md | 30 ++++++++--------- docs/tutorials/reading-list.md | 2 +- docs/tutorials/shell-tips.md | 4 +-- docs/tutorials/writing-views.md | 10 +++--- 72 files changed, 310 insertions(+), 311 deletions(-) diff --git a/docs/contributing/chat-zulip-org.md b/docs/contributing/chat-zulip-org.md index 2d526d38ac..6d880edc8e 100644 --- a/docs/contributing/chat-zulip-org.md +++ b/docs/contributing/chat-zulip-org.md @@ -32,7 +32,7 @@ minutes to a few hours, depending on the time of day. [gender-neutral language](https://en.wikipedia.org/wiki/Gender-neutral_language). For example, avoid using a pronoun like her or his in sentences like "Every developer should clean [their] keyboard at least once a week." -* Follow the community [code of conduct](../code-of-conduct.md). +* Follow the community [code of conduct](../code-of-conduct.html). * Participate! Zulip is a friendly and welcoming community, and we love meeting new people, hearing about what brought them to Zulip, and getting their feedback. If you're not sure where to start, diff --git a/docs/contributing/code-reviewing.md b/docs/contributing/code-reviewing.md index 5bb08b0356..902f845b8d 100644 --- a/docs/contributing/code-reviewing.md +++ b/docs/contributing/code-reviewing.md @@ -78,7 +78,7 @@ this?". Good choices include up a page in the CI that has more details on why the job failed. For example [this](https://circleci.com/gh/zulip/zulip/16617) is the page of the `bionic-python-3.6` job. See our docs on - [continuous integration](../testing/continuous-integration.md) + [continuous integration](../testing/continuous-integration.html) to learn more. * *Technical design.* There are a lot of considerations here: @@ -105,7 +105,7 @@ this?". Good choices include change being made. Tests that exclude whole classes of potential bugs are preferred when possible (e.g., the common test suite `test_bugdown.py` between the Zulip server's [frontend and backend - Markdown processors](../subsystems/markdown.md), or the `GetEventsTest` test for + Markdown processors](../subsystems/markdown.html), or the `GetEventsTest` test for buggy race condition handling). * *Translation.* Make sure that the strings are marked for @@ -194,11 +194,11 @@ We also strongly recommend reviewers to go through the following resources. * [Code Review - A consolidation of advice and stuff from the sinternet](https://gist.github.com/porterjamesj/002fb27dd70df003646df46f15e898de) article by James J. Porter -* [Zulip Code of Conduct](../code-of-conduct.md) +* [Zulip Code of Conduct](../code-of-conduct.html) -[code-style]: ../contributing/code-style.md -[commit-messages]: ../contributing/version-control.md#commit-messages -[test-writing]: ../testing/testing.md -[mypy]: ../testing/mypy.md -[git tool]: ../git/zulip-tools.md#fetch-a-pull-request-and-rebase -[translation]: ../translating/translating.md +[code-style]: ../contributing/code-style.html +[commit-messages]: ../contributing/version-control.html#commit-messages +[test-writing]: ../testing/testing.html +[mypy]: ../testing/mypy.html +[git tool]: ../git/zulip-tools.html#fetch-a-pull-request-and-rebase +[translation]: ../translating/translating.html diff --git a/docs/contributing/code-style.md b/docs/contributing/code-style.md index 27de65cf14..582963abdd 100644 --- a/docs/contributing/code-style.md +++ b/docs/contributing/code-style.md @@ -163,7 +163,7 @@ Don't use it: ### Translation tags Remember to -[tag all user-facing strings for translation](../translating/translating.md), whether +[tag all user-facing strings for translation](../translating/translating.html), whether they are in HTML templates or JavaScript editing the HTML (e.g. error messages). @@ -292,5 +292,5 @@ All significant new features should come with tests. See testing. ### Third party code -See [our docs on dependencies](../subsystems/dependencies.md) for discussion of +See [our docs on dependencies](../subsystems/dependencies.html) for discussion of rules about integrating third-party projects. diff --git a/docs/development/overview.md b/docs/development/overview.md index 9861a14661..f1ab55ecff 100644 --- a/docs/development/overview.md +++ b/docs/development/overview.md @@ -82,14 +82,14 @@ And if you've setup the Zulip development environment on a remote machine, take a look at our tips for [developing remotely][dev-remote]. -[dev-remote]: remote.md -[install-direct]: ../development/setup-advanced.md#installing-directly-on-ubuntu-debian-centos-or-fedora -[install-docker]: ../development/setup-advanced.md#using-docker-experimental -[install-generic]: ../development/setup-advanced.md#installing-manually-on-linux -[install-vagrant]: ../development/setup-vagrant.md +[dev-remote]: remote.html +[install-direct]: ../development/setup-advanced.html#installing-directly-on-ubuntu-debian-centos-or-fedora +[install-docker]: ../development/setup-advanced.html#using-docker-experimental +[install-generic]: ../development/setup-advanced.html#installing-manually-on-unix +[install-vagrant]: ../development/setup-vagrant.html [self-install-remote]: #installing-remotely [self-slow-internet]: #slow-internet-connections -[configure-proxy]: ../development/setup-vagrant.md#specifying-a-proxy -[using-dev-env]: using.md -[testing]: ../testing/testing.md -[ci]: ../git/cloning.md#step-3-configure-continuous-integration-for-your-fork +[configure-proxy]: ../development/setup-vagrant.html#specifying-a-proxy +[using-dev-env]: using.html +[testing]: ../testing/testing.html +[ci]: ../git/cloning.html#step-3-configure-continuous-integration-for-your-fork diff --git a/docs/development/remote.md b/docs/development/remote.md index 954325422c..6f24e7559c 100644 --- a/docs/development/remote.md +++ b/docs/development/remote.md @@ -129,7 +129,7 @@ don't have a favorite, here are some suggestions: * [spacemacs](https://github.com/syl20bnr/spacemacs) * [sublime](https://www.sublimetext.com/) -Next, follow our [Git and GitHub Guide](../git/index.md) to clone and configure +Next, follow our [Git and GitHub Guide](../git/index.html) to clone and configure your fork of zulip on your local computer. Once you have cloned your code locally, you can get to work. @@ -214,12 +214,11 @@ Next, read the following to learn more about developing for Zulip: * [Using the Development Environment][rtd-using-dev-env] * [Testing][rtd-testing] -[install-direct]: ../development/setup-advanced.md#installing-directly-on-ubuntu-debian-centos-or-fedora -[install-generic]: ../development/setup-advanced.md#installing-manually-on-linux -[install-vagrant]: ../development/setup-vagrant.md -[rtd-git-guide]: ../git/index.md -[rtd-using-dev-env]: using.md -[rtd-testing]: ../testing/testing.md +[install-direct]: ../development/setup-advanced.html#installing-directly-on-ubuntu-debian-centos-or-fedora +[install-vagrant]: ../development/setup-vagrant.html +[rtd-git-guide]: ../git/index.html +[rtd-using-dev-env]: using.html +[rtd-testing]: ../testing/testing.html [git-bash]: https://git-for-windows.github.io/ [codeanywhere]: https://codeanywhere.com/ [img-ca-settings]: ../images/codeanywhere-settings.png @@ -237,7 +236,7 @@ that the user is `zulipdev`; edit accordingly if the situation is different. 1. First, get an SSL certificate; you can use - [our certbot wrapper script used for production](../production/ssl-certificates.md#certbot-recommended) + [our certbot wrapper script used for production](../production/ssl-certificates.html#certbot-recommended) by running the following commands as root: ``` # apt install -y crudini diff --git a/docs/development/request-remote.md b/docs/development/request-remote.md index 120608d9d7..64515a7b93 100644 --- a/docs/development/request-remote.md +++ b/docs/development/request-remote.md @@ -67,14 +67,14 @@ Once your remote dev instance is ready: Once you've confirmed you can connect to your remote server, take a look at: -* [developing remotely](../development/remote.md) for tips on using the remote dev +* [developing remotely](../development/remote.html) for tips on using the remote dev instance, and -* our [Git & GitHub Guide](../git/index.md) to learn how to use Git with Zulip. +* our [Git & GitHub Guide](../git/index.html) to learn how to use Git with Zulip. Next, read the following to learn more about developing for Zulip: -* [Using the Development Environment](../development/using.md) -* [Testing](../testing/testing.md) +* [Using the Development Environment](../development/using.html) +* [Testing](../testing/testing.html) [github-join]: https://github.com/join [github-help-add-ssh-key]: https://help.github.com/en/articles/adding-a-new-ssh-key-to-your-github-account diff --git a/docs/development/setup-advanced.md b/docs/development/setup-advanced.md index 533481a5fb..a255acec30 100644 --- a/docs/development/setup-advanced.md +++ b/docs/development/setup-advanced.md @@ -21,9 +21,9 @@ that's running one of: You can just run the Zulip provision script on your machine. **Note**: you should not use the `root` user to run the installation. -If you are using a [remote server](../development/remote.md), see +If you are using a [remote server](../development/remote.html), see the -[section on creating appropriate user accounts](../development/remote.md#setting-up-user-accounts). +[section on creating appropriate user accounts](../development/remote.html#setting-up-user-accounts). **Warning**: there is no supported uninstallation process with this method. If you want that, use the Vagrant environment, where you can @@ -50,7 +50,7 @@ source /srv/zulip-py3-venv/bin/activate Once you've done the above setup, you can pick up the [documentation on using the Zulip development -environment](../development/setup-vagrant.md#step-4-developing), +environment](../development/setup-vagrant.html#step-4-developing), ignoring the parts about `vagrant` (since you're not using it). ## Installing manually on Unix @@ -310,7 +310,7 @@ docker run -itv $(pwd):/srv/zulip -p 9991:9991 user/zulipdev:v2 \ ``` You'll want to -[read the guide for Zulip development](../development/setup-vagrant.md#step-4-developing) +[read the guide for Zulip development](../development/setup-vagrant.html#step-4-developing) to understand how to use the Zulip development. Note that `start-dockers` automatically runs `tools/run-dev.py` inside the container; you can then visit http://localhost:9991 to connect to your @@ -363,6 +363,6 @@ Currently, the Docker workflow is substantially less convenient than the Vagrant workflow and less documented; please contribute to this guide and the Docker tooling if you are using Docker to develop Zulip! -[zulip-rtd-git-cloning]: ../git/cloning.md#step-1b-clone-to-your-machine -[zulip-rtd-git-connect]: ../git/cloning.md#step-1c-connect-your-fork-to-zulip-upstream -[port-forward-setup]: ../development/remote.md#running-the-development-server +[zulip-rtd-git-cloning]: ../git/cloning.html#step-1b-clone-to-your-machine +[zulip-rtd-git-connect]: ../git/cloning.html#step-1c-connect-your-fork-to-zulip-upstream +[port-forward-setup]: ../development/remote.html#running-the-development-server diff --git a/docs/development/setup-vagrant.md b/docs/development/setup-vagrant.md index 6565f8e745..4e77e96c4c 100644 --- a/docs/development/setup-vagrant.md +++ b/docs/development/setup-vagrant.md @@ -24,7 +24,7 @@ environment,** check [Troubleshooting and Common Errors](#troubleshooting-and-common-errors). If that doesn't help, please visit [#provision help](https://chat.zulip.org/#narrow/stream/21-provision-help) -in the [Zulip development community server](../contributing/chat-zulip-org.md) for +in the [Zulip development community server](../contributing/chat-zulip-org.html) for real-time help, send a note to the [Zulip-devel Google group](https://groups.google.com/forum/#!forum/zulip-devel) or [file an issue](https://github.com/zulip/zulip/issues). @@ -285,8 +285,8 @@ projects and to instead follow these instructions exactly.) 2. Open Terminal (macOS/Ubuntu) or Git BASH (Windows; must **run as an Administrator**). 3. In Terminal/Git BASH, - [clone your fork of the Zulip repository](../git/cloning.md#step-1b-clone-to-your-machine) and - [connect the Zulip upstream repository](../git/cloning.md#step-1c-connect-your-fork-to-zulip-upstream): + [clone your fork of the Zulip repository](../git/cloning.html#step-1b-clone-to-your-machine) and + [connect the Zulip upstream repository](../git/cloning.html#step-1c-connect-your-fork-to-zulip-upstream): ``` git clone --config pull.rebase git@github.com:YOURUSERNAME/zulip.git @@ -340,7 +340,7 @@ does the following: downloads all required dependencies, sets up the python environment for the Zulip development server, and initializes a default test database. We call this process "provisioning", and it is documented - in some detail in our [dependencies documentation](../subsystems/dependencies.md). + in some detail in our [dependencies documentation](../subsystems/dependencies.html). You will need an active internet connection during the entire process. (See [Specifying a proxy](#specifying-a-proxy) if you need a @@ -352,7 +352,7 @@ documented in the [Troubleshooting and Common Errors](#troubleshooting-and-common-errors) section. If that doesn't help, please visit [#provision help](https://chat.zulip.org/#narrow/stream/21-provision-help) -in the [Zulip development community server](../contributing/chat-zulip-org.md) for +in the [Zulip development community server](../contributing/chat-zulip-org.html) for real-time help. On Windows, you will see `The system cannot find the path specified.` message @@ -489,7 +489,7 @@ It's good to have the terminal running `run-dev.py` up as you work since error messages including tracebacks along with every backend request will be printed there. -See [Logging](../subsystems/logging.md) for further details on the run-dev.py console +See [Logging](../subsystems/logging.html) for further details on the run-dev.py console output. #### Committing and pushing changes with git @@ -518,7 +518,7 @@ After provisioning, you'll want to If you run into any trouble, the [#provision help](https://chat.zulip.org/#narrow/stream/21-provision-help) -in the [Zulip development community server](../contributing/chat-zulip-org.md) for +in the [Zulip development community server](../contributing/chat-zulip-org.html) for is a great place to ask for help. #### Rebuilding the development environment @@ -615,7 +615,7 @@ If these solutions aren't working for you or you encounter an issue not documented below, there are a few ways to get further help: * Ask in [#provision help](https://chat.zulip.org/#narrow/stream/21-provision-help) - in the [Zulip development community server](../contributing/chat-zulip-org.md), + in the [Zulip development community server](../contributing/chat-zulip-org.html), * send a note to the [Zulip-devel Google group](https://groups.google.com/forum/#!forum/zulip-devel), or * [File an issue](https://github.com/zulip/zulip/issues). @@ -883,7 +883,7 @@ Likely causes are: 1. Networking issues 2. Insufficient RAM. Check whether you've allotted at least two gigabytes of RAM, which is the minimum Zulip -[requires](../development/setup-vagrant.md#requirements). If +[requires](../development/setup-vagrant.html#requirements). If not, go to your VM settings and increase the RAM, then restart the VM. @@ -967,7 +967,7 @@ Users who are unable to do "vagrant up" due to a VT-X unavailability error need #### Permissions errors when running the test suite in LXC -See ["Possible testing issues"](../testing/testing.md#possible-testing-issues). +See ["Possible testing issues"](../testing/testing.html#possible-testing-issues). #### Mounting NFS fails on macOS Mojave @@ -1099,13 +1099,13 @@ for the IP address that means any IP address can connect to your development ser [vmware-fusion-dl]: http://www.vmware.com/products/fusion.html [vagrant-vmware-fusion-dl]: https://www.vagrantup.com/vmware/ [avoiding-sudo]: https://github.com/fgrehm/vagrant-lxc#avoiding-sudo-passwords -[install-advanced]: ../development/setup-advanced.md +[install-advanced]: ../development/setup-advanced.html [lxc-sf]: https://github.com/fgrehm/vagrant-lxc/wiki/FAQ#help-my-shared-folders-have-the-wrong-owner -[rtd-git-guide]: ../git/index.md -[rtd-testing]: ../testing/testing.md -[rtd-using-dev-env]: using.md -[rtd-dev-remote]: remote.md +[rtd-git-guide]: ../git/index.html +[rtd-testing]: ../testing/testing.html +[rtd-using-dev-env]: using.html +[rtd-dev-remote]: remote.html [git-bash]: https://git-for-windows.github.io/ [bash-admin-setup]: https://superuser.com/questions/1002262/run-applications-as-administrator-by-default-in-windows-10 -[set-up-git]: ../git/setup.md -[ci]: ../git/cloning.md#step-3-configure-continuous-integration-for-your-fork +[set-up-git]: ../git/setup.html +[ci]: ../git/cloning.html#step-3-configure-continuous-integration-for-your-fork diff --git a/docs/development/using.md b/docs/development/using.md index 9db3f830c5..ff34d898fb 100644 --- a/docs/development/using.md +++ b/docs/development/using.md @@ -51,5 +51,5 @@ restart if it crashes, and `upgrade-zulip` will take care of running migrations and then cleanly restaring the server for you). [django-runserver]: https://docs.djangoproject.com/en/1.8/ref/django-admin/#runserver-port-or-address-port -[new-feature-tutorial]: ../tutorials/new-feature-tutorial.md -[testing-docs]: ../testing/testing.md +[new-feature-tutorial]: ../tutorials/new-feature-tutorial.html +[testing-docs]: ../testing/testing.html diff --git a/docs/git/cheat-sheet.md b/docs/git/cheat-sheet.md index 65d6336305..7db9d752ac 100644 --- a/docs/git/cheat-sheet.md +++ b/docs/git/cheat-sheet.md @@ -111,6 +111,6 @@ See also [fixing commits][fix-commit] - status - `git status`: show the working tree status, unstaged and staged files -[fix-commit]: fixing-commits.md -[git-config-clone]: cloning.md#step-1b-clone-to-your-machine -[git-overview]: overview.md +[fix-commit]: fixing-commits.html +[git-config-clone]: cloning.html#step-1b-clone-to-your-machine +[git-overview]: overview.html diff --git a/docs/git/cloning.md b/docs/git/cloning.md index 2868c7c508..b097090bf2 100644 --- a/docs/git/cloning.md +++ b/docs/git/cloning.md @@ -152,6 +152,6 @@ Zulip. [travis-ci]: https://travis-ci.org/ [circle-ci]:https://circleci.com/ [travis-ci-profile]: https://travis-ci.org/profile -[zulip-rtd-dev-first-time]: ../development/setup-vagrant.md -[zulip-rtd-dev-overview]: ../development/overview.md -[zulip-rtd-tools-setup]: ../git/zulip-tools.md#set-up-git-repo-script +[zulip-rtd-dev-first-time]: ../development/setup-vagrant.html +[zulip-rtd-dev-overview]: ../development/overview.html +[zulip-rtd-tools-setup]: ../git/zulip-tools.html#set-up-git-repo-script diff --git a/docs/git/collaborate.md b/docs/git/collaborate.md index 1aeffffe42..d72ecdc0ed 100644 --- a/docs/git/collaborate.md +++ b/docs/git/collaborate.md @@ -54,4 +54,4 @@ tools/fetch-pull-request ``` [github-help-co-pr-locally]: https://help.github.com/en/articles/checking-out-pull-requests-locally -[tools-PR]: ../git/zulip-tools.md#fetch-a-pull-request-and-rebase +[tools-PR]: ../git/zulip-tools.html#fetch-a-pull-request-and-rebase diff --git a/docs/git/overview.md b/docs/git/overview.md index 1976df73ed..d3ad9ec528 100644 --- a/docs/git/overview.md +++ b/docs/git/overview.md @@ -58,14 +58,14 @@ git workflow, or if you'd like a git refresher. [github-rebase-pr]: https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request [github-zulip]: https://github.com/zulip/ [github-zulip-zulip]: https://github.com/zulip/zulip/ -[continuous-integration]: ../testing/continuous-integration.md -[zulip-git-guide-fork-ci]: ../git/cloning.md#step-3-configure-continuous-integration-for-your-fork -[zulip-rtd-code-style]: ../contributing/code-style.md -[zulip-rtd-commit-discipline]: ../contributing/version-control.md#commit-discipline -[zulip-rtd-commit-messages]: ../contributing/version-control.md#commit-messages -[zulip-rtd-dev-overview]: ../development/overview.md -[zulip-rtd-lint-tools]: ../contributing/code-style.md#lint-tools -[zulip-rtd-mypy]: ../testing/mypy.md -[zulip-rtd-testing]: ../testing/testing.md -[zulip-rtd-zulip-tools]: ../git/zulip-tools.md -[zulip-rtd-zulipbot-usage]: ../contributing/zulipbot-usage.md +[continuous-integration]: ../testing/continuous-integration.html +[zulip-git-guide-fork-ci]: ../git/cloning.html#step-3-configure-continuous-integration-for-your-fork +[zulip-rtd-code-style]: ../contributing/code-style.html +[zulip-rtd-commit-discipline]: ../contributing/version-control.html#commit-discipline +[zulip-rtd-commit-messages]: ../contributing/version-control.html#commit-messages +[zulip-rtd-dev-overview]: ../development/overview.html +[zulip-rtd-lint-tools]: ../contributing/code-style.html#lint-tools +[zulip-rtd-mypy]: ../testing/mypy.html +[zulip-rtd-testing]: ../testing/testing.html +[zulip-rtd-zulip-tools]: ../git/zulip-tools.html +[zulip-rtd-zulipbot-usage]: ../contributing/zulipbot-usage.html diff --git a/docs/git/pull-requests.md b/docs/git/pull-requests.md index cabee1936a..084f0c8070 100644 --- a/docs/git/pull-requests.md +++ b/docs/git/pull-requests.md @@ -146,7 +146,7 @@ for another review. [github-help-about-pr]: https://help.github.com/en/articles/about-pull-requests [github-help-create-pr-fork]: https://help.github.com/en/articles/creating-a-pull-request-from-a-fork [images-create-pr]: ../images/zulip-open-pr.png -[keep-up-to-date]: ../git/using.md#keep-your-fork-up-to-date -[push-commits]: ../git/using.md#push-your-commits-to-github -[screenshots-gifs]: ../tutorials/screenshot-and-gif-software.md +[keep-up-to-date]: ../git/using.html#keep-your-fork-up-to-date +[push-commits]: ../git/using.html#push-your-commits-to-github +[screenshots-gifs]: ../tutorials/screenshot-and-gif-software.html [wip-prs]: #work-in-progress-pull-requests diff --git a/docs/git/reviewing.md b/docs/git/reviewing.md index 6c102e24e7..2de499bcbd 100644 --- a/docs/git/reviewing.md +++ b/docs/git/reviewing.md @@ -61,4 +61,4 @@ Display changes you've committed so far since creating a branch from upstream/ma $ git diff upstream/master...HEAD ``` -[zulip-rtd-review]: ../contributing/code-reviewing.md +[zulip-rtd-review]: ../contributing/code-reviewing.html diff --git a/docs/git/setup.md b/docs/git/setup.md index c3b21bb711..14aae412db 100644 --- a/docs/git/setup.md +++ b/docs/git/setup.md @@ -49,7 +49,7 @@ text-mode interface to Git. And, if none of the above are to your liking, try [one of these][gitbook-guis]. -[git-bash-admin]: ../development/setup-vagrant.md#running-git-bash-as-an-administrator +[git-bash-admin]: ../development/setup-vagrant.html#running-git-bash-as-an-administrator [gitbook-aliases]: https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases [gitbook-config]: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration [gitbook-guis]: https://git-scm.com/downloads/guis diff --git a/docs/git/troubleshooting.md b/docs/git/troubleshooting.md index 182c5185aa..89cfa9c8e4 100644 --- a/docs/git/troubleshooting.md +++ b/docs/git/troubleshooting.md @@ -271,8 +271,8 @@ keep,** you'll need to use `git log FETCH_HEAD` to identify that hashes of the commits you want to keep and then `git cherry-pick ` those commits into whichever branch you need to update. -[clone-to-your-machine]: ../git/cloning.md#step-1b-clone-to-your-machine -[connect-upstream]: ../git/cloning.md#step-1c-connect-your-fork-to-zulip-upstream +[clone-to-your-machine]: ../git/cloning.html#step-1b-clone-to-your-machine +[connect-upstream]: ../git/cloning.html#step-1c-connect-your-fork-to-zulip-upstream [gitbook-advanced-merging]: https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging#_advanced_merging [gitbook-basic-merge-conflicts]: https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging#Basic-Merge-Conflicts [gitbook-git-cherry-pick]: https://git-scm.com/docs/git-cherry-pick diff --git a/docs/git/using.md b/docs/git/using.md index db2d366138..15467954ca 100644 --- a/docs/git/using.md +++ b/docs/git/using.md @@ -126,7 +126,7 @@ Now you're ready to work on the issue or feature. ## Run linters and tests locally In addition to having Travis run tests and linters each time you push a new -commit, you can also run them locally. See [testing](../testing/testing.md) for details. +commit, you can also run them locally. See [testing](../testing/testing.html) for details. ## Stage changes @@ -446,7 +446,7 @@ complicated rebase. [github-help-push]: https://help.github.com/en/articles/pushing-to-a-remote [github-help-rebase]: https://help.github.com/en/articles/using-git-rebase [github-help-sync-fork]: https://help.github.com/en/articles/syncing-a-fork -[how-git-is-different]: ./the-git-difference.md -[zulip-git-guide-up-to-date]: ../git/using.md#keep-your-fork-up-to-date -[zulip-rtd-commit-discipline]: ../contributing/version-control.md#commit-discipline -[zulip-rtd-commit-messages]: ../contributing/version-control.md#commit-messages +[how-git-is-different]: ./the-git-difference.html +[zulip-git-guide-up-to-date]: ../git/using.html#keep-your-fork-up-to-date +[zulip-rtd-commit-discipline]: ../contributing/version-control.html#commit-discipline +[zulip-rtd-commit-messages]: ../contributing/version-control.html#commit-messages diff --git a/docs/git/zulip-tools.md b/docs/git/zulip-tools.md index 90672dbf28..631f42183c 100644 --- a/docs/git/zulip-tools.md +++ b/docs/git/zulip-tools.md @@ -9,7 +9,7 @@ time when working with Git on the Zulip project. [zulip/zulip][github-zulip-zulip] you'll find a bash script `setup-git-repo`. This script installs a pre-commit hook, which will run each time you `git commit` to automatically run -[Zulip's linter suite](../testing/linters.md) on just the files that +[Zulip's linter suite](../testing/linters.html) on just the files that the commit modifies (which is really fast!). The hook passes no matter the result of the linter, but you should still pay attention to any notices or warnings it displays. @@ -175,5 +175,5 @@ git rebase --continue ``` [github-zulip-zulip]: https://github.com/zulip/zulip/ -[zulip-git-guide-fetch-pr]: ../git/collaborate.md#checkout-a-pull-request-locally -[zulip-git-guide-ci]: ../git/cloning.md#step-3-configure-continuous-integration-for-your-fork +[zulip-git-guide-fetch-pr]: ../git/collaborate.html#checkout-a-pull-request-locally +[zulip-git-guide-ci]: ../git/cloning.html#step-3-configure-continuous-integration-for-your-fork diff --git a/docs/overview/architecture-overview.md b/docs/overview/architecture-overview.md index d500965373..2bb8cb4fdd 100644 --- a/docs/overview/architecture-overview.md +++ b/docs/overview/architecture-overview.md @@ -9,7 +9,7 @@ The core Zulip application is at is a web application written in Python 3.x and using the Django framework. That codebase includes server-side code and the web client, as well as Python API bindings and most of our integrations with other services and applications (see -[the directory structure guide](../overview/directory-structure.md)). +[the directory structure guide](../overview/directory-structure.html)). [Zulip Mobile](https://github.com/zulip/zulip-mobile) is the official mobile Zulip client supporting both iOS and Android, written in @@ -56,12 +56,12 @@ choose whether to allow anyone to register an account and join, or only allow people who have been invited, or restrict registrations to members of particular groups (using email domain names or corporate single-sign-on login for verification). For more on security -considerations, see [the security model section](../production/security-model.md). +considerations, see [the security model section](../production/security-model.html). The Zulip "All messages" screen is like a chronologically ordered inbox; it displays messages, starting at the oldest message that the user hasn't viewed yet (for more on that logic, see [the guide to the -pointer and unread counts](../subsystems/pointer.md)). The "All messages" screen displays +pointer and unread counts](../subsystems/pointer.html)). The "All messages" screen displays the most recent messages in all the streams a user has joined (except for the streams they've muted), as well as private messages from other users, in strict chronological order. A user can *narrow* to view only @@ -116,7 +116,7 @@ exception to this is that Zulip uses websockets through Tornado to minimize latency on the code path for **sending** messages. There is detailed documentation on the -[real-time push and event queue system](../subsystems/events-system.md); most of +[real-time push and event queue system](../subsystems/events-system.html); most of the code is in `zerver/tornado`. #### HTML templates, JavaScript, etc. @@ -129,10 +129,10 @@ live-rendering HTML from JavaScript for things like the main message feed. For more details on the frontend, see our documentation on -[translation](../translating/translating.md), -[templates](../subsystems/html-templates.md), -[directory structure](../overview/directory-structure.md), and -[the static asset pipeline](../subsystems/front-end-build-process.md). +[translation](../translating/translating.html), +[templates](../subsystems/html-templates.html), +[directory structure](../overview/directory-structure.html), and +[the static asset pipeline](../subsystems/front-end-build-process.html). [Jinja2]: http://jinja.pocoo.org/ [Handlebars]: http://handlebarsjs.com/ @@ -183,7 +183,7 @@ processes that process event queues. We use event queues for the kinds of tasks that are best run in the background because they are expensive (in terms of performance) and don't have to be synchronous --- e.g., sending emails or updating analytics. Also see [the queuing -guide](../subsystems/queuing.md). +guide](../subsystems/queuing.html). ### memcached @@ -192,7 +192,7 @@ objects. `zerver/lib/cache.py` and `zerver/lib/cache_helpers.py` manage putting things into memcached, and invalidating the cache when values change. The memcached configuration is in `puppet/zulip/files/memcached.conf`. See our -[caching guide](../subsystems/caching.md) to learn how this works in +[caching guide](../subsystems/caching.html) to learn how this works in detail. ### Redis @@ -250,7 +250,7 @@ processes started by Supervisor are queue processors that continually pull things out of a RabbitMQ queue and handle them; they are defined in `zerver/worker/queue_processors.py`. -Also see [the queuing guide](../subsystems/queuing.md). +Also see [the queuing guide](../subsystems/queuing.html). ### PostgreSQL @@ -275,7 +275,7 @@ to create the actual database with its schema. We use Thumbor, a popular open source thumbnailing server, to serve images (both for inline URL previews and serving uploaded image -files). See [our thumbnailing docs](../subsystems/thumbnailing.md) +files). See [our thumbnailing docs](../subsystems/thumbnailing.html) for more details on how this works. ### Nagios diff --git a/docs/overview/changelog.md b/docs/overview/changelog.md index 896a10d752..cfb1e264f2 100644 --- a/docs/overview/changelog.md +++ b/docs/overview/changelog.md @@ -59,7 +59,7 @@ is using the [Mobile Push Notification Service][mpns-statistics-docs], and is enabled by default in that case. To disable it, set `SUBMIT_USAGE_STATISTICS = False` in `/etc/zulip/settings.py`. -[mpns-statistics-docs]: ../production/mobile-push-notifications.md#submitting-statistics +[mpns-statistics-docs]: ../production/mobile-push-notifications.html#submitting-statistics **Full feature changelog:** - Added support for CentOS 7 in the development environment @@ -202,9 +202,9 @@ Zulip installations; it has minimal changes for existing servers. disruption by running this migration first, before beginning the user-facing downtime. However, if you'd like to watch the downtime phase of the upgrade closely, we recommend - [running them first manually](../production/expensive-migrations.md) + [running them first manually](../production/expensive-migrations.html) and as well as the usual trick of - [doing an apt upgrade first](../production/maintain-secure-upgrade.md#applying-system-updates). + [doing an apt upgrade first](../production/maintain-secure-upgrade.html#applying-system-updates). **Full feature changelog:** - Added an organization setting for message deletion time limits. @@ -214,7 +214,7 @@ Zulip installations; it has minimal changes for existing servers. - Renamed the hotkey for starring a message to Ctrl+S. - Added the new `SOCIAL_AUTH_SUBDOMAIN` setting, which all servers using both GitHub authentication and hosting multiple Zulip organizations - should set (see [the docs for details](../production/multiple-organizations.md#social-authentication)). + should set (see [the docs for details](../production/multiple-organizations.html#social-authentication)). - Added automatic thumbnailing of images, powered by thumbor. The new THUMBOR_URL setting controls this feature; it is disabled by default in this release, because the mobile apps don't support it yet. @@ -285,7 +285,7 @@ Zulip installations; it has minimal changes for existing servers. ### 1.8.1 -- 2018-05-07 - Added an automated tool (`manage.py register_server`) to sign up for - the [mobile push notifications service](../production/mobile-push-notifications.md). + the [mobile push notifications service](../production/mobile-push-notifications.html). - Improved rendering of block quotes in mobile push notifications. - Improved some installer error messages. - Fixed several minor bugs with the new Slack import feature. @@ -580,9 +580,9 @@ Backend and scaling minimizes disruption by running these first, before beginning the user-facing downtime. However, if you'd like to watch the downtime phase of the upgrade closely, we recommend - [running them first manually](../production/expensive-migrations.md) and as well + [running them first manually](../production/expensive-migrations.html) and as well as the usual trick of - [doing an apt upgrade first](../production/maintain-secure-upgrade.md#applying-system-updates). + [doing an apt upgrade first](../production/maintain-secure-upgrade.html#applying-system-updates). * We've removed support for an uncommon legacy deployment model where a Zulip server served multiple organizations on the same domain. @@ -592,7 +592,7 @@ Backend and scaling This change should have no effect for the vast majority of Zulip servers that only have one organization. If you manage a server that hosts multiple organizations, you'll want to read [our guide on - multiple organizations](../production/multiple-organizations.md). + multiple organizations](../production/multiple-organizations.html). * We simplified the configuration for our password strength checker to be much more intuitive. If you were using the @@ -740,7 +740,7 @@ Zulip apps. Hungarian, Polish, Dutch, Russian, Bulgarian, Portuguese, Serbian, Malayalam, Korean, and Italian). -[mobile-push]: ../production/mobile-push-notifications.md +[mobile-push]: ../production/mobile-push-notifications.html [electron-app]: https://github.com/zulip/zulip-electron/releases [ios-app]: https://itunes.apple.com/us/app/zulip/id1203036395 diff --git a/docs/overview/directory-structure.md b/docs/overview/directory-structure.md index cb4532d196..af9343d306 100644 --- a/docs/overview/directory-structure.md +++ b/docs/overview/directory-structure.md @@ -4,7 +4,7 @@ This page documents the Zulip directory structure, where to find things, and how to decide where to put a file. You may also find the [new application feature -tutorial](../tutorials/new-feature-tutorial.md) helpful for understanding the +tutorial](../tutorials/new-feature-tutorial.html) helpful for understanding the flow through these files. ### Core Python files @@ -30,11 +30,11 @@ paths will be familiar to Django developers. * `zerver/tornado/views.py` Tornado views. -* `zerver/worker/queue_processors.py` [Queue workers](../subsystems/queuing.md). +* `zerver/worker/queue_processors.py` [Queue workers](../subsystems/queuing.html). * `zerver/lib/*.py` Most library code. -* `zerver/lib/bugdown/` [Backend Markdown processor](../subsystems/markdown.md). +* `zerver/lib/bugdown/` [Backend Markdown processor](../subsystems/markdown.html). * `zproject/backends.py` [Authentication backends](https://docs.djangoproject.com/en/1.8/topics/auth/customizing/). @@ -42,7 +42,7 @@ paths will be familiar to Django developers. ### HTML Templates -See [our docs](../subsystems/html-templates.md) for details on Zulip's +See [our docs](../subsystems/html-templates.html) for details on Zulip's templating systems. * `templates/zerver/` For [Jinja2](http://jinja.pocoo.org/) templates @@ -87,7 +87,7 @@ These are distinguished from scripts, below, by needing to run a Django context (i.e. with database access). * `zerver/management/commands/` - [Management commands](../subsystems/management-commands.md) one might run at a + [Management commands](../subsystems/management-commands.html) one might run at a production deployment site (e.g. scripts to change a value or deactivate a user properly). diff --git a/docs/overview/gsoc-ideas.md b/docs/overview/gsoc-ideas.md index 131f538e8f..4754fccd57 100644 --- a/docs/overview/gsoc-ideas.md +++ b/docs/overview/gsoc-ideas.md @@ -10,7 +10,7 @@ high-quality applications we receive. We have some of the highest standards of any GSoC organization; successful applications generally have dozens of commits integrated into Zulip or other open source projects by the time we review their application. See -[our contributing guide](../overview/contributing.md) for details on +[our contributing guide](../overview/contributing.html) for details on getting involved. ## About us @@ -51,12 +51,12 @@ project today). ### Expectations for GSoC students -[Our guide for having a great summer with Zulip](../contributing/summer-with-zulip.md) +[Our guide for having a great summer with Zulip](../contributing/summer-with-zulip.html) is focused on what one should know once doing a summer project with Zulip. But it has a lot of useful advice on how we expect students to interact, above and beyond what is discussed in Google's materials. -[What makes a great Zulip contributor](../overview/contributing.md#what-makes-a-great-zulip-contributor) +[What makes a great Zulip contributor](../overview/contributing.html#what-makes-a-great-zulip-contributor) also has some helpful information on what we look for during the application process. @@ -73,11 +73,11 @@ student application deadline is April 9, 2019. We have an easy-to-setup development environment, and a library of tasks that are great for first-time contributors. Use -[our first-time Zulip developer guide](../overview/contributing.md#your-first-codebase-contribution) +[our first-time Zulip developer guide](../overview/contributing.html#your-first-codebase-contribution) to get your Zulip development environment set up and to find your first issue. If you have any trouble, please speak up in [#GSoC](https://chat.zulip.org/#narrow/stream/14-GSoC) on -[the Zulip development community server](../contributing/chat-zulip-org.md) +[the Zulip development community server](../contributing/chat-zulip-org.html) (use your name as the topic). ## Application tips, and how to be a strong candidate @@ -123,7 +123,7 @@ application deadline. We are more interested in candidates if we see them submitting good contributions to Zulip projects, helping other applicants on GitHub and on -[chat.zulip.org](../contributing/chat-zulip-org.md), +[chat.zulip.org](../contributing/chat-zulip-org.html), learning from our suggestions, [trying to solve their own obstacles and then asking well-formed questions](https://blogs.akamai.com/2013/10/you-must-try-and-then-you-must-ask.html), @@ -166,7 +166,7 @@ mentoring projects. We usually decide which contributors are mentoring which projects based in part on who is a good fit for the needs of each student as well as technical expertise. You can reach us via [#GSoC](https://chat.zulip.org/#narrow/stream/14-GSoC) on -[the Zulip development community server](../contributing/chat-zulip-org.md), +[the Zulip development community server](../contributing/chat-zulip-org.html), (compose a new stream message with your name as the topic). Zulip operates under group mentorship. That means you should @@ -216,7 +216,7 @@ skills needed, and try to emphasize where strong skills with particular tools are likely to be important for a given project. For all of our projects, an important skill to develop is a good -command of Git; read [our Git Guide](../git/overview.md) in full to +command of Git; read [our Git Guide](../git/overview.html) in full to learn how to use it well. Of particular importance is mastering using Git rebase so that you can construct commits that are clearly correct and explain why they are correct. @@ -260,7 +260,7 @@ CSS](https://github.com/zulip/zulip/). - Fill in the gaps in Zulip's [REST API documentation](https://zulipchat.com/api). Zulip has a - [nice framework](../tutorials/documenting-api-endpoints.md) for + [nice framework](../tutorials/documenting-api-endpoints.html) for writing API documentation built by a student last summer based on the OpenAPI standard with built-in automated tests, but there are a few dozen endpoints that are missing, several of which are quite @@ -282,7 +282,7 @@ CSS](https://github.com/zulip/zulip/). e.g. having built a prototype with [the Django Oauth toolkit](https://django-oauth-toolkit.readthedocs.io/en/latest/) would be great to demonstrate as part of an application. The - [Zulip integration writing guide](../subsystems/integration-docs.md) + [Zulip integration writing guide](../subsystems/integration-docs.html) and [integration documentation](https://chat.zulip.org/integrations/) are useful materials for learning about how things currently work, @@ -335,7 +335,7 @@ CSS](https://github.com/zulip/zulip/). at `contrib_bots/` in the main Zulip repository that can be used for testing; the design document for the deployment part of this vision (likely part 1) is - [here](../subsystems/custom-apps.md). + [here](../subsystems/custom-apps.html). **Skills recommended**: Python and JavaScript/CSS, plus devops skills (Linux deployment, Docker, puppet etc.) are all useful here. Experience writing tools using various popular APIs is helpful for @@ -382,7 +382,7 @@ CSS](https://github.com/zulip/zulip/). semi-duplicate code for each feature. **Skills recommended**: A good mix of Python/Django and HTML/CSS/JavaScript skill is ideal. The system for adding new features is - [well documented](../tutorials/new-feature-tutorial.md). + [well documented](../tutorials/new-feature-tutorial.html). Expert: Shubham Dhama. - Rebuild the Zulip web UI using a modern reactive layer like vue.js. @@ -390,7 +390,7 @@ CSS](https://github.com/zulip/zulip/). presence layer), then move on to more complex pieces (like the subscriptions page), and finally attach the main UI. Definitely worth reading the vue.js documentation and reading -[how Zulip's real-time sync works](../subsystems/events-system.md). +[how Zulip's real-time sync works](../subsystems/events-system.html). **Skills recommended**: Strong JavaScript experience, good communication skills and an eye for detail. We think this would be an awesome project, but rewrite projects often introduce lots of bugs, so @@ -398,7 +398,7 @@ we're interested in particularly careful candidates who have the discipline to redo a small component at a time and carefully test for regressions. Good ways to demonstrate qualification for this are finding and reporting bugs using -[Zulip's manual UI testing guide](../testing/manual-testing.md) +[Zulip's manual UI testing guide](../testing/manual-testing.html) and doing [refactoring projects](https://github.com/zulip/zulip/labels/area%3A%20refactoring). Expert: Tommy Ip, Tim Abbott. @@ -436,7 +436,7 @@ Expert: Tommy Ip, Tim Abbott. single area). A possible specific larger project in this space is working on - adding [mypy](../testing/mypy.md) stubs + adding [mypy](../testing/mypy.html) stubs for Django in mypy to make our type checking more powerful. Read [our mypy blog post](https://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy/) for details on how mypy works and is integrated into zulip. This diff --git a/docs/overview/roadmap.md b/docs/overview/roadmap.md index ef39fbb964..d156082420 100644 --- a/docs/overview/roadmap.md +++ b/docs/overview/roadmap.md @@ -27,9 +27,9 @@ priority projects. We welcome participation from the community in influencing the Zulip roadmap. If a bug or missing feature is causing significant pain for your organization, we appreciate your commenting to that effect, either in -[chat.zulip.org](../contributing/chat-zulip-org.md) or on the +[chat.zulip.org](../contributing/chat-zulip-org.html) or on the relevant GitHub issue, with an explanation of how the issue impacts -your use case. See [Reporting issues](contributing.md#reporting-issues) +your use case. See [Reporting issues](contributing.html#reporting-issues) for more information. [label-blocker]: diff --git a/docs/production/authentication-methods.md b/docs/production/authentication-methods.md index 20c210847b..95b0a2681a 100644 --- a/docs/production/authentication-methods.md +++ b/docs/production/authentication-methods.md @@ -118,7 +118,7 @@ email address, if it isn't the same as the "Zulip username"). **If you are using LDAP for authentication**: you will need to enable the `zproject.backends.ZulipLDAPAuthBackend` auth backend, in `AUTHENTICATION_BACKENDS` in `/etc/zulip/settings.py`. After doing -so (and as always [restarting the Zulip server](settings.md) to ensure +so (and as always [restarting the Zulip server](settings.html) to ensure your settings changes take effect), you should be able to log into Zulip by entering your email address and LDAP password on the Zulip login form. @@ -388,9 +388,9 @@ For example, the was about 30 lines of code, plus some documentation and an [automatically generated migration][schema-migrations]. We also have helpful developer documentation on -[testing auth backends](../subsystems/auth.md). +[testing auth backends](../subsystems/auth.html). -[schema-migrations]: ../subsystems/schema-migrations.md +[schema-migrations]: ../subsystems/schema-migrations.html [python-social-auth]: https://python-social-auth.readthedocs.io/en/latest/ ## Development only diff --git a/docs/production/deployment.md b/docs/production/deployment.md index 041f4f362d..a9298f3f12 100644 --- a/docs/production/deployment.md +++ b/docs/production/deployment.md @@ -18,14 +18,14 @@ git clone https://github.com/zulip/zulip.git zulip-server-git ``` and then -[continue the normal installation instructions](../production/install.md#step-2-install-zulip). -You can also [upgrade Zulip from Git](../production/maintain-secure-upgrade.md#upgrading-from-a-git-repository). +[continue the normal installation instructions](../production/install.html#step-2-install-zulip). +You can also [upgrade Zulip from Git](../production/maintain-secure-upgrade.html#upgrading-from-a-git-repository). ## Zulip in Docker Zulip has an officially supported, experimental [docker image](https://github.com/zulip/docker-zulip). Please note -that Zulip's [normal installer](../production/install.md) has been +that Zulip's [normal installer](../production/install.html) has been extremely reliable for years, whereas the Docker image is new and has rough edges, so we recommend the normal installer unless you have a specific reason to prefer Docker. @@ -67,7 +67,7 @@ of managing chat.zulip.org and zulipchat.com. Unfortunately, you cannot use most third-party database-as-a-service provides like Amazon RDS as the database provider with Zulip without a degraded experience. Zulip let you choose one of two -[full-text search postgres extensions](../subsystems/full-text-search.md). +[full-text search postgres extensions](../subsystems/full-text-search.html). Neither is available in Amazon RDS. As a result, if you use one of those providers, Zulip's full-text search will be unavailable. diff --git a/docs/production/email.md b/docs/production/email.md index 7a20698e28..05bb974cdf 100644 --- a/docs/production/email.md +++ b/docs/production/email.md @@ -19,7 +19,7 @@ email addresses and send notifications. example: `email_password = abcd1234`. Like any other change to the Zulip configuration, be sure to - [restart the server](settings.md) to make your changes take + [restart the server](settings.html) to make your changes take effect. 4. Test that your configuration is working. See the test command in diff --git a/docs/production/export-and-import.md b/docs/production/export-and-import.md index eb1ae3c48f..dfad4b1259 100644 --- a/docs/production/export-and-import.md +++ b/docs/production/export-and-import.md @@ -29,7 +29,7 @@ impossible or unlikely, the extra complexity required for renumbering makes them structurally more risky than the direct postgres backup process. -[backups]: ../production/maintain-secure-upgrade.md#backups +[backups]: ../production/maintain-secure-upgrade.html#backups ## Preventing changes during the export @@ -83,7 +83,7 @@ formats are consistent. For exports from zulipchat.com, usually this means you need to upgrade your Zulip server to the latest `master` branch, using [upgrade-zulip-from-git][upgrade-zulip-from-git]. -First [install a new Zulip server](../production/install.md), +First [install a new Zulip server](../production/install.html), skipping "Step 3: Create a Zulip organization, and log in" (you'll create your Zulip organization via the data import tool instead). @@ -110,7 +110,7 @@ cd /home/zulip/deployments/current This could take several minutes to run, depending on how much data you're importing. -[upgrade-zulip-from-git]: ../production/maintain-secure-upgrade.md#upgrading-from-a-git-repository +[upgrade-zulip-from-git]: ../production/maintain-secure-upgrade.html#upgrading-from-a-git-repository **Import options** diff --git a/docs/production/install-existing-server.md b/docs/production/install-existing-server.md index 515b5c991d..bf5595ff36 100644 --- a/docs/production/install-existing-server.md +++ b/docs/production/install-existing-server.md @@ -82,5 +82,5 @@ We don't provide a convenient way to uninstall a Zulip server. Most of the limitations are things we'd accept a pull request to fix; we welcome contributions to shrink this list of gotchas. Chat with us -in the [chat.zulip.org community](../contributing/chat-zulip-org.md) if you're +in the [chat.zulip.org community](../contributing/chat-zulip-org.html) if you're interested in helping! diff --git a/docs/production/install.md b/docs/production/install.md index 7e17df4fae..5b5c1488ca 100644 --- a/docs/production/install.md +++ b/docs/production/install.md @@ -2,13 +2,13 @@ Make sure you want to install a Zulip production server. If you'd instead like to test or develop a new feature, we recommend the -[Zulip development server](../development/overview.md#requirements) instead. +[Zulip development server](../development/overview.html#requirements) instead. If you just want to play around with Zulip and see what it looks like, you can create a test organization at . You'll need an Ubuntu or Debian system that satisfies -[the installation requirements](../production/requirements.md), or -you can use Zulip's [experimental Docker image](../production/deployment.md#zulip-in-docker). +[the installation requirements](../production/requirements.html), or +you can use Zulip's [experimental Docker image](../production/deployment.html#zulip-in-docker). ## Step 1: Download the latest release @@ -25,7 +25,7 @@ tar -xf zulip-server-latest.tar.gz * If you'd like to verify the download, we [publish the sha256sums of our release tarballs](https://www.zulip.org/dist/releases/SHA256SUMS.txt). * You can also -[install a pre-release version of Zulip](../production/deployment.md#installing-zulip-from-git) +[install a pre-release version of Zulip](../production/deployment.html#installing-zulip-from-git) using code from our [repository on GitHub](https://github.com/zulip/zulip/). ## Step 2: Install Zulip @@ -76,9 +76,9 @@ If the script gives an error, consult [Troubleshooting](#troubleshooting) below. If you'd prefer to acquire an SSL certificate yourself in any other way, it's easy to [provide it to Zulip][doc-ssl-manual]. -[doc-settings]: ../production/settings.md -[doc-certbot]: ../production/ssl-certificates.md#certbot-recommended -[doc-ssl-manual]: ../production/ssl-certificates.md#manual-install +[doc-settings]: ../production/settings.html +[doc-certbot]: ../production/ssl-certificates.html#certbot-recommended +[doc-ssl-manual]: ../production/ssl-certificates.html#manual-install ## Step 3: Create a Zulip organization, and log in @@ -89,7 +89,7 @@ and return to the the import instructions. [hipchat-import]: https://zulipchat.com/help/import-from-hipchat [slack-import]: https://zulipchat.com/help/import-from-slack -[zulip-backups]: ../production/maintain-secure-upgrade.md#backups +[zulip-backups]: ../production/maintain-secure-upgrade.html#backups Otherwise, open the link in a browser. Follow the prompts to set up your organization, and your own user account as an administrator. @@ -98,14 +98,14 @@ Then, log in! The link is a secure one-time-use link. If you need another later, you can generate a new one by running `manage.py generate_realm_creation_link` on the server. See also our doc on -running [multiple organizations on the same server](multiple-organizations.md) +running [multiple organizations on the same server](multiple-organizations.html) if that's what you're planning to do. ## Step 4: Configure and use To really see Zulip in action, you'll need to get the people you work together with using it with you. -* [Set up outgoing email](email.md) so Zulip can confirm new users' +* [Set up outgoing email](email.html) so Zulip can confirm new users' email addresses and send notifications. * Learn how to [get your organization started][realm-admin-docs] using Zulip at its best. @@ -117,8 +117,8 @@ Learning more: for server administrators. This extremely low-traffic list is for important announcements, including new releases and security issues. * Follow [Zulip on Twitter](https://twitter.com/zulip). -* Learn how to [configure your Zulip server settings](settings.md). -* Learn about [maintaining a production Zulip server](maintain-secure-upgrade.md). +* Learn how to [configure your Zulip server settings](settings.html). +* Learn about [maintaining a production Zulip server](maintain-secure-upgrade.html). [realm-admin-docs]: https://zulipchat.com/help/getting-your-organization-started-with-zulip @@ -141,7 +141,7 @@ Postgres, RabbitMQ, Memcached and Redis. * Initializes Zulip's database. If you'd like to deploy Zulip with these services on different -machines, check out our [deployment options documentation](deployment.md). +machines, check out our [deployment options documentation](deployment.html). ## Troubleshooting @@ -167,13 +167,13 @@ and can just skip that step. **After the install script.** If you get an error after `scripts/setup/install` completes, check the bottom of `/var/log/zulip/errors.log` for a traceback, and consult -the [troubleshooting section](troubleshooting.md) for advice on +the [troubleshooting section](troubleshooting.html) for advice on how to debug. **Community.** If the tips above don't help, please visit [#production help](https://chat.zulip.org/#narrow/stream/31-production-help) -in the [Zulip development community server](../contributing/chat-zulip-org.md) for +in the [Zulip development community server](../contributing/chat-zulip-org.html) for realtime help or email zulip-help@googlegroups.com with the full traceback, and we'll try to help you out! Please provide details like the full traceback from the bottom of `/var/log/zulip/errors.log` in diff --git a/docs/production/maintain-secure-upgrade.md b/docs/production/maintain-secure-upgrade.md index 06292528e8..ae84545287 100644 --- a/docs/production/maintain-secure-upgrade.md +++ b/docs/production/maintain-secure-upgrade.md @@ -12,7 +12,7 @@ secure Zulip installation, including: You may also want to read this related content: -- [Security Model](../production/security-model.md) +- [Security Model](../production/security-model.html) ## Upgrading @@ -275,7 +275,7 @@ extracting the entire archive. tar -Oaxf /path/to/archive/zulip-backup-rest.tar.gz zulip-backup/zulip-version ``` -[install-server]: ../production/install.md +[install-server]: ../production/install.html ### What is included @@ -302,7 +302,7 @@ backup archives, and you may want to backup separately: compared to the rest of the data for a Zulip server. * Files uploaded with the Zulip - [S3 file upload backend](../production/upload-backends.md). We + [S3 file upload backend](../production/upload-backends.html). We don't include these for two reasons. First, the uploaded file data in S3 can easily be many times larger than the rest of the backup, and downloading it all to a server doing a backup could easily @@ -358,7 +358,7 @@ more human-readable and easier to parse, and doesn't have the requirement that the same set of Zulip organizations exist on the two servers (which is critical for migrations to and from Zulip Cloud). -[export-import]: ../production/export-and-import.md +[export-import]: ../production/export-and-import.html ### Restore from manual backups @@ -473,16 +473,16 @@ running Zulip with larger teams (especially >1000 users). * For an organization with 100+ users, it's important to have more than 4GB of RAM on the system. Zulip will install on a system with 2GB of RAM, but with less than 3.5GB of RAM, it will run its - [queue processors](../subsystems/queuing.md) multithreaded to conserve memory; + [queue processors](../subsystems/queuing.html) multithreaded to conserve memory; this creates a significant performance bottleneck. -* [chat.zulip.org](../contributing/chat-zulip-org.md), with thousands of user +* [chat.zulip.org](../contributing/chat-zulip-org.html), with thousands of user accounts and thousands of messages sent every week, has 8GB of RAM, 4 cores, and 80GB of disk. The CPUs are essentially always idle, but the 8GB of RAM is important. * We recommend using a [remote postgres - database](postgres.md) for isolation, though it is + database](postgres.html) for isolation, though it is not required. In the following, we discuss a relatively simple configuration with two types of servers: application servers (running Django, Tornado, RabbitMQ, Redis, Memcached, etc.) and @@ -541,7 +541,7 @@ welcome! This is an area we are hoping to improve. ## Securing your Zulip server Zulip's security model is discussed in -[a separate document](../production/security-model.md). +[a separate document](../production/security-model.html). ## Management commands @@ -579,7 +579,7 @@ system-internal bots like `welcome-bot`; you are unlikely to need to interact with that realm.) Unless you are -[hosting multiple organizations on your Zulip server](../production/multiple-organizations.md), +[hosting multiple organizations on your Zulip server](../production/multiple-organizations.html), your single Zulip organization on the root domain will have the empty string (`''`) as its `string_id`. So you can run e.g.: ``` @@ -653,4 +653,4 @@ There are a large number of useful management commands under ## Hosting multiple Zulip organizations -This is explained in detail on [its own page](../production/multiple-organizations.md). +This is explained in detail on [its own page](../production/multiple-organizations.html). diff --git a/docs/production/mobile-push-notifications.md b/docs/production/mobile-push-notifications.md index eddceb24e3..16cc25042f 100644 --- a/docs/production/mobile-push-notifications.md +++ b/docs/production/mobile-push-notifications.md @@ -21,7 +21,7 @@ follows: 1. Uncomment the `PUSH_NOTIFICATION_BOUNCER_URL = 'https://push.zulipchat.com'` line in your `/etc/zulip/settings.py` file (i.e. remove the `#` at the start of the line), and - [restart your Zulip server](../production/maintain-secure-upgrade.md#updating-settings). + [restart your Zulip server](../production/maintain-secure-upgrade.html#updating-settings). If you installed your Zulip server with a version older than 1.6, you'll need to add the line (it won't be there to uncomment). diff --git a/docs/production/multiple-organizations.md b/docs/production/multiple-organizations.md index f3ce86164c..e234273f11 100644 --- a/docs/production/multiple-organizations.md +++ b/docs/production/multiple-organizations.md @@ -11,7 +11,7 @@ single server. Throughout this article, we'll assume you're working on a zulip server with hostname `zulip.example.com`. You may also find the more -[technically focused article on realms](../subsystems/realms.md) to be useful +[technically focused article on realms](../subsystems/realms.html) to be useful reading. ## Subdomains @@ -33,13 +33,13 @@ things: file. That setting is the default in 1.7 and later. * Make sure you have SSL certificates for all of the subdomains you're going to use. If you're using - [our LetsEncrypt instructions](ssl-certificates.md), it's easy to + [our LetsEncrypt instructions](ssl-certificates.html), it's easy to just specify multiple subdomains in your certificate request. * If necessary, modify your `nginx` configuration to use your new certificates. * Use `./manage.py generate_realm_creation_link` again to create your new organization. Review - [the install instructions](install.md) if you need a + [the install instructions](install.html) if you need a refresher on how this works. * If you're planning on using GitHub auth or another social authentication method, review @@ -55,7 +55,7 @@ the homepage for the server is a copy of the Zulip homepage. You'll need to install an SSL certificate valid for all the (sub)domains you're using your Zulip server with. You can get an SSL certificate covering several domains for free by using -[our Certbot wrapper tool](../production/ssl-certificates.md#after-zulip-is-already-installed), +[our Certbot wrapper tool](../production/ssl-certificates.html#after-zulip-is-already-installed), though if you're going to host a large number of organizations, you may want to get a wildcard certificate. You can also get a wildcard certificate for diff --git a/docs/production/password-strength.md b/docs/production/password-strength.md index 50c3155ce9..a5151a3832 100644 --- a/docs/production/password-strength.md +++ b/docs/production/password-strength.md @@ -8,7 +8,7 @@ When a user tries to set a password, we use [zxcvbn][zxcvbn] to check that it isn't a weak one. See discussion in [our main docs for server -admins](../production/security-model.md#passwords). This doc explains in more +admins](../production/security-model.html#passwords). This doc explains in more detail how we set the default threshold (`PASSWORD_MIN_GUESSES`) we use. First, read the doc section there. (It's short.) diff --git a/docs/production/requirements.md b/docs/production/requirements.md index 0c7a377156..f4acfefc3b 100644 --- a/docs/production/requirements.md +++ b/docs/production/requirements.md @@ -25,7 +25,7 @@ strongly recommend using either a fresh machine instance in a cloud provider, a fresh VM, or a dedicated machine. If you decide to disregard our advice and use a server that hosts other services, we can't support you, but -[we do have some notes on issues you'll encounter](install-existing-server.md). +[we do have some notes on issues you'll encounter](install-existing-server.html). #### Operating System @@ -61,7 +61,7 @@ https://help.ubuntu.com/community/Repositories/Ubuntu for organizations with a hundreds of users (active or no). See our - [documentation on scalability](../production/maintain-secure-upgrade.md#scalability) + [documentation on scalability](../production/maintain-secure-upgrade.html#scalability) for advice on hardware requirements for larger organizations. * Disk space: You'll need at least 10GB of free disk space for a @@ -72,7 +72,7 @@ https://help.ubuntu.com/community/Repositories/Ubuntu messages sent. We recommend using an SSD and avoiding cloud storage backends that limit the IOPS per second, since the disk is primarily used for the database (assuming you're using the - [S3 file uploads backend](../production/upload-backends.md)). + [S3 file uploads backend](../production/upload-backends.html)). #### Network and Security Specifications @@ -114,10 +114,10 @@ available: [the `--self-signed-cert` option][doc-self-signed] in the installer. If you'd rather acquire an SSL certificate another way, see our [SSL -certificate documentation](ssl-certificates.md). +certificate documentation](ssl-certificates.html). -[doc-certbot]: ssl-certificates.md#certbot-recommended -[doc-self-signed]: ssl-certificates.md#self-signed-certificate +[doc-certbot]: ssl-certificates.html#certbot-recommended +[doc-self-signed]: ssl-certificates.html#self-signed-certificate #### Outgoing email @@ -126,9 +126,9 @@ certificate documentation](ssl-certificates.md). during the signup process, missed message notifications, password reset, etc.). If you don't have an existing outgoing SMTP solution, read about - [free outgoing SMTP options and options for prototyping](email.md#free-outgoing-email-services). + [free outgoing SMTP options and options for prototyping](email.html#free-outgoing-email-services). Once you have met these requirements, see [full instructions for installing -Zulip in production](../production/install.md). +Zulip in production](../production/install.html). [trusty-eol]: https://wiki.ubuntu.com/Releases diff --git a/docs/production/security-model.md b/docs/production/security-model.md index df20babf27..c0af175bd4 100644 --- a/docs/production/security-model.md +++ b/docs/production/security-model.md @@ -4,7 +4,7 @@ This section attempts to document the Zulip security model. It likely does not cover every issue; if there are details you're curious about, please feel free to ask questions in [#production help](https://chat.zulip.org/#narrow/stream/31-production-help) -on the [Zulip community server](../contributing/chat-zulip-org.md) +on the [Zulip community server](../contributing/chat-zulip-org.html) (or if you think you've found a security bug, please report it to zulip-security@googlegroups.com so we can do a responsible security @@ -39,7 +39,7 @@ announcement). * The preferred way to login to Zulip is using an SSO solution like Google Auth, LDAP, or similar, but Zulip also supports password authentication. See - [the authentication methods documentation](../production/authentication-methods.md) + [the authentication methods documentation](../production/authentication-methods.html) for details on Zulip's available authentication methods. ### Passwords @@ -65,7 +65,7 @@ strength allowed is controlled by two settings in By default, `PASSWORD_MIN_GUESSES` is 10000. This provides significant protection against online attacks, while limiting the burden imposed on users choosing a password. See - [password strength](../production/password-strength.md) for an extended + [password strength](../production/password-strength.html) for an extended discussion on how we chose this value. Estimating the guessability of a password is a complex problem and diff --git a/docs/production/settings.md b/docs/production/settings.md index 0de80738f2..e5c70bf2d1 100644 --- a/docs/production/settings.md +++ b/docs/production/settings.md @@ -46,7 +46,7 @@ If you want an additional or different authentication backend, you will need to uncomment one or more and then do any additional configuration required for that backend as documented in the `settings.py` file. See the -[section on Authentication](../production/authentication-methods.md) for more +[section on Authentication](../production/authentication-methods.html) for more detail on the available authentication backends and how to configure them. @@ -63,7 +63,7 @@ their push notification protocols, the Zulip mobile apps for [Android](https://play.google.com/store/apps/details?id=com.zulipmobile) can only receive push notifications from a single Zulip server. We have configured that server to be `push.zulipchat.com`, and offer a -[push notification forwarding service](mobile-push-notifications.md) that +[push notification forwarding service](mobile-push-notifications.html) that forwards push notifications through our servers to mobile devices. Read the linked documentation for instructions on how to register for and configure this service. @@ -92,7 +92,7 @@ been added in more recent versions of Zulip. Since Zulip's settings file is a Python script, there are a number of other things that one can configure that are not documented; ask on -[chat.zulip.org](../contributing/chat-zulip-org.md) +[chat.zulip.org](../contributing/chat-zulip-org.html) if there's something you'd like to do but can't figure out how to. [settings-py-template]: https://github.com/zulip/zulip/blob/master/zproject/prod_settings_template.py @@ -120,4 +120,4 @@ Zulip documentation cover everything anyone might want to know about running Zulip in production. Next: [Maintaining and upgrading Zulip in -production](../production/maintain-secure-upgrade.md). +production](../production/maintain-secure-upgrade.html). diff --git a/docs/production/ssl-certificates.md b/docs/production/ssl-certificates.md index 761eb1dca2..9150047e75 100644 --- a/docs/production/ssl-certificates.md +++ b/docs/production/ssl-certificates.md @@ -75,7 +75,7 @@ Internet. If you need to configure a multiple domain certificate, you can generate one as described in the section below after installing Zulip. -[doc-install-script]: ../production/install.md#step-2-install-zulip +[doc-install-script]: ../production/install.html#step-2-install-zulip ### After Zulip is already installed diff --git a/docs/production/troubleshooting.md b/docs/production/troubleshooting.md index 0d005c04dd..5a5a07968e 100644 --- a/docs/production/troubleshooting.md +++ b/docs/production/troubleshooting.md @@ -6,8 +6,8 @@ supervisorctl](#using-supervisorctl), to learn how to use the Supervisor client to monitor and manage services. If you haven't already, now might be a good time to read Zulip's [architectural -overview](../overview/architecture-overview.md), particularly the -[Components](../overview/architecture-overview.md#components) section. This will help you +overview](../overview/architecture-overview.html), particularly the +[Components](../overview/architecture-overview.html#components) section. This will help you understand the many services Zulip uses. If you encounter issues while running Zulip, take a look at Zulip's logs, which diff --git a/docs/production/upload-backends.md b/docs/production/upload-backends.md index bb50e53394..4daaf94e73 100644 --- a/docs/production/upload-backends.md +++ b/docs/production/upload-backends.md @@ -138,7 +138,7 @@ need a block like this: ``` The file-uploads bucket should not be world-readable. See the -[documentation on the Zulip security model](security-model.md) for +[documentation on the Zulip security model](security-model.html) for details on the security model for uploaded files. ## Migrating from local uploads to Amazon S3 backend diff --git a/docs/subsystems/auth.md b/docs/subsystems/auth.md index 3ffdf68781..64f0332134 100644 --- a/docs/subsystems/auth.md +++ b/docs/subsystems/auth.md @@ -6,7 +6,7 @@ environment. ## Testing OAuth in development -Among the many [authentication methods](../production/authentication-methods.md) +Among the many [authentication methods](../production/authentication-methods.html) we support, a server can be configured to allow users to sign in with their Google accounts or GitHub accounts, using the OAuth protocol. @@ -56,9 +56,9 @@ The steps to do this are a variation of the steps documented in Some OAuth providers (such as Facebook) require HTTPS on the callback URL they post back to, which isn't supported directly by the Zulip development environment. If you run a -[remote Zulip development server](../development/remote.md), we have +[remote Zulip development server](../development/remote.html), we have instructions for -[an nginx reverse proxy with SSL](../development/remote.md#using-an-nginx-reverse-proxy) +[an nginx reverse proxy with SSL](../development/remote.html#using-an-nginx-reverse-proxy) that you can use for your development efforts. ## Testing LDAP in development @@ -77,7 +77,7 @@ actual flows for LDAP configuration. - To enable fakeldap, set `FAKE_LDAP_MODE` in `zproject/dev_settings.py` to one of the following options. For more information on these modes, refer to -[our production docs](../production/authentication-methods.md#ldap-including-active-directory): +[our production docs](../production/authentication-methods.html#ldap-including-active-directory): - `a`: If users' email addresses are in LDAP and used as username. - `b`: If LDAP only has usernames but email addresses are of the form username@example.com diff --git a/docs/subsystems/caching.md b/docs/subsystems/caching.md index b99b8c6027..bf8c977fa0 100644 --- a/docs/subsystems/caching.md +++ b/docs/subsystems/caching.md @@ -247,7 +247,7 @@ avatars, similar details for streams, recent message history, etc. These days are fetched in the `/register` endpoint (or `page_params` for the webapp), and kept correct over time. The key to keeping these state up to date is Zulip's -[real-time events system](../subsystems/events-system.md), which +[real-time events system](../subsystems/events-system.html), which allows the server to notify clients whenever state that might be cached by clients is changed. Clients are responsible for handling the events, updating their state, and rerendering any UI components diff --git a/docs/subsystems/client.md b/docs/subsystems/client.md index a91b569be2..f6aa7492b6 100644 --- a/docs/subsystems/client.md +++ b/docs/subsystems/client.md @@ -14,7 +14,7 @@ of Zulip; it's primarily intended to assist debugging. A `Client` is used to sort messages into client categories such as `ZulipElectron` on the `/stats` [page](https://chat.zulip.org/stats). For more information see, -[Analytics](analytics.md). +[Analytics](analytics.html). ## Integrations diff --git a/docs/subsystems/conversion.md b/docs/subsystems/conversion.md index 30cafc14a6..e351326b0b 100644 --- a/docs/subsystems/conversion.md +++ b/docs/subsystems/conversion.md @@ -33,7 +33,7 @@ document: This document focuses almost entirely on the **export** piece. Issues with getting Zulip itself running are out of scope here; see [the -production installation instructions](../index.md#zulip-in-production). +production installation instructions](../index.html#zulip-in-production). As for the import side of things, we only touch on it implicitly. (My reasoning was that we *had* to get the export piece right in a timely fashion, even if it meant we would have to sort out some straggling diff --git a/docs/subsystems/dependencies.md b/docs/subsystems/dependencies.md index a839e23cf7..298905f980 100644 --- a/docs/subsystems/dependencies.md +++ b/docs/subsystems/dependencies.md @@ -92,12 +92,12 @@ the backend, but does in JavaScript. For the third-party services like Postgres, Redis, Nginx, and RabbitMQ that are documented in the -[architecture overview](../overview/architecture-overview.md), we rely on the +[architecture overview](../overview/architecture-overview.html), we rely on the versions of those packages provided alongside the Linux distribution on which Zulip is deployed. Because Zulip -[only supports Ubuntu in production](../production/requirements.md), this +[only supports Ubuntu in production](../production/requirements.html), this usually means `apt`, though we do support -[other platforms in development](../development/setup-advanced.md). Since +[other platforms in development](../development/setup-advanced.html). Since we don't control the versions of these dependencies, we avoid relying on specific versions of these packages wherever possible. @@ -120,7 +120,7 @@ backported versions of other dependencies (e.g. `camo`, to fix a buggy possible by getting issues addressed in the upstream distributions. We also rely on the `pgroonga` PPA for the `pgroonga` postgres -extension, used by our [full-text search](full-text-search.md). +extension, used by our [full-text search](full-text-search.html). ## Python packages @@ -230,7 +230,7 @@ super fast internet. You can use tmux or screen to make sure that the [script keeps running even if you get disconnected][stack-overflow] from the SSH session. -[mypy-docs]: ../testing/mypy.md +[mypy-docs]: ../testing/mypy.html [requirements-readme]: https://github.com/zulip/zulip/blob/master/requirements/README.md [stack-overflow]: https://askubuntu.com/questions/8653/how-to-keep-processes-running-after-ending-ssh-session [caching]: https://help.github.com/en/articles/caching-your-github-password-in-git @@ -254,7 +254,7 @@ reasoning here. dependencies in the `yarn.lock` file; `yarn install` updates the `yarn.lock` files. * `tools/update-prod-static`. This process is discussed in detail in - the [static asset pipeline](../subsystems/front-end-build-process.md) article, + the [static asset pipeline](../subsystems/front-end-build-process.html) article, but we don't use the `node_modules` directories directly in production. Instead, static assets are compiled using our static asset pipeline and it is the compiled assets that are served @@ -298,7 +298,7 @@ Zulip uses the [iamcal emoji data package][iamcal] for its emoji data and sprite sheets. We download this dependency using `npm`, and then have a tool, `tools/setup/build_emoji`, which reformats the emoji data into the files under `static/generated/emoji`. Those files are in -turn used by our [markdown processor](../subsystems/markdown.md) and +turn used by our [markdown processor](../subsystems/markdown.html) and `tools/update-prod-static` to make Zulip's emoji work in the various environments where they need to be displayed. @@ -309,11 +309,11 @@ directories, with `scripts/lib/clean_emoji_cache.py` responsible for garbage-collection. This caching and garbage-collection is required because a correct emoji implementation involves over 1000 small image files and a few large ones. There is a more extended article on our -[emoji infrastructure](emoji.md). +[emoji infrastructure](emoji.html). ### Translations data -Zulip's [translations infrastructure](../translating/translating.md) generates +Zulip's [translations infrastructure](../translating/translating.html) generates several files from the source data, which we manage similar to our emoji, but without the caching (and thus without the garbage-collection). New translations data is downloaded from diff --git a/docs/subsystems/documentation.md b/docs/subsystems/documentation.md index c1b90ddc76..2232aacbc9 100644 --- a/docs/subsystems/documentation.md +++ b/docs/subsystems/documentation.md @@ -90,19 +90,19 @@ to do the things one does a lot in each type of documentation. To learn more about Zulip's general user documentation, [visit it on zulipchat.com](https://zulipchat.com/help/) or -[read our guide on writing user documentation](user-docs.md). +[read our guide on writing user documentation](user-docs.html). ### Integrations documentation To learn more about Zulip's integrations documentation, [visit it on zulipchat.com](https://zulipchat.com/integrations/) or -[read our guide on writing user documentation](integration-docs.md). +[read our guide on writing user documentation](integration-docs.html). ### API documentation To learn more about Zulip's API documentation, [visit it on zulipchat.com](https://zulipchat.com/api/) or -[read our tutorial on writing user documentation](../tutorials/documenting-api-endpoints.md). +[read our tutorial on writing user documentation](../tutorials/documenting-api-endpoints.html). ## Automated testing @@ -111,8 +111,8 @@ recommend running locally when making significant edits: * `tools/lint` catches a number of common mistakes, and we highly recommend -[using our linter pre-commit hook](../git/zulip-tools.md#set-up-git-repo-script). -See the [main linter doc](../testing/linters.md) for more details. +[using our linter pre-commit hook](../git/zulip-tools.html#set-up-git-repo-script). +See the [main linter doc](../testing/linters.html) for more details. * The ReadTheDocs docs are built and the links tested by `tools/test-documentation`, which runs `build-docs` and then checks diff --git a/docs/subsystems/email.md b/docs/subsystems/email.md index 8cfda81661..88e3bb1e8f 100644 --- a/docs/subsystems/email.md +++ b/docs/subsystems/email.md @@ -2,7 +2,7 @@ This page has developer documentation on the Zulip email system. If you're trying to configure your server to send email, you might be looking for our -guide to [sending outgoing email](../production/email.md). If you're trying to +guide to [sending outgoing email](../production/email.html). If you're trying to configure an email integration to receive incoming email (e.g. so that users can reply to missed message emails via email), you might be interested in our instructions for @@ -43,7 +43,7 @@ Email takes about a quarter second per email to process and send. Generally speaking, if you're sending just one email, doing it in the current process is fine. If you're sending emails in a loop, you probably want to send it from a queue. Documentation on our queueing system is available -[here](../subsystems/queuing.md). +[here](../subsystems/queuing.html). ## Development and testing @@ -69,7 +69,7 @@ you have to first configure the following SMTP settings. * The username `EMAIL_HOST_USER` in `zproject/dev_settings.py`. * The password `email_password` in `zproject/dev-secrets.conf`. -See [this](../production/email.md#free-outgoing-email-services) +See [this](../production/email.html#free-outgoing-email-services) section for instructions on obtaining SMTP details. **Note: The base_image_uri of the images in forwarded emails would be replaced @@ -117,7 +117,7 @@ behavior, or other developers will get test failures until they provision. While this model is great for the markup side, it isn't ideal for -[translations](../translating/translating.md). The Django +[translations](../translating/translating.html). The Django translation system works with exact strings, and having different new markup can require translators to re-translate strings, which can result in problems like needing 2 copies of each string (one for diff --git a/docs/subsystems/emoji.md b/docs/subsystems/emoji.md index 23cc6eed1b..cbadefb390 100644 --- a/docs/subsystems/emoji.md +++ b/docs/subsystems/emoji.md @@ -61,7 +61,7 @@ The `build_emoji` tool generates the set of files under `static/generated/emoji` is a symlink to that tree; we do this in order to cache old versions to make provisioning and production deployments super fast in the common case that we haven't changed the -emoji tooling). See [our dependencies document](../subsystems/dependencies.md) +emoji tooling). See [our dependencies document](../subsystems/dependencies.html) for more details on this strategy. The emoji tree generated by this process contains several import elements: @@ -76,7 +76,7 @@ The emoji tree generated by this process contains several import elements: * `images/emoji/*.png`: A farm of symlinks from emoji names to the `images/emoji/unicode/` tree. This is used to serve individual emoji images, as well as for the - [backend markdown processor](../subsystems/markdown.md) to know which emoji + [backend markdown processor](../subsystems/markdown.html) to know which emoji names exist and what unicode emoji / images they map to. In this tree, we currently include all of the emoji in `emoji-map.json`; this means that if you send `:angry_face:`, it won't autocomplete, diff --git a/docs/subsystems/events-system.md b/docs/subsystems/events-system.md index ca3bec4c6e..24c2db910a 100644 --- a/docs/subsystems/events-system.md +++ b/docs/subsystems/events-system.md @@ -4,7 +4,7 @@ Zulip's "events system" is the server-to-client push system that powers our real-time sync. This document explains how it works; to read an example of how a complete feature using this system works, check out the -[new application feature tutorial](../tutorials/new-feature-tutorial.md). +[new application feature tutorial](../tutorials/new-feature-tutorial.html). Any single-page web application like Zulip needs a story for how changes made by one client are synced to other clients, though having @@ -86,7 +86,7 @@ wide range of possible clients, and make it easy for developers. Zulip's event delivery (real-time push) system is based on Tornado, which is ideal for handling a large number of open requests. Details on Tornado are available in the -[architecture overview](../overview/architecture-overview.md), but in short it +[architecture overview](../overview/architecture-overview.html), but in short it is good at holding open a large number of connections for a long time. The complete system is about 1500 lines of code in `zerver/tornado/`, primarily `zerver/tornado/event_queue.py`. @@ -262,4 +262,4 @@ correctly, clients are responsible for discarding events related to messages that the client has not yet fetched. Additionally, see -[the master documentation on sending messages](../subsystems/sending-messages.md) +[the master documentation on sending messages](../subsystems/sending-messages.html) diff --git a/docs/subsystems/front-end-build-process.md b/docs/subsystems/front-end-build-process.md index 9bac5ac926..ae465ab171 100644 --- a/docs/subsystems/front-end-build-process.md +++ b/docs/subsystems/front-end-build-process.md @@ -3,9 +3,9 @@ This page documents additional information that may be useful when developing new features for Zulip that require front-end changes, especially those that involve adding new files. For a more general -overview, see the [new feature tutorial](../tutorials/new-feature-tutorial.md). +overview, see the [new feature tutorial](../tutorials/new-feature-tutorial.html). -Our [dependencies documentation](../subsystems/dependencies.md) has useful +Our [dependencies documentation](../subsystems/dependencies.html) has useful relevant background as well. ## Primary build process diff --git a/docs/subsystems/hashchange-system.md b/docs/subsystems/hashchange-system.md index ea3ecf3209..cf8e71aaf0 100644 --- a/docs/subsystems/hashchange-system.md +++ b/docs/subsystems/hashchange-system.md @@ -118,6 +118,6 @@ browser, Zulip also does a few bookkeeping things on page reload (like cleaning up its event queue, and saving any text in an open compose box as a draft). -[testing-with-casper]: ../testing/testing-with-casper.md +[testing-with-casper]: ../testing/testing-with-casper.html [self-server-reloads]: #server-initiated-reloads -[events-system]: ../subsystems/events-system.md +[events-system]: ../subsystems/events-system.html diff --git a/docs/subsystems/html-templates.md b/docs/subsystems/html-templates.md index 79fdae4ebc..633625f62c 100644 --- a/docs/subsystems/html-templates.md +++ b/docs/subsystems/html-templates.md @@ -96,4 +96,4 @@ developers) should be tagged for [translation][]. [helpers]: http://handlebarsjs.com/block_helpers.html [jconditionals]: http://jinja.pocoo.org/docs/2.9/templates/#list-of-control-structures [hconditionals]: http://handlebarsjs.com/block_helpers.html -[translation]: ../translating/translating.md +[translation]: ../translating/translating.html diff --git a/docs/subsystems/html_css.md b/docs/subsystems/html_css.md index 43694f144a..15e2231821 100644 --- a/docs/subsystems/html_css.md +++ b/docs/subsystems/html_css.md @@ -8,7 +8,7 @@ main third-party CSS library. Zulip currently does not use any CSS preprocessors, and is organized into several files. For most pages, the CSS is combined into a single -CSS file by the [static asset pipeline](../subsystems/front-end-build-process.md), +CSS file by the [static asset pipeline](../subsystems/front-end-build-process.html), controlled by the `PIPELINE_CSS` code in `zproject/settings.py`. The CSS files are: diff --git a/docs/subsystems/logging.md b/docs/subsystems/logging.md index e2b3b27964..5b0805074b 100644 --- a/docs/subsystems/logging.md +++ b/docs/subsystems/logging.md @@ -167,7 +167,7 @@ and report to the server the following whenever a message is sent: * Whether the message was locally echoed. * If so, whether there was a disparity between the echoed content and the server-rendered content, which can be used for statistics on how - effective our [local echo system](../subsystems/markdown.md) is. + effective our [local echo system](../subsystems/markdown.html) is. The code is all in `zerver/lib/report.py` and `static/js/sent_messages.js`. diff --git a/docs/subsystems/pointer.md b/docs/subsystems/pointer.md index 8bdf31f731..25a64c594b 100644 --- a/docs/subsystems/pointer.md +++ b/docs/subsystems/pointer.md @@ -80,7 +80,7 @@ browser), Zulip will preserve the state -- what (if any) narrow the user was in, the selected message, and even exact scroll position! For more on the user experience philosophy guiding these decisions, -see [the architectural overview](../overview/architecture-overview.md). +see [the architectural overview](../overview/architecture-overview.html). ## Unread count logic diff --git a/docs/subsystems/realms.md b/docs/subsystems/realms.md index 6d0476d462..b0b13f75a8 100644 --- a/docs/subsystems/realms.md +++ b/docs/subsystems/realms.md @@ -6,7 +6,7 @@ user documentation as an organization (the name "realm" comes from [Kerberos](https://web.mit.edu/kerberos/)). The -[production docs on multiple realms](../production/multiple-organizations.md) +[production docs on multiple realms](../production/multiple-organizations.html) are likely also relevant reading. ## Creating Realms @@ -52,7 +52,7 @@ job. We also recommend upgrading to at least Zulip 1.7, since older Zulip releases had much less nice handling for subdomains. See our -[docs on using subdomains](../production/multiple-organizations.md) for +[docs on using subdomains](../production/multiple-organizations.html) for user-facing documentation on this. ### Working With Subdomains In Development Environment diff --git a/docs/subsystems/schema-migrations.md b/docs/subsystems/schema-migrations.md index b4ab88c70a..831421b193 100644 --- a/docs/subsystems/schema-migrations.md +++ b/docs/subsystems/schema-migrations.md @@ -3,7 +3,7 @@ Zulip uses the [standard Django system for doing schema migrations](https://docs.djangoproject.com/en/1.10/topics/migrations/). There is some example usage in the [new feature -tutorial](../tutorials/new-feature-tutorial.md). +tutorial](../tutorials/new-feature-tutorial.html). This page documents some important issues related to writing schema migrations. @@ -30,7 +30,7 @@ migrations. fix this, you can either run `./tools/renumber-migrations` which renumbers your migration(s) and fixes up the "dependencies" entries in your migration(s), and then rewrite your git history as needed, or you can do it - manually. There is a tutorial [here](migration-renumbering.md) that + manually. There is a tutorial [here](migration-renumbering.html) that walks you though that process. * **Atomicity**. By default, each Django migration is run atomically diff --git a/docs/subsystems/sending-messages.md b/docs/subsystems/sending-messages.md index d7733744c1..1ea2a83ce0 100644 --- a/docs/subsystems/sending-messages.md +++ b/docs/subsystems/sending-messages.md @@ -7,9 +7,9 @@ experience. This document aims to explain conceptually what happens when a message is sent in Zulip, and why that is correct behavior. It assumes the reader is familiar with our -[real-time sync system](../subsystems/events-system.md) for +[real-time sync system](../subsystems/events-system.html) for server-to-client communication and -[new application feature tutorial](../tutorials/new-feature-tutorial.md), +[new application feature tutorial](../tutorials/new-feature-tutorial.html), and we generally don't repeat the content discussed there. ## Message lists @@ -45,7 +45,7 @@ stream, etc.). The backend flow for sending messages is similar in many ways to the process described in our -[new application feature tutorial](../tutorials/new-feature-tutorial.md). +[new application feature tutorial](../tutorials/new-feature-tutorial.html). This section details the ways in which it is different: * There is significant custom code inside the `process_message_event` @@ -57,7 +57,7 @@ number of purposes: computational work inside the Tornado codebase, this logic aims to just do the check for whether a notification should be generated, and then put an event into an appropriate - [queue](../subsystems/queuing.md) to actually send the + [queue](../subsystems/queuing.html) to actually send the message. See `maybe_enqueue_notifications` and related code for this part of the logic. * Splicing user-dependent data (E.g. `flags` such as when the user @@ -73,7 +73,7 @@ number of purposes: * Following our standard naming convention, input validation is done inside the `check_message` function, which is responsible for validating the user can send to the recipient (etc.), - [rendering the markdown](../subsystems/markdown.md), etc. -- + [rendering the markdown](../subsystems/markdown.html), etc. -- basically everything that can fail due to bad user input. * The core `do_send_messages` function (which handles actually sending the message) is one of the most optimized and thus complex parts of @@ -89,7 +89,7 @@ number of purposes: open organizations. * Do all the database queries to fetch relevant data for and then send a `message` event to the - [events system](../subsystems/events-system.md) containing the + [events system](../subsystems/events-system.html) containing the data it will need for the calculations described above. This step adds a lot of complexity, because the events system cannot make queries to the database directly. @@ -114,7 +114,7 @@ library (on the frontend) and `sockjs-tornado` (on the backend). This ends up calling a handler in our Tornado codebase (`zerver/tornado/socket.py`), which immediately puts the request into the `message_sender` queue. -* The `message_sender` [queue processor](../subsystems/queuing.md) +* The `message_sender` [queue processor](../subsystems/queuing.html) reformats the request into a Django `HttpRequest` object with a fake `SOCKET` HTTP method (which is why these requests appear as `SOCKET` in our server logs), calls the Django `get_response` method on that @@ -141,7 +141,7 @@ browser, and then replace it with data from the server when it changes. Zulip aims for a near-perfect local echo experience, which requires is -why our [markdown system](../subsystems/markdown.md) requires both +why our [markdown system](../subsystems/markdown.html) requires both an authoritative (backend) markdown implementation and a secondary (frontend) markdown implementation, the latter used only for the local echo feature. Read our markdown documentation for all the tricky @@ -177,7 +177,7 @@ messages. unique value within that namespace identifying the message. * The `do_send_messages` backend code path includes the `queue_id` and `local_id` in the data it passes to the - [events system](../subsystems/events-system.md). The events + [events system](../subsystems/events-system.html). The events system will extend the `message` event dictionary it delivers to the client containing the `queue_id` with `local_message_id` field, containing the `local_id` that the relevant client used when sending @@ -273,7 +273,7 @@ users. message without including the URL embeds/previews, but it will add a deferred work item into the `embed_links` queue. -* The [queue processor](../subsystems/queuing.md) for the +* The [queue processor](../subsystems/queuing.html) for the `embed_links` queue will fetch the URLs, and then if they return results, rerun the markdown processor and notify clients of the updated message `rendered_content`. @@ -321,7 +321,7 @@ latency was unacceptable: The server backend was introducing a latency of about 1 second per 2000 users subscribed to receive the message. While these delays may not be immediately obvious to users (Zulip, like many other chat applications, -[local echoes](../subsystems/markdown.md) messages that a user sends +[local echoes](../subsystems/markdown.html) messages that a user sends as soon as the user hits “send”), latency beyond a second or two significantly impacts the feeling of interactivity in a chat experience (i.e. it feels like everyone takes a long time to reply to diff --git a/docs/subsystems/settings.md b/docs/subsystems/settings.md index cb2ddd71be..1ee0b17ee7 100644 --- a/docs/subsystems/settings.md +++ b/docs/subsystems/settings.md @@ -143,4 +143,4 @@ replaced with realm settings: server, and in the realm settings indicating which methods the realm administrator wants to allow users to login with. -[doc-newfeat]: ../tutorials/new-feature-tutorial.md +[doc-newfeat]: ../tutorials/new-feature-tutorial.html diff --git a/docs/subsystems/thumbnailing.md b/docs/subsystems/thumbnailing.md index 169ab001ff..1b2ca1c390 100644 --- a/docs/subsystems/thumbnailing.md +++ b/docs/subsystems/thumbnailing.md @@ -69,7 +69,7 @@ The raw Thumbor URLs are ugly, and regardless, have the property that we might want to change them over time (a classic case is if one moves the thumbor installation to be hosted by a different server). In order to avoid encoding these into Zulip messages, we encode in the -[HTML rendered message content](../subsystems/markdown.md) URLs of +[HTML rendered message content](../subsystems/markdown.html) URLs of the form `/thumbnail/?url=https://example.com/image.png&size=thumbnail` as the `src` in our image tags, and that URL serves a diff --git a/docs/subsystems/typing-indicators.md b/docs/subsystems/typing-indicators.md index 9fe1b7944d..2b9686fecf 100644 --- a/docs/subsystems/typing-indicators.md +++ b/docs/subsystems/typing-indicators.md @@ -69,7 +69,7 @@ how long they pause to think, and how frequently they get interrupted. The server piece of typing notificiations is currently pretty straightforward, since we take advantage of Zulip's -[events system](../subsystems/events-system.md). +[events system](../subsystems/events-system.html). We deliberately designed the server piece to be stateless, which minimizes the possibility of backend bugs and gives clients diff --git a/docs/testing/continuous-integration.md b/docs/testing/continuous-integration.md index 81e21537d9..c8b53f8161 100644 --- a/docs/testing/continuous-integration.md +++ b/docs/testing/continuous-integration.md @@ -45,7 +45,7 @@ CI. Make sure that you have uploaded your SSH keys to GitHub: CircleCI uses those SSH keys for authentication. [docker-hub]: https://hub.docker.com/ -[circleci-setup]: ../git/cloning.md#step-3-configure-continuous-integration-for-your-fork +[circleci-setup]: ../git/cloning.html#step-3-configure-continuous-integration-for-your-fork [circleci-ssh]: https://circleci.com/docs/2.0/ssh-access-jobs/ ### Suites @@ -177,7 +177,7 @@ our configuration, you'll want to look at these closely. that every remote branch you push will be tested, which can be helpful when debugging something complicated. -[travis-fork]: ../git/cloning.md#step-3-configure-continuous-integration-for-your-fork +[travis-fork]: ../git/cloning.html#step-3-configure-continuous-integration-for-your-fork ### Performance optimizations diff --git a/docs/testing/linters.md b/docs/testing/linters.md index 1302aef1fb..36f6065a35 100644 --- a/docs/testing/linters.md +++ b/docs/testing/linters.md @@ -11,7 +11,7 @@ but for other files, we are quite thorough about checking semantic correctness. Obviously, a large reason for linting code is to enforce the [Zulip -coding standards](../contributing/code-style.md). But we also use the linters to +coding standards](../contributing/code-style.html). But we also use the linters to prevent common coding errors. We borrow some open source tools for much of our linting, and the links @@ -63,7 +63,7 @@ the other lint checks. ## General considerations -Once you have read the [Zulip coding guidelines](../contributing/code-style.md), you can +Once you have read the [Zulip coding guidelines](../contributing/code-style.html), you can be pretty confident that 99% of the code that you write will pass through the linters fine, as long as you are thorough about keeping your code clean. And, of course, for minor oversights, `lint` is your friend, not your foe. @@ -75,7 +75,7 @@ extreme cases, but often it can be a simple matter of writing your code in a slightly different style to appease the linter. If you have problems getting something to lint, you can submit an unfinished PR and ask the reviewer to help you work through the lint problem, or you -can find other people in the [Zulip Community](../contributing/chat-zulip-org.md) +can find other people in the [Zulip Community](../contributing/chat-zulip-org.html) to help you. Also, bear in mind that 100% of the lint code is open source, so if you @@ -83,7 +83,7 @@ find limitations in either the Zulip home-grown stuff or our third party tools, feedback will be highly appreciated. Finally, one way to clean up your code is to thoroughly exercise it -with tests. The [Zulip test documentation](../testing/testing.md) +with tests. The [Zulip test documentation](../testing/testing.html) describes our test system in detail. ## Lint checks @@ -100,7 +100,7 @@ following checks: - Check CSS for parsability and formatting. - Check JavaScript code for addClass calls. - Running `mypy` to check static types in Python code. Our - [documentation on using mypy](../testing/mypy.md) covers mypy in + [documentation on using mypy](../testing/mypy.html) covers mypy in more detail. The rest of this document pertains to the checks that occur in `./tools/lint`. diff --git a/docs/testing/testing-with-django.md b/docs/testing/testing-with-django.md index a3f0ea3c34..3eb40bde3a 100644 --- a/docs/testing/testing-with-django.md +++ b/docs/testing/testing-with-django.md @@ -262,7 +262,7 @@ from Django as well as our own custom helpers. Here is an example: self.assertTrue(rate_limit_mock.called) -Follow [this link](../subsystems/settings.md#testing-non-default-settings) for more +Follow [this link](../subsystems/settings.html#testing-non-default-settings) for more information on the "settings" context manager. A common use is to prevent a call to a third-party service from using @@ -337,7 +337,7 @@ We use mocks and stubs for all the typical reasons: - to stub out calls to third-party services - to make it so that you can [run the Zulip tests on the airplane without wifi][no-internet] -[no-internet]: testing.md#internet-access-inside-test-suites +[no-internet]: testing.html#internet-access-inside-test-suites A detailed description of mocks, along with useful coded snippets, can be found in the section [Testing with mocks](#testing-with-mocks). @@ -375,7 +375,7 @@ the same data structure as performing an action that generates said event. This is a bit esoteric, but if you read the tests, you will see some of the patterns. You can also learn more about our event system in the -[new feature tutorial](../tutorials/new-feature-tutorial.md#handle-database-interactions). +[new feature tutorial](../tutorials/new-feature-tutorial.html#handle-database-interactions). ### Negative tests diff --git a/docs/testing/testing.md b/docs/testing/testing.md index 42b3bf4b90..2f44cf1f13 100644 --- a/docs/testing/testing.md +++ b/docs/testing/testing.md @@ -5,18 +5,18 @@ Zulip has a full test suite that includes many components. The most important components are documented in depth in their own sections: -- [Django](../testing/testing-with-django.md): backend Python tests -- [Casper](../testing/testing-with-casper.md): end-to-end UI tests -- [Node](../testing/testing-with-node.md): unit tests for JS front end code -- [Linters](../testing/linters.md): Our parallel linter suite -- [CI details](continuous-integration.md): How all of these run in CI +- [Django](../testing/testing-with-django.html): backend Python tests +- [Casper](../testing/testing-with-casper.html): end-to-end UI tests +- [Node](../testing/testing-with-node.html): unit tests for JS front end code +- [Linters](../testing/linters.html): Our parallel linter suite +- [CI details](continuous-integration.html): How all of these run in CI - [Other test suites](#other-test-suites): Our various smaller test suites. This document covers more general testing issues, such as how to run the entire test suite, how to troubleshoot database issues, how to manually test the front end, etc. -We also document [how to manually test the app](manual-testing.md). +We also document [how to manually test the app](manual-testing.html). ## Running tests @@ -60,7 +60,7 @@ Zulip also has about a dozen smaller tests suites: - `tools/test-migrations`: Checks whether the `zerver/migrations` migration content the models defined in `zerver/models.py`. See our - [schema migration documentation](../subsystems/schema-migrations.md) + [schema migration documentation](../subsystems/schema-migrations.html) for details on how to do database migrations correctly. - `tools/test-documentation`: Checks for broken links in this ReadTheDocs documentation site. @@ -72,7 +72,7 @@ Zulip also has about a dozen smaller tests suites: - `test-locked-requirements`: Verifies that developers didn't forget to run `tools/update-locked-requirements` after modifying `requirements/*.in`. See - [our dependency documentation](../subsystems/dependencies.md) for + [our dependency documentation](../subsystems/dependencies.html) for details on the system this is verifying. - `tools/check-capitalization`: Checks whether translated strings (aka user-facing strings) correctly follow Zulip's capitalization @@ -181,7 +181,7 @@ This is easy to do using test fixtures (a fancy word for fixed data used in tests) and the `mock.patch` function to specify what HTTP response should be used by the tests for every outgoing HTTP (or other network) request. Consult -[our guide on mocking](../testing/testing-with-django.md#zulip-mocking-practices) to +[our guide on mocking](../testing/testing-with-django.html#zulip-mocking-practices) to learn how to mock network requests easily; there are also a number of examples throughout the codebase. @@ -246,7 +246,7 @@ it. On Ubuntu: This section is about troubleshooting your local development environment. -There is a [separate manual testing doc](manual-testing.md) that +There is a [separate manual testing doc](manual-testing.html) that enumerates things you can test as part of manual QA. ### Clearing the development database diff --git a/docs/translating/translating.md b/docs/translating/translating.md index 7a5c522fa9..3afb665253 100644 --- a/docs/translating/translating.md +++ b/docs/translating/translating.md @@ -8,7 +8,7 @@ translating Zulip would be greatly appreciated! If you're interested in contributing translations to Zulip, please join [#translation](https://chat.zulip.org/#narrow/stream/58-translation) -in the [Zulip development community server](../contributing/chat-zulip-org.md), and +in the [Zulip development community server](../contributing/chat-zulip-org.html), and say hello. And please join the [Zulip project on Transifex](https://www.transifex.com/zulip/zulip/) and ask to join any languages you'd like to contribute to (or add new @@ -27,13 +27,13 @@ We are building a collection of translation style guides for Zulip, giving guidance on how Zulip should be translated into specific languages (e.g. what word to translate words like "home" to): -* [Chinese](chinese.md) -* [French](french.md) -* [German](german.md) -* [Hindi](hindi.md) -* [Polish](polish.md) -* [Russian](russian.md) -* [Spanish](spanish.md) +* [Chinese](chinese.html) +* [French](french.html) +* [German](german.html) +* [Hindi](hindi.html) +* [Polish](polish.html) +* [Russian](russian.html) +* [Spanish](spanish.html) A great first step when getting started translating Zulip into a new language is to write a style guide, since it greatly increases the @@ -133,7 +133,7 @@ Some useful tips for your translating journey: - When in doubt, ask for context in [#translation](https://chat.zulip.org/#narrow/stream/58-translation) in - the [Zulip development community server](../contributing/chat-zulip-org.md). + the [Zulip development community server](../contributing/chat-zulip-org.html). - If there are multiple possible translations for a term, search for it in the *Concordance* tool (the button with a magnet in the top right corner). @@ -150,7 +150,7 @@ Some useful tips for your translating journey: ## Testing translations This section assumes you have a -[Zulip development environment](../development/overview.md) set up. +[Zulip development environment](../development/overview.html) set up. First of all, download the updated resource files from Transifex using the `tx pull -a --mode=developer` command (it will require some @@ -394,4 +394,4 @@ organizations from the command line. [resource]: https://www.i18next.com/add-or-load-translations.html [Transifex]: https://transifex.com [transifexrc]: https://docs.transifex.com/client/client-configuration#transifexrc -[html-templates]: ../subsystems/html-templates.md +[html-templates]: ../subsystems/html-templates.html diff --git a/docs/tutorials/documenting-api-endpoints.md b/docs/tutorials/documenting-api-endpoints.md index bb6abe2afd..cdfae7f6a8 100644 --- a/docs/tutorials/documenting-api-endpoints.md +++ b/docs/tutorials/documenting-api-endpoints.md @@ -10,7 +10,7 @@ file in `templates/zerver/help/include/rest-endpoints.md` , so that it appears in the index in the left sidebar on the `/api` page. The markdown framework is the same one used by the -[user docs](../subsystems/user-docs.md), which supports macros and +[user docs](../subsystems/user-docs.html), which supports macros and various other features, though we don't use them heavily here. If you look at the documentation for existing endpoints (see a live diff --git a/docs/tutorials/life-of-a-request.md b/docs/tutorials/life-of-a-request.md index c0d11143be..aa3997b8b0 100644 --- a/docs/tutorials/life-of-a-request.md +++ b/docs/tutorials/life-of-a-request.md @@ -39,7 +39,7 @@ location /static/ { ## Nginx routes other requests [between django and tornado][tornado-django] -[tornado-django]: ../overview/architecture-overview.md?highlight=tornado#django-and-tornado +[tornado-django]: ../overview/architecture-overview.html?highlight=tornado#django-and-tornado All our connected clients hold open long-polling connections so that they can receive events (messages, presence notifications, and so on) in @@ -58,7 +58,7 @@ There are various [urls.py](https://docs.djangoproject.com/en/1.8/topics/http/urls/) files throughout the server codebase, which are covered in more detail in -[the directory structure doc](../overview/directory-structure.md). +[the directory structure doc](../overview/directory-structure.html). The main Zulip Django app is `zerver`. The routes are found in ``` @@ -188,7 +188,7 @@ find the correct view to show: ## The view will authorize the user, extract request variables, and validate them -This is covered in good detail in the [writing views doc](writing-views.md). +This is covered in good detail in the [writing views doc](writing-views.html). ## Results are given as JSON diff --git a/docs/tutorials/new-feature-tutorial.md b/docs/tutorials/new-feature-tutorial.md index 82f0cc6b13..d77936a6fd 100644 --- a/docs/tutorials/new-feature-tutorial.md +++ b/docs/tutorials/new-feature-tutorial.md @@ -8,22 +8,22 @@ data system in real-time to all browsers the user may have open. As you read this, you may find you need to learn about Zulip's real-time push system; the -[real-time push and events](../subsystems/events-system.md) +[real-time push and events](../subsystems/events-system.html) documentation has a detailed explanation of how everything works. You may also find it beneficial to read Zulip's -[architectural overview](../overview/architecture-overview.md). +[architectural overview](../overview/architecture-overview.html). Zulip is a web application built using the [Django framework](https://www.djangoproject.com/), and some of the processes listed in this tutorial, such as database migrations and tests, use Django's tooling. -Zulip's [directory structure](../overview/directory-structure.md) +Zulip's [directory structure](../overview/directory-structure.html) will also be helpful to review when creating a new feature. Many aspects of the structure will be familiar to Django developers. Visit [Django's documentation](https://docs.djangoproject.com/en/1.11/#index-first-steps) for more information about how Django projects are typically organized. And finally, the -[message sending](../subsystems/sending-messages.md) documentation on +[message sending](../subsystems/sending-messages.html) documentation on the additional complexity involved in sending messages. ## General Process @@ -74,13 +74,13 @@ following commands: ``` You can read our -[database migration documentation](../subsystems/schema-migrations.md) +[database migration documentation](../subsystems/schema-migrations.html) to learn more about creating and applying database migrations. **Test your changes:** Once you've run the migration, flush memcached on your development server (`./scripts/setup/flush-memcached`) and then [restart the development server]( -../development/remote.md?highlight=tools%2Frun-dev.py#running-the-development-server) +../development/remote.html?highlight=tools%2Frun-dev.py#running-the-development-server) to avoid interacting with cached objects. ### Backend changes @@ -130,7 +130,7 @@ precompiled as part of the build/deploy process. Zulip is fully internationalized, so when writing both HTML templates or JavaScript code that generates user-facing strings, be sure to -[tag those strings for translation](../translating/translating.md). +[tag those strings for translation](../translating/translating.html). **Testing:** There are two types of frontend tests: node-based unit tests and blackbox end-to-end tests. The blackbox tests are run in a @@ -138,14 +138,14 @@ headless browser using Casper.js and are located in `frontend_tests/casper_tests/`. The unit tests use Node's `assert` module are located in `frontend_tests/node_tests/`. For more information on writing and running tests, see the -[testing documentation](../testing/testing.md). +[testing documentation](../testing/testing.html). ### Documentation changes After implementing the new feature, you should document it and update any existing documentation that might be relevant to the new feature. For more information on the kinds of -documentation Zulip has, see [Documentation](../subsystems/documentation.md). +documentation Zulip has, see [Documentation](../subsystems/documentation.html). ## Example Feature @@ -247,7 +247,7 @@ Running migrations: Once you've run the migration, restart memcached on your development server (`/etc/init.d/memcached restart`) and then [restart the development server]( -../development/remote.md?highlight=tools%2Frun-dev.py#running-the-development-server) +../development/remote.html?highlight=tools%2Frun-dev.py#running-the-development-server) to avoid interacting with cached objects. ### Handle database interactions @@ -266,7 +266,7 @@ initial state. Subsequently, clients subscribe to "events," which can For the backend piece, we will need our action to make a call to `send_event` to send the event to clients that are active. We will also need to modify `fetch_initial_state_data` so that the new field is passed to -clients. See [our event system docs](../subsystems/events-system.md) for all the +clients. See [our event system docs](../subsystems/events-system.html) for all the gory details. Anyway, getting back to implementation details... @@ -475,7 +475,7 @@ controls the feature it is supposed to control, however (e.g. for this example feature, whether sending a message without a topic fails with the setting enabled). -Visit Zulip's [Django testing](../testing/testing-with-django.md) +Visit Zulip's [Django testing](../testing/testing-with-django.html) documentation to learn more about the backend testing framework. ### Update the front end @@ -636,8 +636,8 @@ Here are few important cases you should consider when testing your changes: ### Front End Tests A great next step is to write front end tests. There are two types of -frontend tests: [node-based unit tests](../testing/testing-with-node.md) and -[Casper end-to-end tests](../testing/testing-with-casper.md). +frontend tests: [node-based unit tests](../testing/testing-with-node.html) and +[Casper end-to-end tests](../testing/testing-with-casper.html). At the minimum, if you created a new function to update UI in `settings_org.js`, you will need to mock that function in @@ -667,4 +667,4 @@ At the very least, this will involve adding (or modifying) a Markdown file documenting the feature to `templates/zerver/help/` in the main Zulip server repository, where the source for Zulip's user documentation is stored. For information on writing user documentation, see -[Zulip's general user guide documentation](../subsystems/user-docs.md). +[Zulip's general user guide documentation](../subsystems/user-docs.html). diff --git a/docs/tutorials/reading-list.md b/docs/tutorials/reading-list.md index 350c34d723..0372448454 100644 --- a/docs/tutorials/reading-list.md +++ b/docs/tutorials/reading-list.md @@ -144,7 +144,7 @@ Some titles have been shortened for organizational purposes. You may want to take a look first at our [Git and GitHub guide][]. -[Git and GitHub guide]: ../git/index.md +[Git and GitHub guide]: ../git/index.html ## Computer Science/Algorithms diff --git a/docs/tutorials/shell-tips.md b/docs/tutorials/shell-tips.md index 63bc697ee6..358bcfeb88 100644 --- a/docs/tutorials/shell-tips.md +++ b/docs/tutorials/shell-tips.md @@ -339,7 +339,7 @@ At first it seems like magic, but once you get the basic concepts you find it extremely useful and even easy to use (at least the 99% of the time). To learn more about how to use it, read -[our docs](../git/index.md) on Git and +[our docs](../git/index.html) on Git and Github. [This cheatsheet][git-cheat-detailed] @@ -347,4 +347,4 @@ will be useful in your journey, as well. ![Git - XKCD 1597](https://imgs.xkcd.com/comics/git.png) -[git-cheat-detailed]: ../git/cheat-sheet.md#detailed-cheat-sheet +[git-cheat-detailed]: ../git/cheat-sheet.html#detailed-cheat-sheet diff --git a/docs/tutorials/writing-views.md b/docs/tutorials/writing-views.md index 1d0cde53df..777e2658be 100644 --- a/docs/tutorials/writing-views.md +++ b/docs/tutorials/writing-views.md @@ -3,15 +3,15 @@ ## What this covers This page documents how views work in Zulip. You may want to read the -[new feature tutorial](../tutorials/new-feature-tutorial.md) +[new feature tutorial](../tutorials/new-feature-tutorial.html) and treat this as a reference. If you have experience with Django, much of this will be familiar, but you may want to read about how REST requests are dispatched, and how request authentication works. -This document supplements the [new feature tutorial](../tutorials/new-feature-tutorial.md) -and the [testing](../testing/testing.md) +This document supplements the [new feature tutorial](../tutorials/new-feature-tutorial.html) +and the [testing](../testing/testing.html) documentation. ## What is a view? @@ -37,7 +37,7 @@ integrations). The format of the URL patterns in Django is [documented here](https://docs.djangoproject.com/en/1.8/topics/http/urls/), and the Zulip specific details for these are discussed in detail in the -[life of a request doc](life-of-a-request.md#options). +[life of a request doc](life-of-a-request.html#options). We have two Zulip-specific conventions we use for internationalization and for our REST API, respectively. @@ -366,4 +366,4 @@ def api_pagerduty_webhook(request, user_profile, ``` `request.client` will be the result of `get_client("ZulipPagerDutyWebhook")` in this example and it will be passed to `check_send_stream_message`. For -more information, see [Clients in Zulip](../subsystems/client.md). +more information, see [Clients in Zulip](../subsystems/client.html).