docs: Further update architecture overview intro.

This commit is contained in:
Tim Abbott
2019-05-20 11:48:34 -07:00
parent f140228528
commit e4c3864772

View File

@@ -4,29 +4,32 @@ Zulip architectural overview
Key Codebases Key Codebases
------------- -------------
The core Zulip application is at The main Zulip codebase is at <https://github.com/zulip/zulip>. It
<https://github.com/zulip/zulip> and contains the Zulip backend (written in Python 3.x and Django), the
is a web application written in Python 3.x and using the Django framework. That webapp (written in JavaScript and TypeScript) and our library of
codebase includes server-side code and the web client, as well as Python API incoming webhook [integrations](https://zulipchat.com/integrations)
bindings and most of our integrations with other services and applications (see with other services and applications (see [the directory structure
[the directory structure guide](../overview/directory-structure.html)). guide](../overview/directory-structure.html)).
[Zulip Mobile](https://github.com/zulip/zulip-mobile) is the official [Zulip Mobile](https://github.com/zulip/zulip-mobile) is the official
mobile Zulip client supporting both iOS and Android, written in mobile Zulip client supporting both iOS and Android, written in
JavaScript with React Native, and JavaScript with React Native, and [Zulip
[Zulip Desktop](https://github.com/zulip/zulip-desktop) is the Desktop](https://github.com/zulip/zulip-desktop) is the official Zulip
official Zulip desktop client for macOS, Linux, and Windows. desktop client for macOS, Linux, and Windows. We also have an alpha
[Zulip Terminal](https://github.com/zulip/zulip-terminal) project.
We also maintain several separate repositories for integrations and We also maintain several separate repositories for integrations and
other glue code: a other glue code: [Python API
[Hubot adapter](https://github.com/zulip/hubot-zulip); integrations bindings](https://github.com/zulip/python-zulip-api); [JavaScript API
with [Phabricator](https://github.com/zulip/phabricator-to-zulip), bindings](https://github.com/zulip/zulip-js); a [Hubot
adapter](https://github.com/zulip/hubot-zulip); integrations with
[Phabricator](https://github.com/zulip/phabricator-to-zulip),
[Jenkins](https://github.com/zulip/zulip-jenkins-plugin), [Jenkins](https://github.com/zulip/zulip-jenkins-plugin),
[Puppet](https://github.com/matthewbarr/puppet-zulip), [Puppet](https://github.com/matthewbarr/puppet-zulip),
[Redmine](https://github.com/zulip/zulip-redmine-plugin), and [Redmine](https://github.com/zulip/zulip-redmine-plugin), and
[Trello](https://github.com/zulip/trello-to-zulip); [Trello](https://github.com/zulip/trello-to-zulip); our [full-text
[node.js API bindings](https://github.com/zulip/zulip-node); and our search PostgreSQL extension](https://github.com/zulip/tsearch_extras);
[full-text search PostgreSQL extension](https://github.com/zulip/tsearch_extras). and [many more](https://github.com/zulip/).
We use [Transifex](https://www.transifex.com/zulip/zulip/) to do We use [Transifex](https://www.transifex.com/zulip/zulip/) to do
translations. translations.
@@ -37,44 +40,26 @@ application.
Usage assumptions and concepts Usage assumptions and concepts
------------------------------ ------------------------------
Zulip is a real-time web-based chat application meant for companies Zulip is a real-time team chat application meant to provide a great
and similar groups ranging in size from a small team to 10,000s of experience for a wide range of organizations, from companies to
users. It features real-time notifications, message persistence and volunteer projects groups of friends, ranging in size from a small
search, public group conversations (*streams*), private streams, team to 10,000s of users. It has [hundreds of
private one-on-one and group conversations, inline image previews, features](https://zulipchat.com/features) both larger and small, and
team presence/buddy lists, a rich API, Markdown message support, and supports dedicated apps for iOS, Android, Linux, Windows, and macOS,
numerous integrations with other services. It supports dedicated iOS, all modern web browsers, several cross-protocol chat clients, and
Android, Linux, Windows, and macOS clients, as well as people using numerous dedicated [Zulip API](https://zulipchat.com/api) clients
modern web browsers, cross-protocol chat tools, and dedicated [Zulip (e.g. bots).
API](https://zulipchat.com/apoi) clients (e.g. bots).
A server can host multiple Zulip *realms* (organizations) at the same
domain, each of which is a private chamber with its own users,
streams, customizations, and so on. This means that one person might
be a user of multiple Zulip realms. The administrators of an
organization have a great deal of control over who can register an
account, what permissions new users have, etc. For more on security
considerations and options, see [the security model
section](../production/security-model.html) and the [Zulip Help Center](https://zulipchat.com/help).
The Zulip "All messages" screen is like a chronologically ordered inbox;
it displays messages, starting at the oldest message that the user
hasn't viewed yet (for more on that logic, see [the guide to the
pointer and unread counts](../subsystems/pointer.html)). The "All messages" screen displays
the most recent messages in all the streams a user has joined (except
for the streams they've muted), as well as private messages from other
users, in strict chronological order. A user can *narrow* to view only
the messages in a single stream, and can further narrow to focus on a
*topic* (thread) within that stream. Each narrow has its own URL. The
user can quickly see what conversation they're in -- the stream and
topic, or the names of the user(s) they're private messaging with
-- using *the recipient bar* displayed atop each conversation.
Zulip's philosophy is to provide sensible defaults but give the user
fine-grained control over their incoming information flow; a user can
mute topics and streams, and can make fine-grained choices to reduce
real-time notifications they find irrelevant.
A server can host multiple Zulip *realms* (organizations), each on its
own (sub)domain. While most deployments host only organization, some
such as zulipchat.com host thousands. Each organization is a private
chamber with its own users, streams, customizations, and so on. This
means that one person might be a user of multiple Zulip realms. The
administrators of an organization have a great deal of control over
who can register an account, what permissions new users have, etc. For
more on security considerations and options, see [the security model
section](../production/security-model.html) and the [Zulip Help
Center](https://zulipchat.com/help).
Components Components
---------- ----------