Go to file
Mateusz Mandera 52515a1560 presence: Tweak and document presence tuning values.
We're changing the ping interval from 50s to 60s, because that's what
the mobile apps have hardcoded currently, and backwards-compatibility
is more important there than the web app's previously hardcoded 50s.

For PRESENCE_PING_INTERVAL_SECS, the previous value hardcoded in both
clients was 140s, selected as "plenty of network/other latency more
than 2 x ACTIVE_PING_INTERVAL_MS". This is a pretty aggressive value;
even a single request being missed or 500ing can result in a user
appearing offline incorrectly. (There's a lag of up to one full ping
interval between when the other client checks in and when you check
in, and so we'll be at almost 2 ping intervals when you issue your
next request that might get an updated connection time from that
user).

To increase failure tolerance, we want to change the offline
threshhold from 2 x ACTIVE_PING_INTERVAL + 20s to 3 x
ACTIVE_PING_INTERVAL + 20s, aka 140s => 200s, to be more robust to
temporary failures causing us to display other users as offline.

Since the mobile apps currently have 140s and 60s hardcoded, it should
be safe to make this particular change; the mobile apps will just
remain more aggressive than the web app in marking users offline until
it uses the new API parameters.

The end result in that Zulip will be slightly less aggressive at
marking other users as offline if they go off the Internet. We will
likely be able to tune ACTIVE_PING_INTERVAL downwards once #16381 and
its follow-ups are completed, because it'll likely make these requests
much cheaper.
2023-02-21 12:10:43 -08:00
.github ci: Reduce production suite tarball retention from 14 days to 1. 2023-02-16 10:15:11 -05:00
.tx provision: Replace transifex-client with new transifex-cli. 2022-12-13 12:34:08 -08:00
.vscode vscode: Recommend remote development extension. 2021-11-03 16:03:46 -07:00
analytics settings: Add backend code for using user email_address_visibility setting. 2023-02-10 17:35:49 -08:00
api_docs presence: Return some presence params in the /register response. 2023-02-21 12:10:43 -08:00
confirmation registration: Track create organization page in GA. 2023-02-05 10:24:32 -08:00
corporate stripe: Change realm.plan_type when upgrading a realm to Plus plan. 2023-02-08 10:28:13 -08:00
docs docs: Update frontend_tests/puppeteer_lib/common.ts path. 2023-02-14 13:39:41 -08:00
frontend_tests presence: Tweak and document presence tuning values. 2023-02-21 12:10:43 -08:00
help help: Update URL references to new "Configure email visibility" page. 2023-02-10 18:15:56 -08:00
locale i18n: Sync latest unbranched translations from Transifex. 2023-01-17 13:20:49 -08:00
pgroonga black: Reformat with Black 23. 2023-02-02 10:40:13 -08:00
puppet puppet: wal-g is a tarball with a single file, not a directory. 2023-02-14 18:18:36 -05:00
requirements requirements: Upgrade Python requirements. 2023-02-03 16:36:54 -08:00
scripts log-search: Add a --timeline option to show gaps and overlaps. 2023-02-21 11:10:24 -08:00
static presence: Use server-provided params in the webapp. 2023-02-21 12:10:43 -08:00
stubs/taint actions: Split out zerver.actions.message_send. 2022-04-14 17:14:34 -07:00
templates reset: Tag "forgot password" text for translation. 2023-02-21 09:16:22 -08:00
tools ts: Pull in static assets via import. 2023-02-14 17:17:06 -05:00
var/puppeteer puppeteer_tests: Port to TypeScript. 2021-02-22 16:03:10 -08:00
zerver presence: Return some presence params in the /register response. 2023-02-21 12:10:43 -08:00
zilencer populate_db: Temporarily remove post-delete signal on AlertWord. 2023-02-17 13:59:11 -08:00
zproject presence: Tweak and document presence tuning values. 2023-02-21 12:10:43 -08:00
.browserslistrc zjsunit: Set browserslist target to current Node for Node tests. 2022-05-04 09:56:07 -07:00
.codecov.yml
.codespellignore contributor docs: Add a page on design discussions. 2022-09-30 12:15:04 -07:00
.editorconfig editorconfig: Restore indent_size = 2 for Markdown. 2021-08-20 23:14:37 -07:00
.eslintignore requirements: Remove Thumbor. 2021-05-06 20:07:32 -07:00
.eslintrc.json eslint: Add root: true. 2023-01-03 13:59:25 -08:00
.gitattributes .gitattributes: Mark *.bmp, *.bson, *.mp3, *.pdf as binary. 2022-02-07 18:51:06 -08:00
.gitignore lint: Replace pycodestyle and pyflakes with ruff. 2022-11-03 12:10:15 -07:00
.gitlint lint: Re-enable imperative-mood checking. 2021-02-23 14:54:07 -08:00
.mailmap mailmap: Add entry for rht. 2022-11-17 00:05:17 -08:00
.npmignore
.prettierignore api-docs: Move markdown files to top level directory. 2023-02-02 17:25:40 -08:00
.pyre_configuration pysa: Update .pyre_configuration to point to typeshed. 2020-09-22 15:44:47 -07:00
.readthedocs.yaml readthedocs: Add a configuration file. 2023-02-03 16:36:54 -08:00
.sonarcloud.properties tools: Configure Zulip to be scannable by SonarCloud. 2020-06-24 12:41:17 -07:00
.yarnrc
CODE_OF_CONDUCT.md contributor docs: Add guidelines on moderating the Zulip community. 2022-12-02 16:57:41 -08:00
CONTRIBUTING.md docs: Remove paragraph about getting help finding issues in contributing. 2023-01-17 14:51:53 -08:00
Dockerfile-postgresql docker: Document the PostgreSQL Dockerfile build steps. 2022-04-26 18:00:00 -07:00
LICENSE license: Move copyright notice from LICENSE to NOTICE. 2021-02-05 09:28:12 -08:00
NOTICE docs: Bump copyright year. 2021-02-05 09:28:15 -08:00
README.md README: Add Ruff badge. 2023-01-04 16:22:12 -08:00
SECURITY.md SECURITY.md: Reorder and make clearer how to subscribe to announcements. 2022-01-07 15:56:26 -08:00
Vagrantfile vagrant: Add Fedora 36 support. 2022-09-08 16:12:59 -07:00
babel.config.js dependencies: Upgrade JavaScript dependencies. 2023-01-04 12:30:04 -08:00
manage.py ruff: Fix SIM102 nested `if` statements. 2023-01-23 11:18:36 -08:00
package.json install-node: Upgrade Node.js to 18.14.0; manage Yarn with Corepack. 2023-02-09 15:50:47 -08:00
postcss.config.js styles: Fix flatpickr dark theme in automatic mode. 2023-02-20 12:09:52 -08:00
prettier.config.js prettier: Disable embedded language formatting for Markdown. 2021-08-20 23:14:37 -07:00
pyproject.toml ruff: Enable logging format rules. 2023-02-04 16:36:20 -08:00
stylelint.config.js yarn: Add package which allows creating css mixins. 2021-12-09 18:15:18 -08:00
tsconfig.json tsconfig: Enable noImplicitOverride. 2021-09-13 10:10:34 -07:00
version.py presence: Return some presence params in the /register response. 2023-02-21 12:10:43 -08:00
webpack.config.ts static: Replace handlebars static images with their require'd versions. 2023-02-14 17:17:06 -05:00
yarn.lock dependencies: Upgrade JavaScript dependencies. 2023-02-08 17:05:58 -08:00

README.md

Zulip overview

Zulip is an open-source team collaboration tool with unique topic-based threading that combines the best of email and chat to make remote work productive and delightful. Fortune 500 companies, leading open source projects, and thousands of other organizations use Zulip every day. Zulip is the only modern team chat app that is designed for both live and asynchronous conversations.

Zulip is built by a distributed community of developers from all around the world, with 74+ people who have each contributed 100+ commits. With over 1000 contributors merging over 500 commits a month, Zulip is the largest and fastest growing open source team chat project.

Come find us on the development community chat!

GitHub Actions build status coverage status Mypy coverage Ruff code style: black code style: prettier GitHub release docs Zulip chat Twitter GitHub Sponsors

Getting started

You may also be interested in reading our blog, and following us on Twitter and LinkedIn.

Zulip is distributed under the Apache 2.0 license.