mirror of https://github.com/zulip/zulip.git
Revert "docs: Update .html links to .md."
This doesn't work without the CommonMark upgrade.
This reverts commit c87893feea
.
This commit is contained in:
parent
02c92e55a2
commit
abc7a00d35
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -54,4 +54,4 @@ tools/fetch-pull-request <PR-number>
|
|||
```
|
||||
|
||||
[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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 <commit>` 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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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).
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]:
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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**
|
||||
|
||||
|
|
|
@ -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!
|
||||
|
|
|
@ -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 <https://zulipchat.com>.
|
||||
|
||||
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
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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).
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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`.
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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`.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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).
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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).
|
||||
|
|
Loading…
Reference in New Issue