Go to file
Steve Howell e243af531b refactor: Extract get_user_set in peer_data.
We now use the same code in all places to
get the bucket of user_ids that correspond
to a stream, and we consistently treat
a stream as having zero subscribers, not
an undefined number of subscribers, in
the hypothetical case of us asking about
a stream that we're not tracking.

The behavior for untracked streams has
always been problematic, since if a
stream is untracked, all bets are off.

So now if we don't "track" the stream,
the subscriber count is zero.  None of
our callers distinguish between undefined
and zero.

And we just consider the stream to be subscribed
by a user when add_subscriber is called,
even if we haven't been told by stream_data
to track the stream.  (We also stop
returning true/false from add_subscriber,
since only test code was looking at it.)

We protect against the most likely source
of internal-to-the-frontend bugs by adding
the assert_number() call.

We generally have to assume that the server
is sending us sensible data at page load
time, or all bets are off.

And we have good protections in place
for unknown ids in our dispatch code
for peer_add/peer_remove events.
2021-01-29 15:21:07 -08:00
.circleci circleci: Put the branch name into the topic on failure. 2020-09-18 10:37:56 -07:00
.github github: Enable retention periods for uploaded artifacts. 2020-11-03 16:36:26 -08:00
.tx cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
analytics change_subdomain: Create a deactivated realm on updating subdomain. 2021-01-07 14:15:22 -08:00
confirmation urls: Remove unused URL names and shorten others. 2020-09-22 10:46:28 -07:00
corporate billing: Make attach discount update the current price per license. 2020-12-17 17:09:20 -08:00
docs dev_settings: Allow setting the value of EMAIL_USE_TLS from dev-secrets. 2021-01-29 14:51:38 -08:00
frontend_tests refactor: Extract get_user_set in peer_data. 2021-01-29 15:21:07 -08:00
locale i18n: Update translation data from Transifex. 2021-01-19 17:45:13 -08:00
pgroonga migrations: Escape more pedantically in pgroonga.0003_v2_api_upgrade. 2020-06-13 21:50:37 -07:00
puppet munin: Update to use NAGIOS_BOT_HOST. 2021-01-27 12:07:09 -08:00
requirements requirements: Upgrade moto to 1.3.17.dev230. 2021-01-29 12:02:43 -08:00
scripts manage: Quote commands correctly in log_management_command. 2021-01-26 13:26:57 -08:00
static refactor: Extract get_user_set in peer_data. 2021-01-29 15:21:07 -08:00
stubs requirements: Upgrade mypy to 0.790. 2020-11-12 15:44:30 -08:00
templates invite-new-users: Specify that the limit spans for the whole day. 2021-01-29 09:51:11 -08:00
tools run-dev: Fix dev url showing extra port. 2021-01-27 11:37:26 -08:00
zerver email_log: Inherit EmailLogBackEnd from smtp.EmailBackend. 2021-01-29 14:51:38 -08:00
zilencer django: Add custom runserver wrapper to limit startup logging. 2020-12-20 12:11:16 -08:00
zproject email_log: Mark EmailLogBackEnd.log_email as a staticmethod. 2021-01-29 14:51:38 -08:00
zthumbor thumbor: Respect S3_ENDPOINT_URL setting. 2020-12-15 18:41:42 -08:00
.browserslistrc browserslist: Drop 0.2% usage threshold to 0.15%. 2020-09-28 10:57:49 -07:00
.codecov.yml codecov: Change threshold to use percentage syntax. 2019-07-20 14:37:04 -07:00
.editorconfig lint: Add shfmt as a linter. 2020-10-15 15:16:00 -07:00
.eslintignore blueslip: Apply ESLint. 2019-11-01 12:13:59 -07:00
.eslintrc.json Rename list_render -> ListWidget. 2021-01-29 09:36:35 -08:00
.gitattributes Revert "gitattributes: Mark yarn.lock as "binary", i.e. suppress diffs." 2019-05-20 19:31:14 -07:00
.gitignore tools: Move CI docker images files into tools/ci. 2020-06-29 16:31:43 -07:00
.gitlint lint: Allow revert commit messages in gitlint. 2018-02-13 09:21:01 -08:00
.isort.cfg isort: Enable black profile. 2020-09-02 11:00:07 -07:00
.mailmap mailmap: Give priority to Vishnu KS's zulip email. 2020-07-31 10:37:49 -07:00
.npmignore
.prettierignore lint: Use Prettier for JSON files. 2020-07-24 09:42:56 -07:00
.pyre_configuration pysa: Update .pyre_configuration to point to typeshed. 2020-09-22 15:44:47 -07:00
.sonarcloud.properties tools: Configure Zulip to be scannable by SonarCloud. 2020-06-24 12:41:17 -07:00
.yarnrc .yarnrc: Set ignore-scripts true. 2019-08-28 16:15:54 -07:00
CODE_OF_CONDUCT.md docs: Fix various capitalization errors. 2020-08-11 10:25:52 -07:00
CONTRIBUTING.md docs: Added number of selected participants in GSoC 2020. 2020-11-09 20:26:56 -08:00
Dockerfile-postgresql docs: Standardize on PostgreSQL, not Postgres. 2020-10-28 11:55:16 -07:00
LICENSE docs: Bump copyright year. 2020-04-23 16:04:54 -07:00
NOTICE license: Move license application notice from LICENSE to NOTICE. 2018-10-02 12:04:44 -07:00
README.md docs: Fix more capitalization issues. 2020-10-23 11:46:55 -07:00
SECURITY.md docs: Fix more capitalization issues. 2020-10-23 11:46:55 -07:00
Vagrantfile Revert "Make sure Vagrant works with SELinux enabled" 2021-01-26 13:14:06 -08:00
babel.config.js babel: Specify core-js minor version. 2020-10-05 14:51:03 -07:00
manage.py manage: Quote commands correctly in log_management_command. 2021-01-26 13:26:57 -08:00
mypy.ini mypy: Exclude broken typeshed stubs for markdown. 2020-11-12 15:44:30 -08:00
package.json dependencies: Upgrade JavaScript dependencies. 2021-01-25 14:53:19 -08:00
postcss.config.js postcss-simple-vars: Add media query breakpoint variables. 2021-01-25 14:49:32 -08:00
prettier.config.js casper: Remove few traces of casper. 2020-08-30 17:16:02 -07:00
setup.cfg lint: Use standard setup.cfg configuration for pycodestyle. 2020-07-14 00:41:20 -07:00
stylelint.config.js dependencies: Upgrade JavaScript dependencies. 2020-09-02 19:34:37 -07:00
tsconfig.json docs: Fix more capitalization issues. 2020-10-23 11:46:55 -07:00
version.py requirements: Upgrade moto to 1.3.17.dev230. 2021-01-29 12:02:43 -08:00
webpack.config.ts run-dev: Suppress the notices made by third-party tools. 2021-01-22 18:00:30 -08:00
yarn.lock dependencies: Upgrade JavaScript dependencies. 2021-01-25 14:53:19 -08:00

README.md

Zulip overview

Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 500 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.

CircleCI branch coverage status Mypy coverage code style: prettier GitHub release docs Zulip chat Twitter

Getting started

Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!

You might be interested in:

You may also be interested in reading our blog or following us on Twitter. Zulip is distributed under the Apache 2.0 license.