Zulip

repository·main·Indexed 12 days ago

https://github.com/zulip/zulip

An open-source team chat application featuring a unique topic-based threading model for synchronous and asynchronous communication. Documentation covers self-hosting on Ubuntu/Debian, Docker deployment, cloud marketplace options, and guides for contributing to the codebase.

Tokens
336.6K
Snippets
751
Records
1.8K
Agent score
92%

What's inside Zulip

  1. Overview of self-hosted Zulip plans

    main

    Organizations self-hosting Zulip can choose from several plan tiers. Pricing is based on the number of non-deactivated users. Note that you cannot combine multiple plans within a single organization.

    • Free: Includes free access to Zulip's Mobile Push Notification Service for up to 10 users.
    • Basic: Includes unlimited access to Zulip's Mobile Push Notification Service for organizations with more than 10 users.
    • Business: Includes commercial support and push notification access. Support includes installation/upgrade assistance and feature guidance.
    • Enterprise: For organizations requiring hands-on support (real-time assistance, custom feature development, or advanced deployment help). Contact sales@zulip.com for pricing.
    • Community: A free plan with unlimited push notifications, available for many non-commercial organizations with more than 10 users.
  2. Overview of importing from Microsoft Teams to Zulip

    main

    You can migrate your Microsoft Teams workspace into a Zulip organization to preserve history and ease the transition for members.

    What is imported:

    • Name
    • Users: names, emails, and roles
    • Teams: converted into Zulip channels, including user subscriptions
    • Message history: (Note: Direct messages and private channel messages are excluded)

    Important considerations:

    • This feature is in beta.
    • Ensure your Microsoft tenant remains active for at least a few months during the process.
    • The Teams data export tool can take approximately one month to process requests.
    • Imported users will use their Microsoft tenant email addresses; they must have access to these accounts to update them in Zulip if necessary.
  3. Overview of Zulip

    main
    Zulip is an open-source, organized team chat application designed for both live and asynchronous conversations. Its core differentiator is a unique topic-based threading model that combines elements of email and chat to improve productivity in remote work environments.
  4. Available authentication methods in Zulip

    main

    Zulip supports various authentication methods depending on your deployment type (Zulip Cloud vs. Self-hosted) and your subscription plan.

    All Plans

    • Email and password
    • Social authentication: Google, GitHub, GitLab, Apple, Discord

    Zulip Cloud Standard, Plus, and Self-hosted

    • OAuth2 with Microsoft Entra ID (AzureAD)

    Zulip Cloud Plus and Self-hosted

    • SAML authentication (including Okta, OneLogin, Entra ID, Keycloak, Auth0)
    • OpenID Connect
    • SCIM provisioning

    Self-hosted Only

    • AD/LDAP user sync
    • AD/LDAP group sync
    • Custom authentication options via python-social-auth
  5. Understand the purpose of the tools/ directory

    main

    The tools/ directory contains scripts specifically designed for the Zulip development environment. These scripts are used for building, managing, testing, and other development-related tasks.

    Note: If a tool is intended for use in production, it should not be located in tools/. Instead, it should be placed in scripts/ or implemented as a Django management command.

  6. Summary of Zulip's data practices

    main

    Zulip's primary goal regarding privacy is to collect only the information necessary to provide its Services.

    Core Principles:

    • Minimal Collection: Intent to only collect information needed to provide Services.
    • Limited Sharing: Data is only shared with third parties to facilitate the delivery of Services.
    • No Sale of Data: Zulip does not sell personal information to third parties.
  7. Understand Zulip outgoing webhook payload formats

    main

    Zulip provides two formats for outgoing webhooks to notify external services when messages are sent in Zulip:

    1. Zulip format: A native format specific to Zulip.
    2. Slack-compatible format: A format designed to mimic Slack's outgoing webhook API. This is useful for porting existing Slack integrations or using third-party systems that already support Slack webhooks.

    Refer to the specific documentation for the field definitions of each format.

  8. Locate Core Python and Backend Files

    main

    Zulip is built on the Django web framework. Use the following directory mapping to locate backend logic:

    • zproject/urls.py: Main Django routes file defining URL handling.
    • zerver/models/*.py: Django models defining database tables.
    • zerver/lib/*.py: General library code.
    • zerver/actions/*.py: Code performing writes to user-facing database tables. Note: All code calling send_event_on_commit to trigger the events system must reside here.
    • zerver/views/*.py: Django views.
    • zerver/tornado/views.py: Tornado views.
    • zerver/worker/: Queue workers.
    • zerver/webhooks/: Webhook views and tests for incoming integrations.
    • zerver/lib/markdown/: Backend Markdown processor.
    • zproject/backends.py: Authentication backends.
  9. Navigate and organize the Zulip left sidebar

    main

    The left sidebar in Zulip (Web and Desktop) is the primary navigation tool for conversations. It is organized into three main areas:

    • Views: Provides different overview modes for your messages.
    • Direct Messages: Shows your individual and group direct message conversations.
    • Channels: Shows the channels you are subscribed to, which can be organized into folders.

    Customizing Channel Organization

    You can manage how channels appear in the sidebar by:

    • Pinning channels: Moves them to a dedicated section at the top of the channel list.
    • Changing channel colors: Visually distinguishes channels.
    • Grouping by folder: Configuring whether channels are grouped by their assigned folders.
    • Hiding inactive channels: Configuring whether channels with no recent activity are hidden from view.
  10. Understand the Zulip outreach program experience

    main

    Zulip participates in several open-source outreach programs, including Google Summer of Code (GSoC) and Outreachy.

    Mentorship Model

    Zulip uses a group mentorship model. While participants are assigned a specific mentor, they are also expected to interact with the broader Zulip development community by posting questions and ideas in public channels. This model encourages peer-to-peer support among participants and feedback from the wider community.

    Work Scope

    Participants work on a range of tasks, from fixing small bugs to implementing major features. Work is integrated into the Zulip codebase throughout the program duration. Many participants continue to contribute to the project as core maintainers or mentors after their official program ends.