Go to file
Steve Howell d3e961e179 performance: Improve prefix_sort.
We only convert the query to lowercase outside the
loop for an Nx speedup, where N = number of items.

And then we use startsWith instead of indexOf, which
means we don't senselessly search entire strings
for matches.

(We've had startsWith polyfills for a while now.)

Unfortunately, unless a string start with the
exact casing of the query, we still create an
entire lowercase copy of the string for the case
insensitive match.  For the English use case
(and many other languages), we could further
optimize this by slicing the string before
converting it to lowercase.

Unfortunately, you have languages like German
with the straße/STRASSE problem.  It's not clear
to me how we handle them with the current code,
but I don't want to break that yet.
2020-01-28 13:49:03 +00:00
.circleci circleci: Store XUnit test results. 2019-07-07 22:31:11 -07:00
.github github: Suggest GIFs too in PR template. 2018-02-16 09:59:22 -08:00
.tx cleanup: Delete trailing newlines. 2019-08-06 23:29:11 -07:00
analytics analytics: Remove last_modified field from FillState. 2020-01-26 20:38:26 -08:00
confirmation confirmation: Set confirmation object realm attribute in realm reactivation. 2019-10-21 16:52:46 -07:00
corporate python: Sort migrations/management command imports with isort. 2020-01-14 13:07:47 -08:00
docs docs: Add link from LDAP docs to invitation docs. 2020-01-25 23:41:19 -08:00
frontend_tests node tests: Add more direct tests for typeahead. 2020-01-27 16:32:11 -08:00
locale i18n: Update translation data from transifex. 2019-12-12 20:34:46 -08:00
pgroonga python: Sort migrations/management command imports with isort. 2020-01-14 13:07:47 -08:00
puppet bots: Remove FEEDBACK_BOT implementation. 2020-01-25 22:41:39 -08:00
requirements tests: Replace httpretty with responses. 2020-01-22 11:56:15 -08:00
scripts bots: Remove FEEDBACK_BOT implementation. 2020-01-25 22:41:39 -08:00
static performance: Improve prefix_sort. 2020-01-28 13:49:03 +00:00
stubs mypy: Remove daemon mode. 2019-08-25 15:04:12 -07:00
templates invite_user: Left-aligned the elements in invite users screen. 2020-01-27 15:37:00 -08:00
tools test-js-with-node: Extract run_tests_via_node_js(). 2020-01-27 16:32:11 -08:00
zerver django: Use request.user.is_authenticated consistently. 2020-01-27 17:50:18 -08:00
zilencer bots: Remove feedback cross realm bot. 2020-01-25 22:54:44 -08:00
zproject redis_utils: Require key_format argument in get_dict_from_redis. 2020-01-26 21:40:15 -08:00
zthumbor zthumbor: Clean up type ignores. 2019-08-09 17:42:33 -07:00
.browserslistrc webpack: Transpile JS code with Babel. 2019-07-22 17:55:32 -07:00
.codecov.yml codecov: Change threshold to use percentage syntax. 2019-07-20 14:37:04 -07:00
.editorconfig editorconfig: Set JS max_line_length = 100, to match eslintrc. 2019-10-14 17:32:38 -07:00
.eslintignore blueslip: Apply ESLint. 2019-11-01 12:13:59 -07:00
.eslintrc.json dependencies: Remove WebSockets system for sending messages. 2020-01-14 22:34:00 -08:00
.gitattributes Revert "gitattributes: Mark yarn.lock as "binary", i.e. suppress diffs." 2019-05-20 19:31:14 -07:00
.gitignore i18n: Move static/locale back to locale. 2019-07-02 14:57:55 -07:00
.gitlint lint: Allow revert commit messages in gitlint. 2018-02-13 09:21:01 -08:00
.isort.cfg tornado: Fix logging of tornado activity level. 2018-04-17 15:59:01 -07:00
.npmignore
.stylelintrc lint: Ban color names in CSS. 2019-01-22 15:33:18 -08:00
.travis.yml ci: Move backend and production tests to Ubuntu 16.04 (xenial). 2019-05-24 17:07:15 -07:00
.yarnrc .yarnrc: Set ignore-scripts true. 2019-08-28 16:15:54 -07:00
CODE_OF_CONDUCT.md docs: Add clarifying comma in CODE_OF_CONDUCT.md. 2019-04-05 18:01:37 -07:00
CONTRIBUTING.md docs: Remove mention of Dropbox CLA. 2019-12-14 22:07:38 -08:00
Dockerfile-postgresql base Zulip PostgreSQL Docker container on PGroonga official one 2019-12-30 10:20:25 -08:00
LICENSE license: Move license application notice from LICENSE to NOTICE. 2018-10-02 12:04:44 -07:00
NOTICE license: Move license application notice from LICENSE to NOTICE. 2018-10-02 12:04:44 -07:00
README.md README: Improve links to coverage/CI to point to master. 2019-10-01 15:31:55 -07:00
Vagrantfile Revert "vagrant: Add NFS backend for file synchronization for OSX." 2019-08-12 16:04:00 -07:00
babel.config.js people: Use Unicode normalization for diacritic removal. 2019-12-09 13:02:54 -08:00
manage.py manage.py: Revert sabotaging pika.adapters.twisted_connection import. 2019-01-31 10:04:28 -08:00
mypy.ini dependencies: Remove WebSockets system for sending messages. 2020-01-14 22:34:00 -08:00
package.json dependencies: Upgrade vnu-jar. 2020-01-05 22:44:41 -08:00
postcss.config.js webpack: Move CSS minification to optimization stage. 2019-09-02 21:58:13 -07:00
tsconfig.json tsconfig: Fix typescript-eslint memory usage disaster. 2019-11-22 11:38:25 -08:00
version.py emails: Set alt attribute to empty for leading images. 2020-01-24 13:32:54 -08:00
yarn.lock dependencies: Upgrade vnu-jar. 2020-01-05 22:44:41 -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 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.