mirror of https://github.com/zulip/zulip.git
docs: Fix various capitalization errors.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
This commit is contained in:
parent
768f9f93cd
commit
c155403884
|
@ -14,7 +14,7 @@ This isn't an exhaustive list of things that you can't do. Rather, take it
|
||||||
in the spirit in which it's intended --- a guide to make it easier to enrich
|
in the spirit in which it's intended --- a guide to make it easier to enrich
|
||||||
all of us and the technical communities in which we participate.
|
all of us and the technical communities in which we participate.
|
||||||
|
|
||||||
## Expected Behavior
|
## Expected behavior
|
||||||
|
|
||||||
The following behaviors are expected and requested of all community members:
|
The following behaviors are expected and requested of all community members:
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ The following behaviors are expected and requested of all community members:
|
||||||
* Community event venues may be shared with members of the public; be
|
* Community event venues may be shared with members of the public; be
|
||||||
respectful to all patrons of these locations.
|
respectful to all patrons of these locations.
|
||||||
|
|
||||||
## Unacceptable Behavior
|
## Unacceptable behavior
|
||||||
|
|
||||||
The following behaviors are considered harassment and are unacceptable
|
The following behaviors are considered harassment and are unacceptable
|
||||||
within the Zulip community:
|
within the Zulip community:
|
||||||
|
@ -53,7 +53,7 @@ within the Zulip community:
|
||||||
presentations.
|
presentations.
|
||||||
* Advocating for, or encouraging, any of the behaviors above.
|
* Advocating for, or encouraging, any of the behaviors above.
|
||||||
|
|
||||||
## Reporting and Enforcement
|
## Reporting and enforcement
|
||||||
|
|
||||||
Harassment and other code of conduct violations reduce the value of the
|
Harassment and other code of conduct violations reduce the value of the
|
||||||
community for everyone. If someone makes you or anyone else feel unsafe or
|
community for everyone. If someone makes you or anyone else feel unsafe or
|
||||||
|
@ -95,7 +95,7 @@ behavior occurring outside the scope of community activities when such
|
||||||
behavior has the potential to adversely affect the safety and well-being of
|
behavior has the potential to adversely affect the safety and well-being of
|
||||||
community members.
|
community members.
|
||||||
|
|
||||||
## License and Attribution
|
## License and attribution
|
||||||
|
|
||||||
This Code of Conduct is adapted from the
|
This Code of Conduct is adapted from the
|
||||||
[Citizen Code of Conduct](http://citizencodeofconduct.org/) and the
|
[Citizen Code of Conduct](http://citizencodeofconduct.org/) and the
|
||||||
|
|
|
@ -299,7 +299,7 @@ for ZSoC, we'll contact you when the GSoC results are announced.
|
||||||
[gsoc-guide]: https://zulip.readthedocs.io/en/latest/overview/gsoc-ideas.html
|
[gsoc-guide]: https://zulip.readthedocs.io/en/latest/overview/gsoc-ideas.html
|
||||||
[gsoc-faq]: https://developers.google.com/open-source/gsoc/faq
|
[gsoc-faq]: https://developers.google.com/open-source/gsoc/faq
|
||||||
|
|
||||||
## Zulip Outreach
|
## Zulip outreach
|
||||||
|
|
||||||
**Upvoting Zulip**. Upvotes and reviews make a big difference in the public
|
**Upvoting Zulip**. Upvotes and reviews make a big difference in the public
|
||||||
perception of projects like Zulip. We've collected a few sites below
|
perception of projects like Zulip. We've collected a few sites below
|
||||||
|
|
|
@ -71,7 +71,7 @@ You might be interested in:
|
||||||
like Google Summer of Code.
|
like Google Summer of Code.
|
||||||
|
|
||||||
You may also be interested in reading our [blog](https://blog.zulip.org/) or
|
You may also be interested in reading our [blog](https://blog.zulip.org/) or
|
||||||
following us on [twitter](https://twitter.com/zulip).
|
following us on [Twitter](https://twitter.com/zulip).
|
||||||
Zulip is distributed under the
|
Zulip is distributed under the
|
||||||
[Apache 2.0](https://github.com/zulip/zulip/blob/master/LICENSE) license.
|
[Apache 2.0](https://github.com/zulip/zulip/blob/master/LICENSE) license.
|
||||||
|
|
||||||
|
|
|
@ -53,7 +53,7 @@ sometimes report false positives as well. They are a useful aid in quickly
|
||||||
identifying potential problems and checking for regressions, but their
|
identifying potential problems and checking for regressions, but their
|
||||||
recommendations should not be blindly obeyed.
|
recommendations should not be blindly obeyed.
|
||||||
|
|
||||||
## GitHub Issues
|
## GitHub issues
|
||||||
|
|
||||||
Problems with Zulip's accessibility should be reported as
|
Problems with Zulip's accessibility should be reported as
|
||||||
[GitHub issues](https://github.com/zulip/zulip/issues) with the "accessibility"
|
[GitHub issues](https://github.com/zulip/zulip/issues) with the "accessibility"
|
||||||
|
@ -65,7 +65,7 @@ comment on the issue:
|
||||||
If you want to help make Zulip more accessible, here is a list of the
|
If you want to help make Zulip more accessible, here is a list of the
|
||||||
[currently open accessibility issues][accessibility-issues].
|
[currently open accessibility issues][accessibility-issues].
|
||||||
|
|
||||||
## Additional Resources
|
## Additional resources
|
||||||
|
|
||||||
For more information about making Zulip accessible to as many users as
|
For more information about making Zulip accessible to as many users as
|
||||||
possible, the following resources may be useful.
|
possible, the following resources may be useful.
|
||||||
|
|
|
@ -183,7 +183,7 @@ feel free to do that in a new commit, then push your branch to GitHub
|
||||||
and mention the branch in a comment on the pull request. That'll save
|
and mention the branch in a comment on the pull request. That'll save
|
||||||
the maintainer time and get the PR merged quicker.
|
the maintainer time and get the PR merged quicker.
|
||||||
|
|
||||||
## Additional Resources
|
## Additional resources
|
||||||
|
|
||||||
We also strongly recommend reviewers to go through the following resources.
|
We also strongly recommend reviewers to go through the following resources.
|
||||||
|
|
||||||
|
@ -194,7 +194,7 @@ We also strongly recommend reviewers to go through the following resources.
|
||||||
* [Code Review - A consolidation of advice and stuff from the
|
* [Code Review - A consolidation of advice and stuff from the
|
||||||
sinternet](https://gist.github.com/porterjamesj/002fb27dd70df003646df46f15e898de)
|
sinternet](https://gist.github.com/porterjamesj/002fb27dd70df003646df46f15e898de)
|
||||||
article by James J. Porter
|
article by James J. Porter
|
||||||
* [Zulip Code of Conduct](../code-of-conduct.md)
|
* [Zulip code of conduct](../code-of-conduct.md)
|
||||||
|
|
||||||
[code-style]: ../contributing/code-style.md
|
[code-style]: ../contributing/code-style.md
|
||||||
[commit-messages]: ../contributing/version-control.html#commit-messages
|
[commit-messages]: ../contributing/version-control.html#commit-messages
|
||||||
|
|
|
@ -77,7 +77,7 @@ tools in the Zulip development environment). See
|
||||||
for details on our various existing documentation systems.
|
for details on our various existing documentation systems.
|
||||||
|
|
||||||
In part due to past work by a technical writer, Zulip has a
|
In part due to past work by a technical writer, Zulip has a
|
||||||
well-documented and easy to setup development environment for a
|
well-documented and easy-to-set-up development environment for a
|
||||||
project of its scope. Use
|
project of its scope. Use
|
||||||
[our first-time Zulip developer guide](../overview/contributing.html#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. If you have any
|
to get your Zulip development environment set up. If you have any
|
||||||
|
@ -202,12 +202,12 @@ proposal. It's also fine for you to come up with your own project
|
||||||
ideas.
|
ideas.
|
||||||
|
|
||||||
For many of our projects, an important skill to develop is a good
|
For many 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.md) in full to
|
||||||
learn how to use it well. Of particular importance is mastering using
|
learn how to use it well. Of particular importance is mastering using
|
||||||
Git rebase so that you can construct commits that are readable,
|
Git rebase so that you can construct commits that are readable,
|
||||||
are clearly correct and that explain why they are correct.
|
are clearly correct and that explain why they are correct.
|
||||||
|
|
||||||
**Project name**: REST API Documentation
|
**Project name**: REST API documentation
|
||||||
|
|
||||||
Fill in the gaps in Zulip's
|
Fill in the gaps in Zulip's
|
||||||
[REST API documentation](https://zulip.com/api). Zulip has a
|
[REST API documentation](https://zulip.com/api). Zulip has a
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#######################
|
#######################
|
||||||
Code Contribution Guide
|
Code contribution guide
|
||||||
#######################
|
#######################
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Version control
|
# Version control
|
||||||
|
|
||||||
## Commit Discipline
|
## Commit discipline
|
||||||
|
|
||||||
We follow the Git project's own commit discipline practice of "Each
|
We follow the Git project's own commit discipline practice of "Each
|
||||||
commit is a minimal coherent idea". This discipline takes a bit of work,
|
commit is a minimal coherent idea". This discipline takes a bit of work,
|
||||||
|
@ -83,7 +83,7 @@ you need to do a refactoring partway through writing the feature. When that
|
||||||
happens, we recommend you stash your partial feature, do the refactoring,
|
happens, we recommend you stash your partial feature, do the refactoring,
|
||||||
commit it, and then unstash and finish implementing your feature.
|
commit it, and then unstash and finish implementing your feature.
|
||||||
|
|
||||||
## Commit Messages
|
## Commit messages
|
||||||
|
|
||||||
First, check out
|
First, check out
|
||||||
[these](https://github.com/zulip/zulip/commit/4869e1b0b2bc6d56fcf44b7d0e36ca20f45d0521)
|
[these](https://github.com/zulip/zulip/commit/4869e1b0b2bc6d56fcf44b7d0e36ca20f45d0521)
|
||||||
|
|
|
@ -24,7 +24,7 @@ lower-case naming convention for that file.
|
||||||
Below, we document the procedure for each of the major authentication
|
Below, we document the procedure for each of the major authentication
|
||||||
methods supported by Zulip.
|
methods supported by Zulip.
|
||||||
|
|
||||||
### Email and Password
|
### Email and password
|
||||||
|
|
||||||
Zulip's default EmailAuthBackend authenticates users by verifying
|
Zulip's default EmailAuthBackend authenticates users by verifying
|
||||||
control over their email address, and then allowing them to set a
|
control over their email address, and then allowing them to set a
|
||||||
|
@ -204,7 +204,7 @@ exactly what data is being used in the test without looking at other
|
||||||
resources. It also gives us more freedom to edit the development
|
resources. It also gives us more freedom to edit the development
|
||||||
environment directory without worrying about tests.
|
environment directory without worrying about tests.
|
||||||
|
|
||||||
## Two Factor Authentication
|
## Two factor authentication
|
||||||
|
|
||||||
Zulip uses [django-two-factor-auth][0] as a beta 2FA integration.
|
Zulip uses [django-two-factor-auth][0] as a beta 2FA integration.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#######################
|
#######################
|
||||||
Development Environment
|
Development environment
|
||||||
#######################
|
#######################
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
@ -7,7 +7,7 @@ Development Environment
|
||||||
|
|
||||||
Development environment installation <overview>
|
Development environment installation <overview>
|
||||||
Recommended setup (Vagrant) <setup-vagrant>
|
Recommended setup (Vagrant) <setup-vagrant>
|
||||||
Advanced Setup (non-Vagrant) <setup-advanced>
|
Advanced setup (non-Vagrant) <setup-advanced>
|
||||||
Using the development environment <using>
|
Using the development environment <using>
|
||||||
Developing remotely <remote>
|
Developing remotely <remote>
|
||||||
Authentication in the development environment <authentication>
|
Authentication in the development environment <authentication>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Advanced Setup (non-Vagrant)
|
# Advanced setup (non-Vagrant)
|
||||||
|
|
||||||
Contents:
|
Contents:
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ on using the Zulip development
|
||||||
environment](../development/setup-vagrant.html#step-4-developing),
|
environment](../development/setup-vagrant.html#step-4-developing),
|
||||||
ignoring the parts about `vagrant` (since you're not using it).
|
ignoring the parts about `vagrant` (since you're not using it).
|
||||||
|
|
||||||
## Installing directly on Windows 10 (Experimental)
|
## Installing directly on Windows 10 (experimental)
|
||||||
|
|
||||||
We will be using Microsoft's new feature [WSL
|
We will be using Microsoft's new feature [WSL
|
||||||
2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-about) for
|
2](https://docs.microsoft.com/en-us/windows/wsl/wsl2-about) for
|
||||||
|
|
|
@ -12,18 +12,18 @@ all related services will run.
|
||||||
Contents:
|
Contents:
|
||||||
* [Requirements](#requirements)
|
* [Requirements](#requirements)
|
||||||
* [Step 0: Set up Git & GitHub](#step-0-set-up-git-github)
|
* [Step 0: Set up Git & GitHub](#step-0-set-up-git-github)
|
||||||
* [Step 1: Install Prerequisites](#step-1-install-prerequisites)
|
* [Step 1: Install prerequisites](#step-1-install-prerequisites)
|
||||||
* [Step 2: Get Zulip code](#step-2-get-zulip-code)
|
* [Step 2: Get Zulip code](#step-2-get-zulip-code)
|
||||||
* [Step 3: Start the development environment](#step-3-start-the-development-environment)
|
* [Step 3: Start the development environment](#step-3-start-the-development-environment)
|
||||||
* [Step 4: Developing](#step-4-developing)
|
* [Step 4: Developing](#step-4-developing)
|
||||||
* [Troubleshooting and Common Errors](#troubleshooting-and-common-errors)
|
* [Troubleshooting and common errors](#troubleshooting-and-common-errors)
|
||||||
* [Specifying an Ubuntu mirror](#specifying-an-ubuntu-mirror)
|
* [Specifying an Ubuntu mirror](#specifying-an-ubuntu-mirror)
|
||||||
* [Specifying a proxy](#specifying-a-proxy)
|
* [Specifying a proxy](#specifying-a-proxy)
|
||||||
* [Customizing CPU and RAM allocation](#customizing-cpu-and-ram-allocation)
|
* [Customizing CPU and RAM allocation](#customizing-cpu-and-ram-allocation)
|
||||||
|
|
||||||
**If you encounter errors installing the Zulip development
|
**If you encounter errors installing the Zulip development
|
||||||
environment,** check [Troubleshooting and Common
|
environment,** check [troubleshooting and common
|
||||||
Errors](#troubleshooting-and-common-errors). If that doesn't help,
|
errors](#troubleshooting-and-common-errors). If that doesn't help,
|
||||||
please visit [#provision
|
please visit [#provision
|
||||||
help](https://chat.zulip.org/#narrow/stream/21-provision-help) in the
|
help](https://chat.zulip.org/#narrow/stream/21-provision-help) in the
|
||||||
[Zulip development community
|
[Zulip development community
|
||||||
|
@ -63,13 +63,13 @@ docs.
|
||||||
You can skip this step if you already have Git, GitHub, and SSH access
|
You can skip this step if you already have Git, GitHub, and SSH access
|
||||||
to GitHub working on your machine.
|
to GitHub working on your machine.
|
||||||
|
|
||||||
Follow our [Git Guide][set-up-git] in order to install Git, set up a
|
Follow our [Git guide][set-up-git] in order to install Git, set up a
|
||||||
GitHub account, create an SSH key to access code on GitHub
|
GitHub account, create an SSH key to access code on GitHub
|
||||||
efficiently, etc. Be sure to create an ssh key and add it to your
|
efficiently, etc. Be sure to create an ssh key and add it to your
|
||||||
GitHub account using
|
GitHub account using
|
||||||
[these instructions](https://help.github.com/en/articles/generating-an-ssh-key).
|
[these instructions](https://help.github.com/en/articles/generating-an-ssh-key).
|
||||||
|
|
||||||
### Step 1: Install Prerequisites
|
### Step 1: Install prerequisites
|
||||||
|
|
||||||
Jump to:
|
Jump to:
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ Jump to:
|
||||||
Fusion][vmware-fusion-dl] with the [VMWare Fusion Vagrant
|
Fusion][vmware-fusion-dl] with the [VMWare Fusion Vagrant
|
||||||
plugin][vagrant-vmware-fusion-dl].)
|
plugin][vagrant-vmware-fusion-dl].)
|
||||||
|
|
||||||
Now you are ready for [Step 2: Get Zulip Code.](#step-2-get-zulip-code).
|
Now you are ready for [Step 2: Get Zulip code](#step-2-get-zulip-code).
|
||||||
|
|
||||||
#### Ubuntu
|
#### Ubuntu
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ sudo systemctl enable docker
|
||||||
sudo systemctl start docker
|
sudo systemctl start docker
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you are ready for [Step 2: Get Zulip Code.](#step-2-get-zulip-code)
|
Now you are ready for [Step 2: Get Zulip code](#step-2-get-zulip-code).
|
||||||
|
|
||||||
#### Debian
|
#### Debian
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ true
|
||||||
```
|
```
|
||||||
|
|
||||||
If you see `true`, you are ready for [Step 2: Get Zulip
|
If you see `true`, you are ready for [Step 2: Get Zulip
|
||||||
Code.](#step-2-get-zulip-code)
|
code](#step-2-get-zulip-code).
|
||||||
|
|
||||||
Otherwise, if the above command prints `false` or nothing at all, then symlinks
|
Otherwise, if the above command prints `false` or nothing at all, then symlinks
|
||||||
have not been enabled.
|
have not been enabled.
|
||||||
|
@ -223,7 +223,7 @@ $ echo $CYGWIN
|
||||||
winsymlinks:native
|
winsymlinks:native
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you are ready for [Step 2: Get Zulip Code.](#step-2-get-zulip-code)
|
Now you are ready for [Step 2: Get Zulip code](#step-2-get-zulip-code).
|
||||||
|
|
||||||
(Note: The **GitHub Desktop client** for Windows has a bug where it
|
(Note: The **GitHub Desktop client** for Windows has a bug where it
|
||||||
will automatically set `git config core.symlink false` on a repository
|
will automatically set `git config core.symlink false` on a repository
|
||||||
|
@ -232,7 +232,7 @@ development environment, because we use symbolic links. For that
|
||||||
reason, we recommend avoiding using GitHub Desktop client to clone
|
reason, we recommend avoiding using GitHub Desktop client to clone
|
||||||
projects and to instead follow these instructions exactly.)
|
projects and to instead follow these instructions exactly.)
|
||||||
|
|
||||||
### Step 2: Get Zulip Code
|
### Step 2: Get Zulip code
|
||||||
|
|
||||||
1. In your browser, visit <https://github.com/zulip/zulip>
|
1. In your browser, visit <https://github.com/zulip/zulip>
|
||||||
and click the `fork` button. You will need to be logged in to GitHub to
|
and click the `fork` button. You will need to be logged in to GitHub to
|
||||||
|
@ -268,7 +268,7 @@ Checking out files: 100% (1912/1912), done.`
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you are ready for [Step 3: Start the development
|
Now you are ready for [Step 3: Start the development
|
||||||
environment.](#step-3-start-the-development-environment)
|
environment](#step-3-start-the-development-environment).
|
||||||
|
|
||||||
### Step 3: Start the development environment
|
### Step 3: Start the development environment
|
||||||
|
|
||||||
|
@ -392,7 +392,7 @@ should see something like:
|
||||||
2016-05-04 18:21:57,819 INFO 127.0.0.1 GET 200 209ms (db: 7ms/2q) /login/ (unauth@zulip via ?)
|
2016-05-04 18:21:57,819 INFO 127.0.0.1 GET 200 209ms (db: 7ms/2q) /login/ (unauth@zulip via ?)
|
||||||
```
|
```
|
||||||
|
|
||||||
Now you're ready for [Step 4: Developing.](#step-4-developing)
|
Now you're ready for [Step 4: Developing](#step-4-developing).
|
||||||
|
|
||||||
### Step 4: Developing
|
### Step 4: Developing
|
||||||
|
|
||||||
|
@ -424,10 +424,10 @@ there.
|
||||||
See [Logging](../subsystems/logging.md) for further details on the run-dev.py console
|
See [Logging](../subsystems/logging.md) for further details on the run-dev.py console
|
||||||
output.
|
output.
|
||||||
|
|
||||||
#### Committing and pushing changes with git
|
#### Committing and pushing changes with Git
|
||||||
|
|
||||||
When you're ready to commit or push changes via git, you will do this by
|
When you're ready to commit or push changes via Git, you will do this by
|
||||||
running git commands in Terminal (macOS/Ubuntu) or Git BASH (Windows) in the
|
running Git commands in Terminal (macOS/Ubuntu) or Git BASH (Windows) in the
|
||||||
directory where you cloned Zulip on your main machine.
|
directory where you cloned Zulip on your main machine.
|
||||||
|
|
||||||
If you're new to working with Git/GitHub, check out our [Git & GitHub
|
If you're new to working with Git/GitHub, check out our [Git & GitHub
|
||||||
|
@ -528,7 +528,7 @@ $ vagrant ssh
|
||||||
$ ./tools/run-dev.py
|
$ ./tools/run-dev.py
|
||||||
```
|
```
|
||||||
|
|
||||||
### Next Steps
|
### Next steps
|
||||||
|
|
||||||
Next, read the following to learn more about developing for Zulip:
|
Next, read the following to learn more about developing for Zulip:
|
||||||
|
|
||||||
|
@ -538,7 +538,7 @@ Next, read the following to learn more about developing for Zulip:
|
||||||
run the full test suite against any branches you push to your fork,
|
run the full test suite against any branches you push to your fork,
|
||||||
which can help you optimize your development workflow).
|
which can help you optimize your development workflow).
|
||||||
|
|
||||||
### Troubleshooting and Common Errors
|
### Troubleshooting and common errors
|
||||||
|
|
||||||
Below you'll find a list of common errors and their solutions. Most
|
Below you'll find a list of common errors and their solutions. Most
|
||||||
issues are resolved by just provisioning again (by running
|
issues are resolved by just provisioning again (by running
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Using the Development Environment
|
Using the development environment
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
This page describes the basic edit/refresh workflows for working with
|
This page describes the basic edit/refresh workflows for working with
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#####################
|
#####################
|
||||||
Writing Documentation
|
Writing documentation
|
||||||
#####################
|
#####################
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
|
@ -230,7 +230,7 @@ All tips/warnings should appear inside tip/warning blocks. There
|
||||||
should be only one tip/warning inside each block, and they usually
|
should be only one tip/warning inside each block, and they usually
|
||||||
should be formatted as a continuation of a numbered step.
|
should be formatted as a continuation of a numbered step.
|
||||||
|
|
||||||
### Tab Switcher
|
### Tab switcher
|
||||||
|
|
||||||
Our Markdown processor supports easily creating a tab switcher widget
|
Our Markdown processor supports easily creating a tab switcher widget
|
||||||
design to easily show the instructions for different
|
design to easily show the instructions for different
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# Git Cheat Sheet
|
# Git cheat sheet
|
||||||
|
|
||||||
See also [fixing commits][fix-commit]
|
See also [fixing commits][fix-commit]
|
||||||
|
|
||||||
## Common Commands
|
## Common commands
|
||||||
|
|
||||||
- add
|
- add
|
||||||
- `git add foo.py`
|
- `git add foo.py`
|
||||||
|
@ -53,7 +53,7 @@ See also [fixing commits][fix-commit]
|
||||||
- status
|
- status
|
||||||
- `git status`
|
- `git status`
|
||||||
|
|
||||||
## Detailed Cheat Sheet
|
## Detailed cheat sheet
|
||||||
|
|
||||||
- add
|
- add
|
||||||
- `git add foo.py`: add `foo.py` to the staging area
|
- `git add foo.py`: add `foo.py` to the staging area
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Fixing Commits
|
# Fixing commits
|
||||||
This is mostly from
|
This is mostly from
|
||||||
[here](https://help.github.com/en/articles/changing-a-commit-message#rewriting-the-most-recent-commit-message).
|
[here](https://help.github.com/en/articles/changing-a-commit-message#rewriting-the-most-recent-commit-message).
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
#########
|
#########
|
||||||
Git Guide
|
Git guide
|
||||||
#########
|
#########
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 3
|
:maxdepth: 3
|
||||||
|
|
||||||
Quick Start <overview>
|
Quick start <overview>
|
||||||
Set up Git <setup>
|
Set up Git <setup>
|
||||||
Zulip-specific-tools <zulip-tools>
|
Zulip-specific tools <zulip-tools>
|
||||||
How Git is different <the-git-difference>
|
How Git is different <the-git-difference>
|
||||||
Important Git terms <terminology>
|
Important Git terms <terminology>
|
||||||
Get Zulip code <cloning>
|
Get Zulip code <cloning>
|
||||||
Working copies <working-copies>
|
Working copies <working-copies>
|
||||||
Using Git as you work <using>
|
Using Git as you work <using>
|
||||||
Pull Requests <pull-requests>
|
Pull requests <pull-requests>
|
||||||
Collaborate <collaborate>
|
Collaborate <collaborate>
|
||||||
Fixing commits <fixing-commits>
|
Fixing commits <fixing-commits>
|
||||||
Reviewing changes <reviewing>
|
Reviewing changes <reviewing>
|
||||||
Get and stay out of trouble <troubleshooting>
|
Get and stay out of trouble <troubleshooting>
|
||||||
Git Cheat Sheet <cheat-sheet>
|
Git cheat sheet <cheat-sheet>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Quick start: How Zulip uses Git and GitHub
|
# Quick start: how Zulip uses Git and GitHub
|
||||||
|
|
||||||
This quick start provides a brief overview of how Zulip uses Git and GitHub.
|
This quick start provides a brief overview of how Zulip uses Git and GitHub.
|
||||||
|
|
||||||
|
|
|
@ -8,14 +8,14 @@ from *Pro Git* by Scott Chacon and Ben Straub.
|
||||||
|
|
||||||
Here are the top things to know:
|
Here are the top things to know:
|
||||||
|
|
||||||
- **Git works on snapshots:** Unlike other version control systems (e.g.,
|
- **Git works on snapshots.** Unlike other version control systems (e.g.,
|
||||||
Subversion, Perforce, Bazaar), which track files and changes to those files
|
Subversion, Perforce, Bazaar), which track files and changes to those files
|
||||||
made over time, Git tracks *snapshots* of your project. Each time you commit
|
made over time, Git tracks *snapshots* of your project. Each time you commit
|
||||||
or otherwise make a change to your repository, Git takes a snapshot of your
|
or otherwise make a change to your repository, Git takes a snapshot of your
|
||||||
project and stores a reference to that snapshot. If a file hasn't changed,
|
project and stores a reference to that snapshot. If a file hasn't changed,
|
||||||
Git creates a link to the identical file rather than storing it again.
|
Git creates a link to the identical file rather than storing it again.
|
||||||
|
|
||||||
- **Most Git operations are local:** Git is a distributed version control
|
- **Most Git operations are local.** Git is a distributed version control
|
||||||
system, so once you've cloned a repository, you have a complete copy of that
|
system, so once you've cloned a repository, you have a complete copy of that
|
||||||
repository's *entire history*. Staging, committing, branching, and browsing
|
repository's *entire history*. Staging, committing, branching, and browsing
|
||||||
history are all things you can do locally without network access and without
|
history are all things you can do locally without network access and without
|
||||||
|
@ -56,7 +56,7 @@ Here are the top things to know:
|
||||||
changes but have not yet been marked for inclusion in the next commit; they
|
changes but have not yet been marked for inclusion in the next commit; they
|
||||||
have not been added to the index.
|
have not been added to the index.
|
||||||
|
|
||||||
- **Git commit workflow is as follows:** Edit files in your *working tree*. Add
|
- **Git commit workflow is as follows.** Edit files in your *working tree*. Add
|
||||||
to the *index* (that is *stage*) with `git add`. *Commit* to the HEAD of the
|
to the *index* (that is *stage*) with `git add`. *Commit* to the HEAD of the
|
||||||
current branch with `git commit`.
|
current branch with `git commit`.
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ names.
|
||||||
- **origin**: This is your fork.
|
- **origin**: This is your fork.
|
||||||
- **upstream**: This is the official Zulip repo.
|
- **upstream**: This is the official Zulip repo.
|
||||||
|
|
||||||
## Relevant git commands
|
## Relevant Git commands
|
||||||
|
|
||||||
The following commands are useful for moving commits between
|
The following commands are useful for moving commits between
|
||||||
working copies:
|
working copies:
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
This article documents several useful tools that can save you a lot of
|
This article documents several useful tools that can save you a lot of
|
||||||
time when working with Git on the Zulip project.
|
time when working with Git on the Zulip project.
|
||||||
|
|
||||||
## Set up git repo script
|
## Set up Git repo script
|
||||||
|
|
||||||
**Extremely useful**. In the `tools` directory of
|
**Extremely useful**. In the `tools` directory of
|
||||||
[zulip/zulip][github-zulip-zulip] you'll find a bash script
|
[zulip/zulip][github-zulip-zulip] you'll find a bash script
|
||||||
|
|
|
@ -32,14 +32,14 @@ installation <production/install.html>`_ or `Contributing to Zulip
|
||||||
Contents:
|
Contents:
|
||||||
|
|
||||||
* :ref:`Overview <overview>`
|
* :ref:`Overview <overview>`
|
||||||
* :ref:`Zulip in Production <zulip-in-production>`
|
* :ref:`Zulip in production <zulip-in-production>`
|
||||||
* :ref:`Development Environment <development-environment>`
|
* :ref:`Development environment <development-environment>`
|
||||||
* :ref:`Developer Tutorials <developer-tutorials>`
|
* :ref:`Developer tutorials <developer-tutorials>`
|
||||||
* :ref:`Git Guide <git-guide>`
|
* :ref:`Git guide <git-guide>`
|
||||||
* :ref:`Code Contribution Guide <code-contribution-guide>`
|
* :ref:`Code contribution guide <code-contribution-guide>`
|
||||||
* :ref:`Code Testing <code-testing>`
|
* :ref:`Code testing <code-testing>`
|
||||||
* :ref:`Subsystem Documentation <subsystem-documentation>`
|
* :ref:`Subsystem documentation <subsystem-documentation>`
|
||||||
* :ref:`Writing Documentation <writing-documentation>`
|
* :ref:`Writing documentation <writing-documentation>`
|
||||||
* :ref:`Translating <translating>`
|
* :ref:`Translating <translating>`
|
||||||
|
|
||||||
.. _overview:
|
.. _overview:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Zulip architectural overview
|
Zulip architectural overview
|
||||||
============================
|
============================
|
||||||
|
|
||||||
Key Codebases
|
Key codebases
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
The main Zulip codebase is at <https://github.com/zulip/zulip>. It
|
The main Zulip codebase is at <https://github.com/zulip/zulip>. It
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Version History
|
# Version history
|
||||||
|
|
||||||
All notable changes to the Zulip server are documented in this file.
|
All notable changes to the Zulip server are documented in this file.
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ in bursts.
|
||||||
- Redesigned the top navbar/search area to be much cleaner and show
|
- Redesigned the top navbar/search area to be much cleaner and show
|
||||||
useful data like subscriber counts and stream descriptions in
|
useful data like subscriber counts and stream descriptions in
|
||||||
default views.
|
default views.
|
||||||
- Added a new "Recent Topics" widget, which lets one browse recent
|
- Added a new "recent topics" widget, which lets one browse recent
|
||||||
and ongoing conversations at a glance. We expect this widget to
|
and ongoing conversations at a glance. We expect this widget to
|
||||||
replace "All messages" as the default view in Zulip in the
|
replace "All messages" as the default view in Zulip in the
|
||||||
next major release.
|
next major release.
|
||||||
|
|
|
@ -43,7 +43,7 @@ paths will be familiar to Django developers.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
### HTML Templates
|
### HTML templates
|
||||||
|
|
||||||
See [our docs](../subsystems/html-css.md) for details on Zulip's
|
See [our docs](../subsystems/html-css.md) for details on Zulip's
|
||||||
templating systems.
|
templating systems.
|
||||||
|
@ -126,7 +126,7 @@ Django context (i.e. with database access).
|
||||||
|
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
|
|
||||||
### API and Bots
|
### API and bots
|
||||||
|
|
||||||
* See the [Zulip API repository](https://github.com/zulip/python-zulip-api).
|
* See the [Zulip API repository](https://github.com/zulip/python-zulip-api).
|
||||||
Zulip's Python API bindings, a number of Zulip integrations and
|
Zulip's Python API bindings, a number of Zulip integrations and
|
||||||
|
@ -163,7 +163,7 @@ This is used to deploy essentially all configuration in production.
|
||||||
|
|
||||||
-----------------------------------------------------------------------
|
-----------------------------------------------------------------------
|
||||||
|
|
||||||
### Jinja2 Compatibility Files
|
### Jinja2 compatibility files
|
||||||
|
|
||||||
* `zproject/jinja2/__init__.py` Jinja2 environment.
|
* `zproject/jinja2/__init__.py` Jinja2 environment.
|
||||||
|
|
||||||
|
|
|
@ -518,7 +518,7 @@ we have enough strong applicants.
|
||||||
well. You'll need to learn React Native as part of getting
|
well. You'll need to learn React Native as part of getting
|
||||||
involved. There's tons of good online tutorials, courses, etc.
|
involved. There's tons of good online tutorials, courses, etc.
|
||||||
|
|
||||||
### Electron Desktop app
|
### Electron desktop app
|
||||||
|
|
||||||
Code:
|
Code:
|
||||||
[Our cross-platform desktop app written in JavaScript on Electron](https://github.com/zulip/zulip-desktop).
|
[Our cross-platform desktop app written in JavaScript on Electron](https://github.com/zulip/zulip-desktop).
|
||||||
|
@ -528,7 +528,7 @@ Experts: Akash Nimare, Abhighyan Khaund
|
||||||
application](https://github.com/zulip/zulip-desktop). There's
|
application](https://github.com/zulip/zulip-desktop). There's
|
||||||
plenty of feature/UI work to do, but focus areas for us include
|
plenty of feature/UI work to do, but focus areas for us include
|
||||||
things to (1) improve the release process for the app, using
|
things to (1) improve the release process for the app, using
|
||||||
automated testing, typescript, etc. and (2) polish the UI. Browse
|
automated testing, TypeScript, etc. and (2) polish the UI. Browse
|
||||||
the open issues and get involved!
|
the open issues and get involved!
|
||||||
|
|
||||||
**Skills required**: JavaScript experience, Electron experience. You
|
**Skills required**: JavaScript experience, Electron experience. You
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# The Zulip Roadmap
|
# The Zulip roadmap
|
||||||
|
|
||||||
Zulip has received a great deal of interest and attention since it was
|
Zulip has received a great deal of interest and attention since it was
|
||||||
released as free and open source software by Dropbox. That attention
|
released as free and open source software by Dropbox. That attention
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
###################
|
###################
|
||||||
Zulip in Production
|
Zulip in production
|
||||||
###################
|
###################
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
:orphan:
|
:orphan:
|
||||||
```
|
```
|
||||||
|
|
||||||
# Production Installation on Existing Server
|
# Production installation on existing server
|
||||||
|
|
||||||
Here are some tips for installing the latest release Zulip on a
|
Here are some tips for installing the latest release Zulip on a
|
||||||
production server running Debian or Ubuntu. The Zulip installation
|
production server running Debian or Ubuntu. The Zulip installation
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Production Installation
|
# Production installation
|
||||||
|
|
||||||
You'll need an Ubuntu or Debian system that satisfies
|
You'll need an Ubuntu or Debian system that satisfies
|
||||||
[the installation requirements](../production/requirements.md). Alternatively,
|
[the installation requirements](../production/requirements.md). Alternatively,
|
||||||
|
|
|
@ -157,10 +157,10 @@ Zulip open source project understand how many people are using Zulip,
|
||||||
and help us allocate resources towards supporting self-hosted
|
and help us allocate resources towards supporting self-hosted
|
||||||
installations.
|
installations.
|
||||||
|
|
||||||
Our use of these statistics is governed by the same ToS and
|
Our use of these statistics is governed by the same Terms of Service
|
||||||
Privacy Policy that covers the Mobile Push Notifications Service
|
and Privacy Policy that covers the Mobile Push Notifications Service
|
||||||
itself. If your organization does not want to submit these
|
itself. If your organization does not want to submit these statistics,
|
||||||
statistics, you can disable this feature at any time by setting
|
you can disable this feature at any time by setting
|
||||||
`SUBMIT_USAGE_STATISTICS=False` in `/etc/zulip/settings.py`.
|
`SUBMIT_USAGE_STATISTICS=False` in `/etc/zulip/settings.py`.
|
||||||
|
|
||||||
## Sending push notifications directly from your server
|
## Sending push notifications directly from your server
|
||||||
|
|
|
@ -50,7 +50,7 @@ For servers hosting a large number of organizations, like
|
||||||
= True` in `/etc/zulip/settings.py` so that the homepage for the
|
= True` in `/etc/zulip/settings.py` so that the homepage for the
|
||||||
server is a copy of the Zulip homepage.
|
server is a copy of the Zulip homepage.
|
||||||
|
|
||||||
### SSL Certificates
|
### SSL certificates
|
||||||
|
|
||||||
You'll need to install an SSL certificate valid for all the
|
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
|
(sub)domains you're using your Zulip server with. You can get an SSL
|
||||||
|
@ -125,7 +125,7 @@ like "Notification Bot", "Welcome Bot", etc. exist. In the future,
|
||||||
we're considering moving these bots to exist in every realm, so that
|
we're considering moving these bots to exist in every realm, so that
|
||||||
we wouldn't need the system realm anymore.
|
we wouldn't need the system realm anymore.
|
||||||
|
|
||||||
### Migrating / Troubleshooting
|
### Migrating / troubleshooting
|
||||||
|
|
||||||
If you're migrating from a configuration using the root domain to one
|
If you're migrating from a configuration using the root domain to one
|
||||||
with realms hosted on subdomains, be sure to clear cookies in any
|
with realms hosted on subdomains, be sure to clear cookies in any
|
||||||
|
|
|
@ -139,7 +139,7 @@ with this approach, since it does bypass some of the work that
|
||||||
pg_ctlcluster does.
|
pg_ctlcluster does.
|
||||||
|
|
||||||
|
|
||||||
#### Postgres Vacuuming alerts
|
#### Postgres vacuuming alerts
|
||||||
|
|
||||||
The `autovac_freeze` postgres alert from `check_postgres` is
|
The `autovac_freeze` postgres alert from `check_postgres` is
|
||||||
particularly important. This alert indicates that the age (in terms
|
particularly important. This alert indicates that the age (in terms
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Requirements and Scalability
|
# Requirements and scalability
|
||||||
|
|
||||||
To run a Zulip server, you will need:
|
To run a Zulip server, you will need:
|
||||||
* A dedicated machine or VM
|
* A dedicated machine or VM
|
||||||
|
@ -26,7 +26,7 @@ disregard our advice and use a server that hosts other services, we
|
||||||
can't support you, but
|
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.md).
|
||||||
|
|
||||||
#### Operating System
|
#### Operating system
|
||||||
|
|
||||||
Ubuntu 20.04 Focal, 18.04 Bionic, and Debian 10 Buster are supported
|
Ubuntu 20.04 Focal, 18.04 Bionic, and Debian 10 Buster are supported
|
||||||
for running Zulip in production. 64-bit is recommended. We recommend
|
for running Zulip in production. 64-bit is recommended. We recommend
|
||||||
|
@ -48,7 +48,7 @@ sudo apt update
|
||||||
https://help.ubuntu.com/community/Repositories/Ubuntu
|
https://help.ubuntu.com/community/Repositories/Ubuntu
|
||||||
[enable-universe]: https://help.ubuntu.com/community/Repositories/CommandLine#Adding_the_Universe_and_Multiverse_Repositories
|
[enable-universe]: https://help.ubuntu.com/community/Repositories/CommandLine#Adding_the_Universe_and_Multiverse_Repositories
|
||||||
|
|
||||||
#### Hardware Specifications
|
#### Hardware specifications
|
||||||
|
|
||||||
* CPU and Memory: For installations with 100+ users you'll need a
|
* CPU and Memory: For installations with 100+ users you'll need a
|
||||||
minimum of **2 CPUs** and **4GB RAM**. For installations with fewer
|
minimum of **2 CPUs** and **4GB RAM**. For installations with fewer
|
||||||
|
@ -66,7 +66,7 @@ https://help.ubuntu.com/community/Repositories/Ubuntu
|
||||||
See our [documentation on scalability](#scalability) below for advice
|
See our [documentation on scalability](#scalability) below for advice
|
||||||
on hardware requirements for larger organizations.
|
on hardware requirements for larger organizations.
|
||||||
|
|
||||||
#### Network and Security Specifications
|
#### Network and security specifications
|
||||||
|
|
||||||
* Incoming HTTPS access (usually port 443, though this is
|
* Incoming HTTPS access (usually port 443, though this is
|
||||||
[configurable](../production/deployment.html#using-an-alternate-port))
|
[configurable](../production/deployment.html#using-an-alternate-port))
|
||||||
|
@ -96,7 +96,7 @@ on hardware requirements for larger organizations.
|
||||||
|
|
||||||
## Credentials needed
|
## Credentials needed
|
||||||
|
|
||||||
#### SSL Certificate
|
#### SSL certificate
|
||||||
|
|
||||||
Your Zulip server will need an SSL certificate for the domain name it
|
Your Zulip server will need an SSL certificate for the domain name it
|
||||||
uses. For most Zulip servers, the recommended (and simplest) way to
|
uses. For most Zulip servers, the recommended (and simplest) way to
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Security Model
|
# Security model
|
||||||
|
|
||||||
This section attempts to document the Zulip security model. It likely
|
This section attempts to document the Zulip security model. It likely
|
||||||
does not cover every issue; if there are details you're curious about,
|
does not cover every issue; if there are details you're curious about,
|
||||||
|
@ -25,7 +25,7 @@ announcement).
|
||||||
entire message history, and thus someone with control over the
|
entire message history, and thus someone with control over the
|
||||||
server has access to that data as well.
|
server has access to that data as well.
|
||||||
|
|
||||||
## Encryption and Authentication
|
## Encryption and authentication
|
||||||
|
|
||||||
* Traffic between clients (web, desktop and mobile) and the Zulip is
|
* Traffic between clients (web, desktop and mobile) and the Zulip is
|
||||||
encrypted using HTTPS. By default, all Zulip services talk to each
|
encrypted using HTTPS. By default, all Zulip services talk to each
|
||||||
|
@ -90,7 +90,7 @@ strength allowed is controlled by two settings in
|
||||||
[zxcvbn-paper]: https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_wheeler.pdf
|
[zxcvbn-paper]: https://www.usenix.org/system/files/conference/usenixsecurity16/sec16_paper_wheeler.pdf
|
||||||
[Bon12]: http://ieeexplore.ieee.org/document/6234435/
|
[Bon12]: http://ieeexplore.ieee.org/document/6234435/
|
||||||
|
|
||||||
## Messages and History
|
## Messages and history
|
||||||
|
|
||||||
* Zulip message content is rendered using a specialized Markdown
|
* Zulip message content is rendered using a specialized Markdown
|
||||||
parser which escapes content to protect against cross-site scripting
|
parser which escapes content to protect against cross-site scripting
|
||||||
|
@ -132,7 +132,7 @@ strength allowed is controlled by two settings in
|
||||||
[Configuring message editing and deletion](https://zulip.com/help/configure-message-editing-and-deletion)
|
[Configuring message editing and deletion](https://zulip.com/help/configure-message-editing-and-deletion)
|
||||||
for more details.
|
for more details.
|
||||||
|
|
||||||
## Users and Bots
|
## Users and bots
|
||||||
|
|
||||||
* There are several types of users in a Zulip organization: Organization
|
* There are several types of users in a Zulip organization: Organization
|
||||||
Owners, Organization Administrators, Members (normal users), Guests,
|
Owners, Organization Administrators, Members (normal users), Guests,
|
||||||
|
|
|
@ -21,7 +21,7 @@ su zulip -c '/home/zulip/deployments/current/scripts/restart-server'
|
||||||
|
|
||||||
## Specific settings
|
## Specific settings
|
||||||
|
|
||||||
### Domain and Email settings
|
### Domain and email settings
|
||||||
|
|
||||||
`EXTERNAL_HOST`: the user-accessible domain name for your Zulip
|
`EXTERNAL_HOST`: the user-accessible domain name for your Zulip
|
||||||
installation (i.e., what users will type in their web browser). This
|
installation (i.e., what users will type in their web browser). This
|
||||||
|
@ -34,7 +34,7 @@ maintaining this installation and who will get support and error
|
||||||
emails. If you passed `--email` to the installer, this will be
|
emails. If you passed `--email` to the installer, this will be
|
||||||
prefilled with that value.
|
prefilled with that value.
|
||||||
|
|
||||||
### Authentication Backends
|
### Authentication backends
|
||||||
|
|
||||||
`AUTHENTICATION_BACKENDS`: Zulip supports a wide range of popular
|
`AUTHENTICATION_BACKENDS`: Zulip supports a wide range of popular
|
||||||
options for authenticating users to your server, including Google
|
options for authenticating users to your server, including Google
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Installing SSL Certificates
|
# Installing SSL certificates
|
||||||
|
|
||||||
To keep your communications secure, Zulip runs over HTTPS only.
|
To keep your communications secure, Zulip runs over HTTPS only.
|
||||||
You'll need an SSL/TLS certificate.
|
You'll need an SSL/TLS certificate.
|
||||||
|
|
|
@ -63,7 +63,7 @@ doing the final upgrade at off hours, or buying a support contract.
|
||||||
See the [troubleshooting guide](#troubleshooting-and-rollback) if you
|
See the [troubleshooting guide](#troubleshooting-and-rollback) if you
|
||||||
run into any issues or need to roll back the upgrade.
|
run into any issues or need to roll back the upgrade.
|
||||||
|
|
||||||
## Upgrading from a git repository
|
## Upgrading from a Git repository
|
||||||
|
|
||||||
Zulip supports upgrading a production installation to any commit in a
|
Zulip supports upgrading a production installation to any commit in a
|
||||||
Git repository, which is great for [running pre-release changes from
|
Git repository, which is great for [running pre-release changes from
|
||||||
|
@ -489,7 +489,7 @@ cd zulip
|
||||||
git fetch --tags upstream
|
git fetch --tags upstream
|
||||||
git checkout acme-branch
|
git checkout acme-branch
|
||||||
git rebase --onto 2.1.0 2.0.4
|
git rebase --onto 2.1.0 2.0.4
|
||||||
# Fix any errors or merge conflicts; see Zulip's Git Guide for advice
|
# Fix any errors or merge conflicts; see Zulip's Git guide for advice
|
||||||
|
|
||||||
# Use `git diff` to verify your changes are what you expect
|
# Use `git diff` to verify your changes are what you expect
|
||||||
git diff 2.1.0 acme-branch
|
git diff 2.1.0 acme-branch
|
||||||
|
|
|
@ -123,7 +123,7 @@ efficient:
|
||||||
year, most of whose values are 0. A related note is to be cautious about
|
year, most of whose values are 0. A related note is to be cautious about
|
||||||
adding queries that are typically non-0 instead of being typically 0.
|
adding queries that are typically non-0 instead of being typically 0.
|
||||||
|
|
||||||
## Backend Testing
|
## Backend testing
|
||||||
|
|
||||||
There are a few types of automated tests that are important for this sort of
|
There are a few types of automated tests that are important for this sort of
|
||||||
system:
|
system:
|
||||||
|
@ -156,7 +156,7 @@ statistics, etc.). There is currently a reference implementation of a
|
||||||
|
|
||||||
## Analytics UI development and testing
|
## Analytics UI development and testing
|
||||||
|
|
||||||
### Setup and Testing
|
### Setup and testing
|
||||||
|
|
||||||
The main testing approach for the /stats page UI is manual testing.
|
The main testing approach for the /stats page UI is manual testing.
|
||||||
For most UI testing, you can visit `/stats/realm/analytics` while
|
For most UI testing, you can visit `/stats/realm/analytics` while
|
||||||
|
|
|
@ -61,11 +61,11 @@ Things that we still may need:
|
||||||
We have a few major classes of data. They are listed below in the order
|
We have a few major classes of data. They are listed below in the order
|
||||||
that we process them in `do_export_realm()`:
|
that we process them in `do_export_realm()`:
|
||||||
|
|
||||||
#### Public Realm Data
|
#### Public realm data
|
||||||
|
|
||||||
`Realm/RealmDomain/RealmEmoji/RealmFilter/DefaultStream`.
|
`Realm/RealmDomain/RealmEmoji/RealmFilter/DefaultStream`.
|
||||||
|
|
||||||
#### Cross Realm Data
|
#### Cross realm data
|
||||||
|
|
||||||
`Client/zerver_userprofile_cross_realm`
|
`Client/zerver_userprofile_cross_realm`
|
||||||
|
|
||||||
|
@ -75,18 +75,18 @@ This includes `Client` and three bots.
|
||||||
`UserProfile` or `Realm` (unless you somewhat painfully tie it back to
|
`UserProfile` or `Realm` (unless you somewhat painfully tie it back to
|
||||||
users in a bottom-up fashion though other tables).
|
users in a bottom-up fashion though other tables).
|
||||||
|
|
||||||
#### Disjoint User Data
|
#### Disjoint user data
|
||||||
|
|
||||||
`UserProfile/UserActivity/UserActivityInterval/UserPresence`.
|
`UserProfile/UserActivity/UserActivityInterval/UserPresence`.
|
||||||
|
|
||||||
#### Recipient Data
|
#### Recipient data
|
||||||
|
|
||||||
`Recipient/Stream/Subscription/Huddle`.
|
`Recipient/Stream/Subscription/Huddle`.
|
||||||
|
|
||||||
These tables are tied back to users, but they introduce complications
|
These tables are tied back to users, but they introduce complications
|
||||||
when you try to deal with multi-user subsets.
|
when you try to deal with multi-user subsets.
|
||||||
|
|
||||||
#### File-related Data
|
#### File-related data
|
||||||
|
|
||||||
`Attachment`
|
`Attachment`
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ of `UserProfile`. Most importantly, of course, it requires us to grab
|
||||||
files from S3. Finally, `Attachment`'s `m2m` relationship ties to
|
files from S3. Finally, `Attachment`'s `m2m` relationship ties to
|
||||||
`Message`.
|
`Message`.
|
||||||
|
|
||||||
#### Message Data
|
#### Message data
|
||||||
|
|
||||||
`Message/UserMessage`
|
`Message/UserMessage`
|
||||||
|
|
||||||
|
@ -116,13 +116,13 @@ process the data, which isn't surprising for a top-down approach.)
|
||||||
|
|
||||||
The next section of the document talks about risk factors.
|
The next section of the document talks about risk factors.
|
||||||
|
|
||||||
## Risk Mitigation
|
## Risk mitigation
|
||||||
|
|
||||||
### Generic considerations
|
### Generic considerations
|
||||||
|
|
||||||
We have two major mechanisms for getting data:
|
We have two major mechanisms for getting data:
|
||||||
|
|
||||||
##### Top Down
|
##### Top down
|
||||||
|
|
||||||
Get realm data, then all users in realm, then all recipients, then all
|
Get realm data, then all users in realm, then all recipients, then all
|
||||||
messages, etc.
|
messages, etc.
|
||||||
|
@ -131,7 +131,7 @@ The problem with the top-down approach will be **filtering**. Also,
|
||||||
if errors arise during top-down passes, it may be time consuming to
|
if errors arise during top-down passes, it may be time consuming to
|
||||||
re-run the processes.
|
re-run the processes.
|
||||||
|
|
||||||
##### Bottom Up
|
##### Bottom up
|
||||||
|
|
||||||
Start with users, get their recipient data, etc.
|
Start with users, get their recipient data, etc.
|
||||||
|
|
||||||
|
@ -139,14 +139,14 @@ The problems with the bottom up approach will be **merging**. Also,
|
||||||
if we run multiple bottom-up passes, there is the danger of
|
if we run multiple bottom-up passes, there is the danger of
|
||||||
duplicating some work, particularly on the message side of things.
|
duplicating some work, particularly on the message side of things.
|
||||||
|
|
||||||
### Approved Transfers
|
### Approved transfers
|
||||||
|
|
||||||
We have not yet integrated the approved-transfer model, which tells us
|
We have not yet integrated the approved-transfer model, which tells us
|
||||||
which users can be moved.
|
which users can be moved.
|
||||||
|
|
||||||
### Risk factors broken out by data categories
|
### Risk factors broken out by data categories
|
||||||
|
|
||||||
#### Message Data
|
#### Message data
|
||||||
|
|
||||||
- models: `Message`/`UserMessage`.
|
- models: `Message`/`UserMessage`.
|
||||||
- assets: `messages-*.json`, subprocesses, partial files
|
- assets: `messages-*.json`, subprocesses, partial files
|
||||||
|
@ -165,7 +165,7 @@ We currently have these measures in place for top-down processing:
|
||||||
- messages are filtered by both sender and recipient
|
- messages are filtered by both sender and recipient
|
||||||
|
|
||||||
|
|
||||||
#### File Related Data
|
#### File related data
|
||||||
|
|
||||||
- models: `Attachment`
|
- models: `Attachment`
|
||||||
- assets: S3, `attachment.json`, `uploads-temp/`, image files in
|
- assets: S3, `attachment.json`, `uploads-temp/`, image files in
|
||||||
|
@ -185,7 +185,7 @@ parts**:
|
||||||
- At import time we have to populate the `m2m` table (but fortunately,
|
- At import time we have to populate the `m2m` table (but fortunately,
|
||||||
this is pretty low risk in terms of breaking anything.)
|
this is pretty low risk in terms of breaking anything.)
|
||||||
|
|
||||||
#### Recipient Data
|
#### Recipient data
|
||||||
- models: `Recipient/Stream/Subscription/Huddle`
|
- models: `Recipient/Stream/Subscription/Huddle`
|
||||||
- assets: `realm.json`, `(user,stream,huddle)_(recipient,subscription)`
|
- assets: `realm.json`, `(user,stream,huddle)_(recipient,subscription)`
|
||||||
|
|
||||||
|
@ -219,7 +219,7 @@ Recommendation: We probably want to get a backup of all this data that
|
||||||
is very simply bulk-exported from the entire DB, and we should
|
is very simply bulk-exported from the entire DB, and we should
|
||||||
obviously put it in a secure place.
|
obviously put it in a secure place.
|
||||||
|
|
||||||
#### Cross Realm Data
|
#### Cross realm data
|
||||||
- models: `Client`
|
- models: `Client`
|
||||||
- assets: `realm.json`, three bots (`notification`/`email`/`welcome`),
|
- assets: `realm.json`, three bots (`notification`/`email`/`welcome`),
|
||||||
`id_maps`
|
`id_maps`
|
||||||
|
@ -245,7 +245,7 @@ example. As for possibly missing messages that the welcome bot and
|
||||||
friends have sent in the past, I am not sure what our risk profile is
|
friends have sent in the past, I am not sure what our risk profile is
|
||||||
there, but I imagine it is relatively low.
|
there, but I imagine it is relatively low.
|
||||||
|
|
||||||
#### Disjoint User Data
|
#### Disjoint user data
|
||||||
- models: `UserProfile/UserActivity/UserActivityInterval/UserPresence`
|
- models: `UserProfile/UserActivity/UserActivityInterval/UserPresence`
|
||||||
- assets: `realm.json`, `password`, `api_key`, `avatar salt`,
|
- assets: `realm.json`, `password`, `api_key`, `avatar salt`,
|
||||||
`id_maps`
|
`id_maps`
|
||||||
|
@ -259,7 +259,7 @@ We have code in place to exclude `password` and `api_key` from
|
||||||
`UserProfile` rows. The import process calls
|
`UserProfile` rows. The import process calls
|
||||||
`set_unusable_password()`.
|
`set_unusable_password()`.
|
||||||
|
|
||||||
#### Public Realm Data
|
#### Public realm data
|
||||||
|
|
||||||
- models: `Realm/RealmDomain/RealmEmoji/RealmFilter/DefaultStream`
|
- models: `Realm/RealmDomain/RealmEmoji/RealmFilter/DefaultStream`
|
||||||
- asserts: `realm.json`
|
- asserts: `realm.json`
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Real-time Push and Events
|
# Real-time push and events
|
||||||
|
|
||||||
Zulip's "events system" is the server-to-client push system that
|
Zulip's "events system" is the server-to-client push system that
|
||||||
powers our real-time sync. This document explains how it works; to
|
powers our real-time sync. This document explains how it works; to
|
||||||
|
|
|
@ -27,7 +27,7 @@ changes made in source files will immediately take effect in open
|
||||||
browser windows, either by live-updating the CSS or reloading the
|
browser windows, either by live-updating the CSS or reloading the
|
||||||
browser window (following backend changes).
|
browser window (following backend changes).
|
||||||
|
|
||||||
## CSS Style guidelines
|
## CSS style guidelines
|
||||||
|
|
||||||
### Avoid duplicated code
|
### Avoid duplicated code
|
||||||
|
|
||||||
|
@ -147,7 +147,7 @@ relevant background as well.
|
||||||
### Primary build process
|
### Primary build process
|
||||||
|
|
||||||
Zulip's frontend is primarily JavaScript in the `static/js` directory;
|
Zulip's frontend is primarily JavaScript in the `static/js` directory;
|
||||||
we are working on migrating these to Typescript modules. Stylesheets
|
we are working on migrating these to TypeScript modules. Stylesheets
|
||||||
are written in the Sass extension of CSS (with the scss syntax), they
|
are written in the Sass extension of CSS (with the scss syntax), they
|
||||||
are converted from plain CSS, and we have yet to take full advantage of
|
are converted from plain CSS, and we have yet to take full advantage of
|
||||||
the features Sass offers. We use Webpack to transpile and build JS
|
the features Sass offers. We use Webpack to transpile and build JS
|
||||||
|
@ -237,7 +237,7 @@ server is restarted, files are copied into that directory.
|
||||||
without breaking the rendering of old messages (or doing a
|
without breaking the rendering of old messages (or doing a
|
||||||
mass-rerender of old messages).
|
mass-rerender of old messages).
|
||||||
|
|
||||||
### CommonJS/Typescript modules
|
### CommonJS/TypeScript modules
|
||||||
|
|
||||||
Webpack provides seamless interoperability between different module
|
Webpack provides seamless interoperability between different module
|
||||||
systems such as CommonJS, AMD and ES6. Our JS files are written in the
|
systems such as CommonJS, AMD and ES6. Our JS files are written in the
|
||||||
|
@ -257,7 +257,7 @@ analysis. TypeScript uses an ES6-like module system. Any declaration
|
||||||
can be made public by adding the `export` keyword. Consuming
|
can be made public by adding the `export` keyword. Consuming
|
||||||
variables, functions, etc exported from another module should be done
|
variables, functions, etc exported from another module should be done
|
||||||
with the `import` statement as oppose to accessing them from the
|
with the `import` statement as oppose to accessing them from the
|
||||||
global `window` scope. Internally our typescript compiler is
|
global `window` scope. Internally our TypeScript compiler is
|
||||||
configured to transpile TS to the ES6 module system.
|
configured to transpile TS to the ES6 module system.
|
||||||
|
|
||||||
Read more about these module systems here:
|
Read more about these module systems here:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
########################
|
########################
|
||||||
Subsystems Documentation
|
Subsystems documentation
|
||||||
########################
|
########################
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# UI: Input Pills
|
# UI: input pills
|
||||||
|
|
||||||
This is a high level and API explanation of the input pill interface in the
|
This is a high level and API explanation of the input pill interface in the
|
||||||
frontend of the Zulip web application.
|
frontend of the Zulip web application.
|
||||||
|
@ -15,7 +15,7 @@ A pill container should have the following markup:
|
||||||
|
|
||||||
The pills will automatically be inserted in before the ".input" in order.
|
The pills will automatically be inserted in before the ".input" in order.
|
||||||
|
|
||||||
## Basic Usage
|
## Basic usage
|
||||||
|
|
||||||
```js
|
```js
|
||||||
var pill_containter = $("#input_container");
|
var pill_containter = $("#input_container");
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Logging and Error reporting
|
# Logging and error reporting
|
||||||
|
|
||||||
Having a good system for logging error reporting is essential to
|
Having a good system for logging error reporting is essential to
|
||||||
making a large project like Zulip successful. Without reliable error
|
making a large project like Zulip successful. Without reliable error
|
||||||
|
|
|
@ -196,7 +196,7 @@ and users are generally writing quickly. Zulip's Markdown strategy is
|
||||||
based on the principles of giving users the power they need to express
|
based on the principles of giving users the power they need to express
|
||||||
complicated ideas in a chat context while minimizing those two error rates.
|
complicated ideas in a chat context while minimizing those two error rates.
|
||||||
|
|
||||||
## Zulip's Changes to Markdown
|
## Zulip's changes to Markdown
|
||||||
|
|
||||||
Below, we document the changes that Zulip has against stock
|
Below, we document the changes that Zulip has against stock
|
||||||
Python-Markdown; some of the features we modify / disable may already
|
Python-Markdown; some of the features we modify / disable may already
|
||||||
|
|
|
@ -9,14 +9,14 @@ The
|
||||||
[production docs on multiple realms](../production/multiple-organizations.md)
|
[production docs on multiple realms](../production/multiple-organizations.md)
|
||||||
are likely also relevant reading.
|
are likely also relevant reading.
|
||||||
|
|
||||||
## Creating Realms
|
## Creating realms
|
||||||
|
|
||||||
There are two main methods for creating realms.
|
There are two main methods for creating realms.
|
||||||
|
|
||||||
* Using unique link generator
|
* Using unique link generator
|
||||||
* Enabling open realm creation
|
* Enabling open realm creation
|
||||||
|
|
||||||
#### Using Unique Link Generator
|
#### Using unique link generator
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./manage.py generate_realm_creation_link
|
./manage.py generate_realm_creation_link
|
||||||
|
@ -28,10 +28,10 @@ after the creation of the realm. The link also expires if not used
|
||||||
within 7 days. The expiration period can be changed by modifying
|
within 7 days. The expiration period can be changed by modifying
|
||||||
`REALM_CREATION_LINK_VALIDITY_DAYS` in settings.py.
|
`REALM_CREATION_LINK_VALIDITY_DAYS` in settings.py.
|
||||||
|
|
||||||
### Enabling Open Realm Creation
|
### Enabling open realm creation
|
||||||
|
|
||||||
If you want anyone to be able to create new realms on your server, you
|
If you want anyone to be able to create new realms on your server, you
|
||||||
can enable Open Realm Creation. This will add a **Create new
|
can enable open realm creation. This will add a **Create new
|
||||||
organization** link to your Zulip homepage footer, and anyone can
|
organization** link to your Zulip homepage footer, and anyone can
|
||||||
create a new realm by visiting this link (**/new**). This
|
create a new realm by visiting this link (**/new**). This
|
||||||
feature is disabled by default in production instances, and can be
|
feature is disabled by default in production instances, and can be
|
||||||
|
@ -55,7 +55,7 @@ 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.md) for
|
||||||
user-facing documentation on this.
|
user-facing documentation on this.
|
||||||
|
|
||||||
### Working With Subdomains In Development Environment
|
### Working with subdomains in development environment
|
||||||
|
|
||||||
By default, Linux does not provide a convenient way to use subdomains
|
By default, Linux does not provide a convenient way to use subdomains
|
||||||
in your local development environment. To solve this problem, we use
|
in your local development environment. To solve this problem, we use
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Schema Migrations
|
# Schema migrations
|
||||||
|
|
||||||
Zulip uses the [standard Django system for doing schema
|
Zulip uses the [standard Django system for doing schema
|
||||||
migrations](https://docs.djangoproject.com/en/1.10/topics/migrations/).
|
migrations](https://docs.djangoproject.com/en/1.10/topics/migrations/).
|
||||||
|
|
|
@ -284,7 +284,7 @@ of about 1 second per 2000 users subscribed to receive the message.
|
||||||
While these delays may not be immediately obvious to users (Zulip,
|
While these delays may not be immediately obvious to users (Zulip,
|
||||||
like many other chat applications,
|
like many other chat applications,
|
||||||
[local echoes](../subsystems/markdown.md) messages that a user sends
|
[local echoes](../subsystems/markdown.md) messages that a user sends
|
||||||
as soon as the user hits “send”), latency beyond a second or two
|
as soon as the user hits “Send”), latency beyond a second or two
|
||||||
significantly impacts the feeling of interactivity in a chat
|
significantly impacts the feeling of interactivity in a chat
|
||||||
experience (i.e. it feels like everyone takes a long time to reply to
|
experience (i.e. it feels like everyone takes a long time to reply to
|
||||||
even simple questions).
|
even simple questions).
|
||||||
|
|
|
@ -231,7 +231,7 @@ but you don't want to have to modify the Zulip server codebase
|
||||||
to turn on those features. This is where our "zform"
|
to turn on those features. This is where our "zform"
|
||||||
architecture comes to the rescue.
|
architecture comes to the rescue.
|
||||||
|
|
||||||
## zform (Trivia Quiz bot)
|
## zform (trivia quiz bot)
|
||||||
|
|
||||||
This section will describe our "zform" architecture.
|
This section will describe our "zform" architecture.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
############
|
############
|
||||||
Code Testing
|
Code testing
|
||||||
############
|
############
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
|
@ -195,7 +195,7 @@ We use Puppet as our tool to manage configuration files, using
|
||||||
puppet "manifests." To lint puppet manifests, we use the "parser validate"
|
puppet "manifests." To lint puppet manifests, we use the "parser validate"
|
||||||
option of puppet.
|
option of puppet.
|
||||||
|
|
||||||
#### HTML Templates
|
#### HTML templates
|
||||||
|
|
||||||
Zulip uses two HTML templating systems:
|
Zulip uses two HTML templating systems:
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ This doc assumes you know how to set up a local development server
|
||||||
and open the Zulip app in the browser. It also assumes a basic
|
and open the Zulip app in the browser. It also assumes a basic
|
||||||
knowledge of how to use Zulip.
|
knowledge of how to use Zulip.
|
||||||
|
|
||||||
## Basic Stuff ##
|
## Basic stuff ##
|
||||||
|
|
||||||
When testing Zulip manually, here are things to focus on:
|
When testing Zulip manually, here are things to focus on:
|
||||||
|
|
||||||
|
@ -453,7 +453,7 @@ Test per-stream options:
|
||||||
messages view
|
messages view
|
||||||
- Verify stream subscriber counts in the main stream view
|
- Verify stream subscriber counts in the main stream view
|
||||||
|
|
||||||
### User Settings ###
|
### User settings ###
|
||||||
|
|
||||||
You can modify per-user settings by choosing "Settings" in the gear menu.
|
You can modify per-user settings by choosing "Settings" in the gear menu.
|
||||||
Do these tasks as Cordelia.
|
Do these tasks as Cordelia.
|
||||||
|
@ -492,7 +492,7 @@ Do these tasks as Cordelia.
|
||||||
- Turn on/off "Enable desktop notifications for new streams" and test.
|
- Turn on/off "Enable desktop notifications for new streams" and test.
|
||||||
(We may eliminate this option soon.)
|
(We may eliminate this option soon.)
|
||||||
|
|
||||||
### Keyboard Shortcuts ###
|
### Keyboard shortcuts ###
|
||||||
|
|
||||||
We mostly test keyboard shortcuts as part of other tasks.
|
We mostly test keyboard shortcuts as part of other tasks.
|
||||||
|
|
||||||
|
|
|
@ -87,7 +87,7 @@ an `Any` or `# type: ignore[code]` so you're not blocked waiting for help,
|
||||||
add a `# TODO: ` comment so it doesn't get forgotten in code review,
|
add a `# TODO: ` comment so it doesn't get forgotten in code review,
|
||||||
and ask for help in chat.zulip.org.
|
and ask for help in chat.zulip.org.
|
||||||
|
|
||||||
## mypy stubs for third-party modules.
|
## Mypy stubs for third-party modules
|
||||||
|
|
||||||
For the Python standard library and some popular third-party modules,
|
For the Python standard library and some popular third-party modules,
|
||||||
the [typeshed project](https://github.com/python/typeshed) has
|
the [typeshed project](https://github.com/python/typeshed) has
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Testing Philosophy
|
# Testing philosophy
|
||||||
|
|
||||||
Zulip's automated tests are a huge part of what makes the project able
|
Zulip's automated tests are a huge part of what makes the project able
|
||||||
to make progress. This page records some of the key principles behind
|
to make progress. This page records some of the key principles behind
|
||||||
|
@ -195,4 +195,3 @@ these tests are defense in depth; the main way we prevent invalid
|
||||||
access to streams is not offering developers a way to get a Stream
|
access to streams is not offering developers a way to get a Stream
|
||||||
object in server code except as mediated through these security check
|
object in server code except as mediated through these security check
|
||||||
functions.
|
functions.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Web frontend black-box casperjs tests
|
# Web frontend black-box CasperJS tests
|
||||||
|
|
||||||
These live in `frontend_tests/casper_tests/`. This is a "black box"
|
These live in `frontend_tests/casper_tests/`. This is a "black box"
|
||||||
integration test; we load the frontend in a real (headless) browser,
|
integration test; we load the frontend in a real (headless) browser,
|
||||||
|
@ -17,7 +17,7 @@ You can run the casper tests with `./tools/test-js-with-casper` or as
|
||||||
`./tools/test-js-with-casper 06-settings.js` to run a single test file
|
`./tools/test-js-with-casper 06-settings.js` to run a single test file
|
||||||
from `frontend_tests/casper_tests/`.
|
from `frontend_tests/casper_tests/`.
|
||||||
|
|
||||||
## Debugging Casper.JS
|
## Debugging CasperJS
|
||||||
|
|
||||||
When a Casper test fails, the first things to check (before you bother
|
When a Casper test fails, the first things to check (before you bother
|
||||||
trying to use the Casper debugging tools are:
|
trying to use the Casper debugging tools are:
|
||||||
|
@ -46,7 +46,7 @@ can sometimes give insight into exactly what's happening.
|
||||||
|
|
||||||
### Remote debugging
|
### Remote debugging
|
||||||
|
|
||||||
Casper.js (via PhantomJS) has support for remote debugging. However, it
|
CasperJS (via PhantomJS) has support for remote debugging. However, it
|
||||||
is not perfect. Here are some steps for using it and gotchas you might
|
is not perfect. Here are some steps for using it and gotchas you might
|
||||||
want to know; you'll likely also want to read the section on writing
|
want to know; you'll likely also want to read the section on writing
|
||||||
tests (below) if you get stuck, since the advice on how to write
|
tests (below) if you get stuck, since the advice on how to write
|
||||||
|
|
|
@ -298,7 +298,7 @@ A common use is to prevent a call to a third-party service from using
|
||||||
the Internet; `git grep mock.patch | grep requests` is a good way to
|
the Internet; `git grep mock.patch | grep requests` is a good way to
|
||||||
find several examples of doing this.
|
find several examples of doing this.
|
||||||
|
|
||||||
## Zulip Testing Philosophy
|
## Zulip testing philosophy
|
||||||
|
|
||||||
If there is one word to describe Zulip's philosophy for writing tests,
|
If there is one word to describe Zulip's philosophy for writing tests,
|
||||||
it is probably "flexible." (Hopefully "thorough" goes without saying.)
|
it is probably "flexible." (Hopefully "thorough" goes without saying.)
|
||||||
|
|
|
@ -7,7 +7,7 @@ following general translation rules.
|
||||||
|
|
||||||
## Rules
|
## Rules
|
||||||
|
|
||||||
### Formal or Informal?
|
### Formal or informal?
|
||||||
|
|
||||||
**Informal.**
|
**Informal.**
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ to get a feeling for the vocabulary.
|
||||||
|
|
||||||
* Balance common verbs and nouns with specific IT-related translations
|
* Balance common verbs and nouns with specific IT-related translations
|
||||||
of English terms - this can be tricky, try to check how other resources
|
of English terms - this can be tricky, try to check how other resources
|
||||||
were translated (e.g. GMail, Microsoft websites, Facebook) to decide
|
were translated (e.g. Gmail, Microsoft websites, Facebook) to decide
|
||||||
what wouldn't sound awkward / rude in German.
|
what wouldn't sound awkward / rude in German.
|
||||||
|
|
||||||
* For additional translation information, feel free to check out
|
* For additional translation information, feel free to check out
|
||||||
|
@ -144,7 +144,7 @@ Since we try to avoid concatenating words whenever possible, don't use
|
||||||
We go with "markiert" instead of "gesternt" (which is not even a proper
|
We go with "markiert" instead of "gesternt" (which is not even a proper
|
||||||
German word) here, since it comes closer to the original meaning of "starred".
|
German word) here, since it comes closer to the original meaning of "starred".
|
||||||
|
|
||||||
*"Markierte Nachricht" (GMail, Transifex),
|
*"Markierte Nachricht" (Gmail, Transifex),
|
||||||
"Nachricht mit Stern" (WhatsApp)*
|
"Nachricht mit Stern" (WhatsApp)*
|
||||||
|
|
||||||
*"Bereich" (Transifex), "Community" (Google+)*
|
*"Bereich" (Transifex), "Community" (Google+)*
|
||||||
|
|
|
@ -16,7 +16,7 @@ Use informal Hindi for translation:
|
||||||
|
|
||||||
* Balance common verbs and nouns with specific IT-related translations
|
* Balance common verbs and nouns with specific IT-related translations
|
||||||
of English terms - this can be tricky, try to check how other
|
of English terms - this can be tricky, try to check how other
|
||||||
resources were translated (e.g. GMail, Microsoft websites, Facebook)
|
resources were translated (e.g. Gmail, Microsoft websites, Facebook)
|
||||||
to decide what wouldn't sound awkward / rude in Hindi.
|
to decide what wouldn't sound awkward / rude in Hindi.
|
||||||
|
|
||||||
Some terms are very tricky to translate, so be sure to communicate
|
Some terms are very tricky to translate, so be sure to communicate
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Internationalization for Developers
|
# Internationalization for developers
|
||||||
|
|
||||||
Zulip, like many popular applications, is designed with
|
Zulip, like many popular applications, is designed with
|
||||||
internationalization (i18n) in mind, which means users can fully use
|
internationalization (i18n) in mind, which means users can fully use
|
||||||
|
|
|
@ -30,7 +30,7 @@ Use semi-formal Polish for translation, some specifics:
|
||||||
|
|
||||||
* Balance common verbs and nouns with specific IT-related translations
|
* Balance common verbs and nouns with specific IT-related translations
|
||||||
of English terms - this can be tricky, try to check how other
|
of English terms - this can be tricky, try to check how other
|
||||||
resources were translated (e.g. GMail, Microsoft websites, Facebook)
|
resources were translated (e.g. Gmail, Microsoft websites, Facebook)
|
||||||
to decide what wouldn't sound awkward in Polish.
|
to decide what wouldn't sound awkward in Polish.
|
||||||
|
|
||||||
Some terms are very tricky to translate, so be sure to communicate
|
Some terms are very tricky to translate, so be sure to communicate
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Russian Translation Style Guide
|
# Russian translation style guide
|
||||||
|
|
||||||
Вот некоторые правила, которых стоит придерживаться для поддержания
|
Вот некоторые правила, которых стоит придерживаться для поддержания
|
||||||
качества перевода. Они продиктованы опытом - собственным и коллег,
|
качества перевода. Они продиктованы опытом - собственным и коллег,
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Spanish Translation Style Guide
|
# Spanish translation style guide
|
||||||
|
|
||||||
Use informal Spanish for translation:
|
Use informal Spanish for translation:
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ Use informal Spanish for translation:
|
||||||
|
|
||||||
* Balance common verbs and nouns with specific IT-related translations
|
* Balance common verbs and nouns with specific IT-related translations
|
||||||
of English terms - this can be tricky, try to check how other
|
of English terms - this can be tricky, try to check how other
|
||||||
resources were translated (e.g. GMail, Microsoft websites, Facebook)
|
resources were translated (e.g. Gmail, Microsoft websites, Facebook)
|
||||||
to decide what wouldn't sound awkward / rude in Spanish.
|
to decide what wouldn't sound awkward / rude in Spanish.
|
||||||
|
|
||||||
* Latest RAE rule ("solo" should
|
* Latest RAE rule ("solo" should
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Translation Guidelines
|
# Translation guidelines
|
||||||
|
|
||||||
Zulip's has full support for Unicode (and partial support for RTL
|
Zulip's has full support for Unicode (and partial support for RTL
|
||||||
languages), so you can use your preferred language everywhere in
|
languages), so you can use your preferred language everywhere in
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
###################
|
###################
|
||||||
Developer Tutorials
|
Developer tutorials
|
||||||
###################
|
###################
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Life of a Request
|
# Life of a request
|
||||||
|
|
||||||
It can sometimes be confusing to figure out how to write a new feature,
|
It can sometimes be confusing to figure out how to write a new feature,
|
||||||
or debug an existing one. Let us try to follow a request through the
|
or debug an existing one. Let us try to follow a request through the
|
||||||
|
@ -37,7 +37,7 @@ location /static/ {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Nginx routes other requests [between django and tornado][tornado-django]
|
## Nginx routes other requests [between Django and Tornado][tornado-django]
|
||||||
|
|
||||||
[tornado-django]: ../overview/architecture-overview.html?highlight=tornado#django-and-tornado
|
[tornado-django]: ../overview/architecture-overview.html?highlight=tornado#django-and-tornado
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ organized. And finally, the
|
||||||
[message sending](../subsystems/sending-messages.md) documentation on
|
[message sending](../subsystems/sending-messages.md) documentation on
|
||||||
the additional complexity involved in sending messages.
|
the additional complexity involved in sending messages.
|
||||||
|
|
||||||
## General Process
|
## General process
|
||||||
|
|
||||||
### Files impacted
|
### Files impacted
|
||||||
|
|
||||||
|
@ -50,12 +50,12 @@ organization in Zulip). The following files are involved in the process:
|
||||||
(ex: pushing an organization change to other open browsers and updating
|
(ex: pushing an organization change to other open browsers and updating
|
||||||
the application's state).
|
the application's state).
|
||||||
|
|
||||||
**Backend Testing**
|
**Backend testing**
|
||||||
- `zerver/tests/test_realm.py`: end-to-end API tests for updating realm settings.
|
- `zerver/tests/test_realm.py`: end-to-end API tests for updating realm settings.
|
||||||
- `zerver/tests/test_events.py`: tests for possible race bugs in the
|
- `zerver/tests/test_events.py`: tests for possible race bugs in the
|
||||||
zerver/lib/events.py implementation.
|
zerver/lib/events.py implementation.
|
||||||
|
|
||||||
**Frontend Testing**
|
**Frontend testing**
|
||||||
- `frontend_tests/casper_tests/10-admin.js`: end-to-end tests for the organization
|
- `frontend_tests/casper_tests/10-admin.js`: end-to-end tests for the organization
|
||||||
admin settings pages.
|
admin settings pages.
|
||||||
- `frontend_tests/node_tests/dispatch.js`
|
- `frontend_tests/node_tests/dispatch.js`
|
||||||
|
@ -134,7 +134,7 @@ or JavaScript/TypeScript code that generates user-facing strings, be sure to
|
||||||
|
|
||||||
**Testing:** There are two types of frontend tests: node-based unit
|
**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
|
tests and blackbox end-to-end tests. The blackbox tests are run in a
|
||||||
headless browser using Casper.js and are located in
|
headless browser using CasperJS and are located in
|
||||||
`frontend_tests/casper_tests/`. The unit tests use Node's `assert`
|
`frontend_tests/casper_tests/`. The unit tests use Node's `assert`
|
||||||
module are located in `frontend_tests/node_tests/`. For more
|
module are located in `frontend_tests/node_tests/`. For more
|
||||||
information on writing and running tests, see the
|
information on writing and running tests, see the
|
||||||
|
@ -461,7 +461,7 @@ with the new value. E.g., for `authentication_methods`, we created
|
||||||
This completes the backend implementation. A great next step is to
|
This completes the backend implementation. A great next step is to
|
||||||
write automated backend tests for your new feature.
|
write automated backend tests for your new feature.
|
||||||
|
|
||||||
### Backend Tests
|
### Backend tests
|
||||||
|
|
||||||
To test the new setting syncs correctly with the `property_types`
|
To test the new setting syncs correctly with the `property_types`
|
||||||
framework, one usually just needs to add a line in each of
|
framework, one usually just needs to add a line in each of
|
||||||
|
@ -637,7 +637,7 @@ Here are few important cases you should consider when testing your changes:
|
||||||
buttons, so changes and saving in one subsection shouldn't affect
|
buttons, so changes and saving in one subsection shouldn't affect
|
||||||
the others.
|
the others.
|
||||||
|
|
||||||
### Front End Tests
|
### Front end tests
|
||||||
|
|
||||||
A great next step is to write front end tests. There are two types of
|
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
|
frontend tests: [node-based unit tests](../testing/testing-with-node.md) and
|
||||||
|
|
|
@ -154,13 +154,13 @@ Some titles have been shortened for organizational purposes.
|
||||||
|
|
||||||
[TypeScript Declaration Files Introduction]: https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html
|
[TypeScript Declaration Files Introduction]: https://www.typescriptlang.org/docs/handbook/declaration-files/introduction.html
|
||||||
|
|
||||||
## Git/Version Control Systems (VCS)
|
## Git/version control systems (VCS)
|
||||||
|
|
||||||
You may want to take a look first at our [Git and GitHub guide][].
|
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.md
|
||||||
|
|
||||||
## Computer Science/Algorithms
|
## Computer science/algorithms
|
||||||
|
|
||||||
*Blog* - [GeeksforGeeks][]
|
*Blog* - [GeeksforGeeks][]
|
||||||
|
|
||||||
|
@ -216,7 +216,7 @@ You may want to take a look first at our [Git and GitHub guide][].
|
||||||
|
|
||||||
[List of good projects for new contributors]: https://github.com/MunGell/awesome-for-beginners
|
[List of good projects for new contributors]: https://github.com/MunGell/awesome-for-beginners
|
||||||
|
|
||||||
## Competitions/Camps
|
## Competitions/camps
|
||||||
|
|
||||||
[CodeForces][]
|
[CodeForces][]
|
||||||
|
|
||||||
|
@ -226,7 +226,7 @@ You may want to take a look first at our [Git and GitHub guide][].
|
||||||
|
|
||||||
[Free Code Camp]: https://www.freecodecamp.com
|
[Free Code Camp]: https://www.freecodecamp.com
|
||||||
|
|
||||||
## Massive Open Online Courses (MOOC) Platforms
|
## Massive open online courses (MOOC) platforms
|
||||||
|
|
||||||
[Coursera][]
|
[Coursera][]
|
||||||
|
|
||||||
|
|
|
@ -340,7 +340,7 @@ extremely useful and even easy to use (at least the 99% of the time).
|
||||||
|
|
||||||
To learn more about how to use it, read
|
To learn more about how to use it, read
|
||||||
[our docs](../git/index.md) on Git and
|
[our docs](../git/index.md) on Git and
|
||||||
Github.
|
GitHub.
|
||||||
|
|
||||||
[This cheatsheet][git-cheat-detailed]
|
[This cheatsheet][git-cheat-detailed]
|
||||||
will be useful in your journey, as well.
|
will be useful in your journey, as well.
|
||||||
|
|
|
@ -222,7 +222,7 @@ casper.then(function () {
|
||||||
casper.fill(
|
casper.fill(
|
||||||
'form[action^="/json/messages"]',
|
'form[action^="/json/messages"]',
|
||||||
{
|
{
|
||||||
content: "**Markdown Preview** >> Test for Markdown preview",
|
content: "**Markdown preview** >> Test for Markdown preview",
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
@ -235,7 +235,7 @@ casper.then(function () {
|
||||||
casper.waitForSelectorTextChange("#preview_content", function () {
|
casper.waitForSelectorTextChange("#preview_content", function () {
|
||||||
casper.test.assertEquals(
|
casper.test.assertEquals(
|
||||||
casper.getHTML("#preview_content"),
|
casper.getHTML("#preview_content"),
|
||||||
"<p><strong>Markdown Preview</strong> >> Test for Markdown preview</p>",
|
"<p><strong>Markdown preview</strong> >> Test for Markdown preview</p>",
|
||||||
"Check Markdown is previewed properly"
|
"Check Markdown is previewed properly"
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
|
@ -286,7 +286,7 @@ run_test("basic_chars", () => {
|
||||||
overlays.is_active = return_false;
|
overlays.is_active = return_false;
|
||||||
assert_mapping("d", "drafts.launch");
|
assert_mapping("d", "drafts.launch");
|
||||||
|
|
||||||
// Test opening and closing of Recent Topics
|
// Test opening and closing of recent topics
|
||||||
overlays.is_active = return_true;
|
overlays.is_active = return_true;
|
||||||
overlays.recent_topics_open = return_true;
|
overlays.recent_topics_open = return_true;
|
||||||
assert_mapping("t", "overlays.close_overlay");
|
assert_mapping("t", "overlays.close_overlay");
|
||||||
|
|
|
@ -192,12 +192,12 @@ async function test_markdown_rendering(page) {
|
||||||
"",
|
"",
|
||||||
);
|
);
|
||||||
await common.fill_form(page, 'form[action^="/json/messages"]', {
|
await common.fill_form(page, 'form[action^="/json/messages"]', {
|
||||||
content: "**Markdown Preview** >> Test for Markdown preview",
|
content: "**Markdown preview** >> Test for Markdown preview",
|
||||||
});
|
});
|
||||||
await page.click("#markdown_preview");
|
await page.click("#markdown_preview");
|
||||||
await page.waitForSelector("#preview_content", {visible: true});
|
await page.waitForSelector("#preview_content", {visible: true});
|
||||||
const expected_markdown_html =
|
const expected_markdown_html =
|
||||||
"<p><strong>Markdown Preview</strong> >> Test for Markdown preview</p>";
|
"<p><strong>Markdown preview</strong> >> Test for Markdown preview</p>";
|
||||||
await page.waitForFunction(() => $("#preview_content").html() !== "");
|
await page.waitForFunction(() => $("#preview_content").html() !== "");
|
||||||
markdown_preview_element = await page.$("#preview_content");
|
markdown_preview_element = await page.$("#preview_content");
|
||||||
assert.equal(
|
assert.equal(
|
||||||
|
|
|
@ -316,7 +316,7 @@ exports.create = function (opts) {
|
||||||
const id = $pill.data("id");
|
const id = $pill.data("id");
|
||||||
funcs.removePill(id);
|
funcs.removePill(id);
|
||||||
$next.trigger("focus");
|
$next.trigger("focus");
|
||||||
// the "backspace" key in FireFox will go back a page if you do
|
// the "backspace" key in Firefox will go back a page if you do
|
||||||
// not prevent it.
|
// not prevent it.
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
}
|
}
|
||||||
|
|
|
@ -336,7 +336,7 @@ exports.user_initiated_animate_scroll = function (scroll_amount) {
|
||||||
exports.recenter_view = function (message, opts) {
|
exports.recenter_view = function (message, opts) {
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
|
|
||||||
// Barnowl-style recentering: if the pointer is too high, move it to
|
// BarnOwl-style recentering: if the pointer is too high, move it to
|
||||||
// the 1/2 marks. If the pointer is too low, move it to the 1/7 mark.
|
// the 1/2 marks. If the pointer is too low, move it to the 1/7 mark.
|
||||||
// See keep_pointer_in_view() for related logic to keep the pointer onscreen.
|
// See keep_pointer_in_view() for related logic to keep the pointer onscreen.
|
||||||
|
|
||||||
|
|
|
@ -30,16 +30,16 @@ mirror script instead of using Webathena.</p>
|
||||||
web application will warn you if the Zephyr mirroring script is
|
web application will warn you if the Zephyr mirroring script is
|
||||||
not running.</p>
|
not running.</p>
|
||||||
|
|
||||||
<p>If you already have Barnowl running in screen/tmux somewhere,
|
<p>If you already have BarnOwl running in screen/tmux somewhere,
|
||||||
you can just run:</p>
|
you can just run:</p>
|
||||||
|
|
||||||
<p><code>/mit/tabbott/zulip/zephyr_mirror.py</code></p>
|
<p><code>/mit/tabbott/zulip/zephyr_mirror.py</code></p>
|
||||||
|
|
||||||
<p>inside that screen session.</p>
|
<p>inside that screen session.</p>
|
||||||
|
|
||||||
<h4>Mirroring without a Barnowl session</h4>
|
<h4>Mirroring without a BarnOwl session</h4>
|
||||||
|
|
||||||
<p>If you are not already running a screen/tmux for Barnowl, you
|
<p>If you are not already running a screen/tmux for BarnOwl, you
|
||||||
can setup a screen session to run the Zephyr mirroring script by
|
can setup a screen session to run the Zephyr mirroring script by
|
||||||
running the following on a dialup such
|
running the following on a dialup such
|
||||||
as <a href="https://linerva.mit.edu">linerva.mit.edu</a>:</p>
|
as <a href="https://linerva.mit.edu">linerva.mit.edu</a>:</p>
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
<code>/mit/tabbott/zulip/zephyr_mirror.py --sync-subscriptions</code></p>
|
<code>/mit/tabbott/zulip/zephyr_mirror.py --sync-subscriptions</code></p>
|
||||||
|
|
||||||
<p> <strong>NOTE</strong>: Zulip supports several ways to control what messages you want to read
|
<p> <strong>NOTE</strong>: Zulip supports several ways to control what messages you want to read
|
||||||
right now, but Zulip does not yet have a direct equivalent to Barnowl filters.
|
right now, but Zulip does not yet have a direct equivalent to BarnOwl filters.
|
||||||
If you have more subscriptions than you generally read, we recommend that you use
|
If you have more subscriptions than you generally read, we recommend that you use
|
||||||
Zulip's "Mute" option to hide those subscriptions from your
|
Zulip's "Mute" option to hide those subscriptions from your
|
||||||
home view that you less commonly read. You can still easily access those streams
|
home view that you less commonly read. You can still easily access those streams
|
||||||
|
|
|
@ -12,9 +12,9 @@ images and/or website links.
|
||||||
|
|
||||||
{settings_tab|organization-settings}
|
{settings_tab|organization-settings}
|
||||||
|
|
||||||
1. Under **Other Settings**, toggle **Show previews of uploaded and linked images**.
|
1. Under **Other settings**, toggle **Show previews of uploaded and linked images**.
|
||||||
|
|
||||||
1. Under **Other Settings**, toggle **Show previews of linked websites**.
|
1. Under **Other settings**, toggle **Show previews of linked websites**.
|
||||||
|
|
||||||
{!save-changes.md!}
|
{!save-changes.md!}
|
||||||
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ Organization administrators can also configure a default syntax
|
||||||
highlighting language. In this configuration, one can use ````text`
|
highlighting language. In this configuration, one can use ````text`
|
||||||
to display content without any syntax highlighting.
|
to display content without any syntax highlighting.
|
||||||
|
|
||||||
## Latex
|
## LaTeX
|
||||||
~~~
|
~~~
|
||||||
Inline: $$O(n^2)$$
|
Inline: $$O(n^2)$$
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# GDPR Compliance
|
# GDPR compliance
|
||||||
|
|
||||||
This page covers how Zulip interacts with the EU's landmark GDPR
|
This page covers how Zulip interacts with the EU's landmark GDPR
|
||||||
legislation; you can read the
|
legislation; you can read the
|
||||||
|
@ -13,7 +13,7 @@ give them control over how their personal data is collected,
|
||||||
processed, and used. The law applies to any company that collects or
|
processed, and used. The law applies to any company that collects or
|
||||||
processes the data of European consumers.
|
processes the data of European consumers.
|
||||||
|
|
||||||
## Controllers and Processors
|
## Controllers and processors
|
||||||
|
|
||||||
There are two key relationships that are defined in the GDPR. As a
|
There are two key relationships that are defined in the GDPR. As a
|
||||||
customer of Zulip Cloud, you operate as the controller when using our
|
customer of Zulip Cloud, you operate as the controller when using our
|
||||||
|
@ -35,7 +35,7 @@ personal data. These entities are commonly referred to as
|
||||||
sub-processors. For example, Kandra Labs leverages cloud service
|
sub-processors. For example, Kandra Labs leverages cloud service
|
||||||
providers like Amazon Web Services and Mailgun to host Zulip Cloud.
|
providers like Amazon Web Services and Mailgun to host Zulip Cloud.
|
||||||
|
|
||||||
## How Zulip Supports GDPR Compliance
|
## How Zulip supports GDPR compliance
|
||||||
|
|
||||||
We’re committed to the compliance of all parties including you,
|
We’re committed to the compliance of all parties including you,
|
||||||
third-parties, and us.
|
third-parties, and us.
|
||||||
|
@ -66,7 +66,7 @@ this page but not defined have the meaning set forth in Zulip's Terms
|
||||||
of Service or superseding written agreement between Customer and
|
of Service or superseding written agreement between Customer and
|
||||||
Kandra Labs (the "Agreement").
|
Kandra Labs (the "Agreement").
|
||||||
|
|
||||||
### Third Parties
|
### Third parties
|
||||||
|
|
||||||
Zulip currently uses third party Subprocessors to provide
|
Zulip currently uses third party Subprocessors to provide
|
||||||
infrastructure services, and to help us provide customer support and
|
infrastructure services, and to help us provide customer support and
|
||||||
|
|
|
@ -9,7 +9,7 @@ W3C's Web Content Accessibility Guidelines.
|
||||||
|
|
||||||
2. Under **Display settings**, select **High contrast mode**.
|
2. Under **Display settings**, select **High contrast mode**.
|
||||||
|
|
||||||
## Related Articles
|
## Related articles
|
||||||
|
|
||||||
* [Accessibility in Zulip](https://zulip.readthedocs.io/en/latest/contributing/accessibility.html)
|
* [Accessibility in Zulip](https://zulip.readthedocs.io/en/latest/contributing/accessibility.html)
|
||||||
* [View emoji as text](/help/view-emoji-as-text)
|
* [View emoji as text](/help/view-emoji-as-text)
|
||||||
|
|
|
@ -115,7 +115,7 @@
|
||||||
* [Export your organization](/help/export-your-organization)
|
* [Export your organization](/help/export-your-organization)
|
||||||
* [Change organization URL](/help/change-organization-url)
|
* [Change organization URL](/help/change-organization-url)
|
||||||
* [Deactivate your organization](/help/deactivate-your-organization)
|
* [Deactivate your organization](/help/deactivate-your-organization)
|
||||||
* [GDPR Compliance](/help/gdpr-compliance)
|
* [GDPR compliance](/help/gdpr-compliance)
|
||||||
|
|
||||||
## Organization settings
|
## Organization settings
|
||||||
* [Restrict stream creation](/help/configure-who-can-create-streams)
|
* [Restrict stream creation](/help/configure-who-can-create-streams)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Zulip User Documentation
|
# Zulip user documentation
|
||||||
|
|
||||||
Zulip is a group chat app. Its most distinctive characteristic is that
|
Zulip is a group chat app. Its most distinctive characteristic is that
|
||||||
conversation within an organization is divided into “**streams**”
|
conversation within an organization is divided into “**streams**”
|
||||||
|
|
|
@ -137,10 +137,10 @@ title="thumbs up"/>**: `+`
|
||||||
(including All messages), and don't contribute to unread counts. Read more about
|
(including All messages), and don't contribute to unread counts. Read more about
|
||||||
[muting topics](/help/mute-a-topic).
|
[muting topics](/help/mute-a-topic).
|
||||||
|
|
||||||
## Recent Topics
|
## Recent topics
|
||||||
|
|
||||||
* **View Recent Topics**: `t`
|
* **View recent topics**: `t`
|
||||||
* **Hide Recent Topics**: `Esc`
|
* **Hide recent topics**: `Esc`
|
||||||
|
|
||||||
Keyboard navigation (e.g. arrow keys) works as expected.
|
Keyboard navigation (e.g. arrow keys) works as expected.
|
||||||
Use `Enter` to engage with elements.
|
Use `Enter` to engage with elements.
|
||||||
|
|
|
@ -32,6 +32,6 @@ Muted streams still appear in the left sidebar, though they are grayed out.
|
||||||
|
|
||||||
{end_tabs}
|
{end_tabs}
|
||||||
|
|
||||||
## Related Articles
|
## Related articles
|
||||||
|
|
||||||
* [Mute a topic](/help/mute-a-topic)
|
* [Mute a topic](/help/mute-a-topic)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Organize the Streams sidebar
|
# Organize the streams sidebar
|
||||||
|
|
||||||
At an organization level, we recommend starting with a few streams and
|
At an organization level, we recommend starting with a few streams and
|
||||||
growing organically, and doing a cleanup once every year or two to archive
|
growing organically, and doing a cleanup once every year or two to archive
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Restrict Profile picture change
|
# Restrict profile picture change
|
||||||
|
|
||||||
{!admin-only.md!}
|
{!admin-only.md!}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# SAML Authentication
|
# SAML authentication
|
||||||
|
|
||||||
Zulip supports using SAML authentication for Single Sign On, both when
|
Zulip supports using SAML authentication for Single Sign On, both when
|
||||||
self-hosting or on the Zulip Cloud Plus plan.
|
self-hosting or on the Zulip Cloud Plus plan.
|
||||||
|
@ -57,7 +57,7 @@ Zulip with various common SAML Identity Providers.
|
||||||
* Optionally you can also send us an icon that should be shown on the button.
|
* Optionally you can also send us an icon that should be shown on the button.
|
||||||
1. We will take care of the server-side setup and let you know as soon as it's ready.
|
1. We will take care of the server-side setup and let you know as soon as it's ready.
|
||||||
|
|
||||||
## Related Articles
|
## Related articles
|
||||||
|
|
||||||
* [SAML configuration][saml-readthedocs] for self-hosting.
|
* [SAML configuration][saml-readthedocs] for self-hosting.
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Zulip in a Terminal
|
# Zulip in a terminal
|
||||||
|
|
||||||
At present, there are a few alpha-quality implementations of a terminal
|
At present, there are a few alpha-quality implementations of a terminal
|
||||||
client for Zulip:
|
client for Zulip:
|
||||||
|
@ -8,9 +8,9 @@ terminal interface for Zulip using [Urwid](http://urwid.org). It is
|
||||||
written in python and is being very actively developed; feedback and
|
written in python and is being very actively developed; feedback and
|
||||||
bug reports are very welcome!
|
bug reports are very welcome!
|
||||||
|
|
||||||
* [Barnowl](https://github.com/aglasgall/barnowl/tree/zulip) is a
|
* [BarnOwl](https://github.com/aglasgall/barnowl/tree/zulip) is a
|
||||||
multi-protocol terminal client for various chat systems, written in
|
multi-protocol terminal client for various chat systems, written in
|
||||||
Perl. [Barnowl itself](https://barnowl.mit.edu/) is very mature
|
Perl. [BarnOwl itself](https://barnowl.mit.edu/) is very mature
|
||||||
software, and the Zulip integration has been used for a few years, but
|
software, and the Zulip integration has been used for a few years, but
|
||||||
it isn't integrated into the mainline branch and needs work on
|
it isn't integrated into the mainline branch and needs work on
|
||||||
documentation.
|
documentation.
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
that previously created
|
that previously created
|
||||||
<a href="https://www.ksplice.com">Ksplice</a>, software for
|
<a href="https://www.ksplice.com">Ksplice</a>, software for
|
||||||
live-patching a running Linux kernel. Zulip was inspired by
|
live-patching a running Linux kernel. Zulip was inspired by
|
||||||
the <a href="https://barnowl.mit.edu/">Barnowl</a> client for
|
the <a href="https://barnowl.mit.edu/">BarnOwl</a> client for
|
||||||
the <a href="https://en.wikipedia.org/wiki/Zephyr_(protocol)">Zephyr</a>
|
the <a href="https://en.wikipedia.org/wiki/Zephyr_(protocol)">Zephyr</a>
|
||||||
protocol, and the incredible community that Zephyr supported at MIT.
|
protocol, and the incredible community that Zephyr supported at MIT.
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Command(ZulipBaseCommand):
|
||||||
|
|
||||||
def add_arguments(self, parser: ArgumentParser) -> None:
|
def add_arguments(self, parser: ArgumentParser) -> None:
|
||||||
parser.add_argument('--entire-server', action="store_true", default=False,
|
parser.add_argument('--entire-server', action="store_true", default=False,
|
||||||
help="Send to every user on the server. ")
|
help="Send to every user on the server.")
|
||||||
parser.add_argument('--markdown-template-path', '--path',
|
parser.add_argument('--markdown-template-path', '--path',
|
||||||
dest='markdown_template_path',
|
dest='markdown_template_path',
|
||||||
required=True,
|
required=True,
|
||||||
|
|
|
@ -18,7 +18,7 @@ VIDEO_CHAT_PROVIDERS = {
|
||||||
def remove_google_hangouts_provider(apps: StateApps, schema_editor: DatabaseSchemaEditor) -> None:
|
def remove_google_hangouts_provider(apps: StateApps, schema_editor: DatabaseSchemaEditor) -> None:
|
||||||
# We are removing the Google Hangout integration because Google has
|
# We are removing the Google Hangout integration because Google has
|
||||||
# removed the Hangouts brand. All the realms that used Hangouts as
|
# removed the Hangouts brand. All the realms that used Hangouts as
|
||||||
# their video chat provided are now set to the default, jitsi.
|
# their video chat provided are now set to the default, Jitsi.
|
||||||
Realm = apps.get_model('zerver', 'Realm')
|
Realm = apps.get_model('zerver', 'Realm')
|
||||||
Realm.objects.filter(video_chat_provider=VIDEO_CHAT_PROVIDERS['google_hangouts']['id']).update(
|
Realm.objects.filter(video_chat_provider=VIDEO_CHAT_PROVIDERS['google_hangouts']['id']).update(
|
||||||
video_chat_provider=VIDEO_CHAT_PROVIDERS['jitsi_meet']['id']
|
video_chat_provider=VIDEO_CHAT_PROVIDERS['jitsi_meet']['id']
|
||||||
|
|
|
@ -78,7 +78,7 @@ docs_without_macros = [
|
||||||
def render_markdown_path(markdown_file_path: str,
|
def render_markdown_path(markdown_file_path: str,
|
||||||
context: Mapping[str, Any]={},
|
context: Mapping[str, Any]={},
|
||||||
pure_markdown: bool=False) -> str:
|
pure_markdown: bool=False) -> str:
|
||||||
"""Given a path to a Markdown file, return the rendered html.
|
"""Given a path to a Markdown file, return the rendered HTML.
|
||||||
|
|
||||||
Note that this assumes that any HTML in the Markdown file is
|
Note that this assumes that any HTML in the Markdown file is
|
||||||
trusted; it is intended to be used for documentation, not user
|
trusted; it is intended to be used for documentation, not user
|
||||||
|
|
Loading…
Reference in New Issue