snapshot of https://github.com/zulip/zulip.git @ 48c69911c7dd4e03b20552eb3bd77ad8151c1357 (2026-09-15)
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
Some checks failed
Code scanning / CodeQL (push) Failing after 15s
Zulip production suite / Ubuntu 22.04 production build (push) Failing after 26s
Zulip production suite / Debian 12 production install with custom db name and user (push) Has been skipped
Zulip production suite / Ubuntu 22.04 production install and PostgreSQL upgrade with pgroonga (push) Has been skipped
Zulip production suite / Ubuntu 24.04 production install (push) Has been skipped
Zulip production suite / Ubuntu 26.04 production install (push) Has been skipped
Zulip production suite / Debian 13 production install (push) Has been skipped
Zulip production suite / 7.0 Version Upgrade (push) Has been skipped
Zulip production suite / 8.0 Version Upgrade (push) Has been skipped
Zulip production suite / 6.0 Version Upgrade (push) Has been skipped
Zulip production suite / 10.0 Version Upgrade (push) Has been skipped
Zulip production suite / 9.0 Version Upgrade (push) Has been skipped
Zulip production suite / 12.0 Version Upgrade (push) Has been skipped
Zulip production suite / 11.0 Version Upgrade (push) Has been skipped
GitHub Actions Security Analysis with zizmor / zizmor (push) Failing after 3s
Zulip CI / Debian 12 (Python 3.11, backend + documentation) (push) Failing after 26s
Zulip CI / Ubuntu 22.04 (Python 3.10, backend + frontend) (push) Failing after 3s
Zulip CI / Ubuntu 24.04 (Python 3.12, backend) (push) Failing after 25s
Zulip CI / Ubuntu 26.04 (Python 3.14, backend) (push) Failing after 25s
Zulip CI / Debian 13 (Python 3.13, backend) (push) Failing after 28s
Zulip production suite / Required jobs (push) Has been cancelled
Zulip CI / Required jobs (push) Has been cancelled
API Documentation Update Check / check-feature-level-updated (push) Has been cancelled
API Documentation Update Check / notify-if-api-docs-changed (push) Has been cancelled
This commit is contained in:
1
templates/.gitignore
vendored
Normal file
1
templates/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/graph.svg
|
||||
20
templates/404.html
Normal file
20
templates/404.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Error") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img src="{{ static('images/errors/400art.svg') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Page not found (404)") }}</h1>
|
||||
<p>
|
||||
{% trans %}
|
||||
If this error is unexpected, you can
|
||||
<a href="mailto:{{ support_email }}">contact support</a>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
45
templates/4xx.html
Normal file
45
templates/4xx.html
Normal file
@@ -0,0 +1,45 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Error") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
{% if csrf_failure %}
|
||||
<h1 class="lead">{{ _("Access forbidden (403)") }}</h1>
|
||||
<p>
|
||||
{% trans %}
|
||||
Your request could not be completed because your
|
||||
browser did not send the credentials required to authenticate
|
||||
your access. To resolve this issue:
|
||||
{% endtrans %}
|
||||
</p>
|
||||
|
||||
<ol>
|
||||
<li>
|
||||
{% trans %}
|
||||
Make sure that your browser allows cookies for this site.
|
||||
{% endtrans %}
|
||||
</li>
|
||||
<li>
|
||||
{% trans %}
|
||||
Check for any browser privacy settings or extensions
|
||||
that block Referer headers, and disable them for
|
||||
this site.
|
||||
{% endtrans %}
|
||||
</li>
|
||||
</ol>
|
||||
{% elif status_code == 405 %}
|
||||
<h1 class="lead">{{ _("Method not allowed (405)") }}</h1>
|
||||
<p>
|
||||
{% trans %}
|
||||
If this error is unexpected, you can
|
||||
<a href="mailto:{{ support_email }}">contact support</a>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
55
templates/500.html
Normal file
55
templates/500.html
Normal file
@@ -0,0 +1,55 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Internal server error") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block customhead %}
|
||||
{{ super() }}
|
||||
<meta http-equiv="refresh" content="60;URL='/'" />
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img src="{{ static('images/errors/500art.svg') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Internal server error") }}</h1>
|
||||
{% if corporate_enabled %}
|
||||
<!-- Keep in sync with web/html/5xx-cloud.html -->
|
||||
<p>
|
||||
{% trans %}
|
||||
Something went wrong. Sorry about that! We're aware of
|
||||
the problem and are working to fix it.
|
||||
Zulip will load automatically once it is working again.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans status_url="https://status.zulip.com/" %}
|
||||
Please check <a href="{{status_url}}">Zulip Cloud status</a> for
|
||||
more information, and <a href="mailto:{{support_email}}">contact
|
||||
Zulip support</a> with any questions.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
{% else %}
|
||||
<!-- Keep in sync with web/html/5xx.html -->
|
||||
<p>
|
||||
{% trans %}
|
||||
Something went wrong. Sorry about that!
|
||||
Zulip will load automatically once it is working again.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans %}
|
||||
<a href="mailto:{{support_email}}">Contact this server's administrators</a> for support.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans troubleshooting_url="https://zulip.readthedocs.io/en/latest/production/troubleshooting.html" %}
|
||||
If you administer this server, you may want to check out the
|
||||
<a href="{{troubleshooting_url}}">Zulip server troubleshooting guide</a>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
151
templates/analytics/stats.html
Normal file
151
templates/analytics/stats.html
Normal file
@@ -0,0 +1,151 @@
|
||||
{% extends "zerver/base.html" %}
|
||||
{% set entrypoint = "stats" %}
|
||||
|
||||
{% block title %}
|
||||
<title>
|
||||
{% trans %}
|
||||
Analytics for {{ target_name }} | Zulip
|
||||
{% endtrans %}
|
||||
</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="app portico-page stats-page">
|
||||
|
||||
<div class="page-content">
|
||||
{% if not analytics_ready %}
|
||||
<div class="alert alert-info">
|
||||
{{ _("Analytics are fully available 24 hours after organization creation.") }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div id="id_stats_errors" class="alert alert-error"></div>
|
||||
<div class="center-charts">
|
||||
<h1 class="analytics-page-header">{% trans %}Zulip analytics for {{ target_name }}{% endtrans %}</h1>
|
||||
<div class="summary-stats">
|
||||
<h1>{{ _("Organization summary") }}</h1>
|
||||
<ul>
|
||||
<li>{{ _("Number of users") }}: <span id="id_total_users"></span></li>
|
||||
<li>{{ _("Users active during the last 15 days") }}: <span id="id_active_fifteen_day_users"></span></li>
|
||||
<li>{{ _("Number of guests") }}: <span id="id_guest_users_count"></span></li>
|
||||
<li>{{ _("Total number of messages") }}: <span id="id_total_messages_sent"></span></li>
|
||||
<li>{{ _("Number of messages in the last 30 days") }}: <span id="id_thirty_days_messages_sent"></span></li>
|
||||
<li>{{ _("File storage in use") }}: <span id="id_storage_space_used"></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="flex-container">
|
||||
<div class="chart-container">
|
||||
<h1>{{ _("Active users") }}</h1>
|
||||
<div class="button-container">
|
||||
<div class="buttons">
|
||||
<button class="button" type="button" id="1day_actives_button">{{ _("Daily actives") }}</button>
|
||||
<button class="button" type="button" id="15day_actives_button">{{ _("15 day actives") }}</button>
|
||||
<button class="button" type="button" id="all_time_actives_button">{{ _("Total users") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="id_number_of_users">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
<div id="users_hover_info">
|
||||
<span id="users_hover_date"></span>
|
||||
<b id="users_hover_humans">{{ _("Users") }}: </b>
|
||||
<span id="users_hover_1day_value"></span>
|
||||
<span id="users_hover_15day_value"></span>
|
||||
<span id="users_hover_all_time_value"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-container">
|
||||
<div id="pie_messages_sent_by_type">
|
||||
<h1>{{ _("Messages sent by recipient type") }}</h1>
|
||||
<div class="button-container">
|
||||
<div class="buttons">
|
||||
<button class="button" type="button" data-user="user">{{ _("Me") }}</button>
|
||||
<button class="button selected" type="button" data-user="everyone">{{ _("Everyone") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="id_messages_sent_by_message_type">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
<div id="pie_messages_sent_by_type_total"></div>
|
||||
<div class="buttons">
|
||||
<button class="button" type="button" data-time="week">{{ _("Last week") }}</button>
|
||||
<button class="button selected" type="button" data-time="month">{{ _("Last month") }}</button>
|
||||
<button class="button" type="button" data-time="year">{{ _("Last year") }}</button>
|
||||
<button class="button" type="button" data-time="cumulative">{{ _("All time") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-container">
|
||||
<h1>{{ _("Messages sent over time") }}</h1>
|
||||
<div class="button-container">
|
||||
<div class="buttons">
|
||||
<button class="button" type="button" id='daily_button'>{{ _("Daily") }} </button>
|
||||
<button class="button" type="button" id='weekly_button'>{{ _("Weekly") }} </button>
|
||||
<button class="button" type="button" id='cumulative_button'>{{ _("Cumulative") }} </button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="id_messages_sent_over_time">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
<div id="hoverinfo">
|
||||
<span id="hover_date"></span>
|
||||
<b id="hover_me">{{ _("Me") }}:</b>
|
||||
<span id="hover_me_value"></span>
|
||||
<b id="hover_human">{{ _("Humans") }}:</b>
|
||||
<span id="hover_human_value"></span>
|
||||
<b id="hover_bot">{{ _("Bots") }}:</b>
|
||||
<span id="hover_bot_value"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-container">
|
||||
<h1>{{ _("Messages read over time") }}</h1>
|
||||
<div class="button-container">
|
||||
<div class="buttons">
|
||||
<button class="button" type="button" id='read_daily_button'>{{ _("Daily") }} </button>
|
||||
<button class="button" type="button" id='read_weekly_button'>{{ _("Weekly") }} </button>
|
||||
<button class="button" type="button" id='read_cumulative_button'>{{ _("Cumulative") }} </button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="id_messages_read_over_time">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
<div id="read_hover_info">
|
||||
<span id="read_hover_date"></span>
|
||||
<b id="read_hover_me">{{ _("Me") }}:</b>
|
||||
<span id="read_hover_me_value"></span>
|
||||
<b id="read_hover_everyone">{{ _("Everyone") }}:</b>
|
||||
<span id="read_hover_everyone_value"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="chart-container">
|
||||
<div id="messages_sent_by_client">
|
||||
<h1>{{ _("Messages sent by client") }}</h1>
|
||||
<div class="button-container">
|
||||
<div class="buttons">
|
||||
<button class="button" type="button" data-user="user">{{ _("Me") }}</button>
|
||||
<button class="button selected" type="button" data-user="everyone">{{ _("Everyone") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="messages_sent_by_client_chart">
|
||||
<div class="spinner"></div>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button class="button" type="button" data-time="week">{{ _("Last week") }}</button>
|
||||
<button class="button selected" type="button" data-time="month">{{ _("Last month") }}</button>
|
||||
<button class="button" type="button" data-time="year">{{ _("Last year") }}</button>
|
||||
<button class="button" type="button" data-time="cumulative">{{ _("All time") }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="last-update">
|
||||
{{ _("Last update") }}: <span id="id_last_full_update"></span>
|
||||
<span class="last_update_tooltip" data-tippy-content="{% trans %}A full update of all the graphs happens once a day. The “messages sent over time” graph is updated once an hour.{% endtrans %}">
|
||||
<span class="fa fa-info-circle" id="id_last_update_question_sign"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
24
templates/confirmation/confirm_email_change.html
Normal file
24
templates/confirmation/confirm_email_change.html
Normal file
@@ -0,0 +1,24 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Email changed") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
|
||||
<div class="app confirm-email-change-page flex full-page">
|
||||
<div class="inline-block new-style">
|
||||
<div class="lead">
|
||||
<h1 class="get-started">{{ _('Email changed!') }}</h1>
|
||||
</div>
|
||||
|
||||
<div class="app-main white-box">
|
||||
{% trans %}
|
||||
This confirms that the email address for your Zulip account has changed
|
||||
from {{ old_email_html_tag }} to {{ new_email_html_tag }}
|
||||
{% endtrans %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
26
templates/confirmation/confirm_preregistrationuser.html
Normal file
26
templates/confirmation/confirm_preregistrationuser.html
Normal file
@@ -0,0 +1,26 @@
|
||||
{% extends "zerver/base.html" %}
|
||||
{% set entrypoint = "redirect-to-post" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Confirming your email address") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{#
|
||||
This template is referenced by the confirmation code and does not have the
|
||||
requisite context to make a useful signup form. Therefore, we immediately
|
||||
post to another view which executes in our code to produce the desired form.
|
||||
#}
|
||||
|
||||
<form id="register" class="redirect-to-post-form" action="{{ registration_url }}" method="post">
|
||||
{{ csrf_input }}
|
||||
<input type="hidden" value="{{ key }}" name="key"/>
|
||||
<input type="hidden" value="1" name="from_confirmation"/>
|
||||
<input type="hidden" value="{% if full_name %}{{ full_name }}{% endif %}" name="full_name"/>
|
||||
{% if next %}
|
||||
<input type="hidden" value="{{ next }}" name="next"/>
|
||||
{% endif %}
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
19
templates/confirmation/link_does_not_exist.html
Normal file
19
templates/confirmation/link_does_not_exist.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Confirmation link does not exist") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img src="{{ static('images/errors/400art.svg') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Whoops. We couldn't find your confirmation link in the system.") }}</h1>
|
||||
<p>
|
||||
{% trans %}
|
||||
Anyway, shoot us a line at {{ support_email_html_tag }} and we'll get this resolved shortly.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
15
templates/confirmation/link_expired.html
Normal file
15
templates/confirmation/link_expired.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Confirmation link expired or deactivated") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img class="hourglass-img" src="{{ static('images/errors/timeout_hourglass.png') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Whoops. The confirmation link has expired or been deactivated.") }}</h1>
|
||||
<p>{{ _("Please contact your organization administrator for a new link.") }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
20
templates/confirmation/link_malformed.html
Normal file
20
templates/confirmation/link_malformed.html
Normal file
@@ -0,0 +1,20 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Confirmation link malformed") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img src="{{ static('images/errors/500art.svg') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Whoops. The confirmation link is malformed.") }}</h1>
|
||||
<p>{{ _("Make sure you copied the link correctly in to your browser. If you're still encountering this page, it's probably our fault. We're sorry.") }}</p>
|
||||
<p>
|
||||
{% trans %}
|
||||
Anyway, shoot us a line at {{ support_email_html_tag }} and we'll get this resolved shortly.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
28
templates/confirmation/redirect_to_post.html
Normal file
28
templates/confirmation/redirect_to_post.html
Normal file
@@ -0,0 +1,28 @@
|
||||
{% extends "zerver/base.html" %}
|
||||
{% set entrypoint = "redirect-to-post" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Confirming your email address") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
{#
|
||||
The purpose of this is to be an intermediate page, served upon GET requests
|
||||
to confirmation links. We simply serve a form which combined with some automatically
|
||||
executed JavaScript code will immediately POST the confirmation key to the intended
|
||||
endpoint.
|
||||
|
||||
This allows us to avoid triggering the action which is being confirmed via a mere
|
||||
GET request.
|
||||
|
||||
This largely duplicates functionality and code with confirm_preregistrationuser.html.
|
||||
We should find a way to unify these.
|
||||
#}
|
||||
|
||||
<form id="redirect-to-post-form" class="redirect-to-post-form" action="{{ target_url }}" method="post">
|
||||
{{ csrf_input }}
|
||||
<input type="hidden" value="{{ key }}" name="key"/>
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
22
templates/corporate/activity/activity.html
Normal file
22
templates/corporate/activity/activity.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{% extends "zerver/base.html" %}
|
||||
{% set entrypoint = "activity" %}
|
||||
|
||||
{# Template for installation activity pages #}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ title }} | Zulip analytics</title>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
<div class="activity-page">
|
||||
{% if not is_home %}
|
||||
<a class="show-all" href="/activity">Home</a>
|
||||
<br />
|
||||
{% endif %}
|
||||
|
||||
<div>
|
||||
{{ data|safe }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
43
templates/corporate/activity/activity_table.html
Normal file
43
templates/corporate/activity/activity_table.html
Normal file
@@ -0,0 +1,43 @@
|
||||
<h3>{{ data.title }} {% if data.title_link %}{{ data.title_link }}{% endif %}</h3>
|
||||
|
||||
{% if data.title == "Remote servers" %}
|
||||
{% include "corporate/activity/remote_activity_key.html" %}
|
||||
{% endif %}
|
||||
|
||||
{% if data.header %}
|
||||
<div class="activity-header-information">
|
||||
{% for entry in data.header %}
|
||||
<p class="activity-header-entry"><b>{{ entry.name }}</b>: {{ entry.value }}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{{ data.rows|length}} rows
|
||||
<table class="table sortable table-striped table-bordered analytics-table">
|
||||
|
||||
<thead class="activity-head">
|
||||
<tr>
|
||||
{% for col in data.cols %}
|
||||
<th>{{ col }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in data.rows %}
|
||||
<tr {% if row.row_class %}class="{{ row.row_class }}"{% endif %}>
|
||||
{% for field in row.cells %}
|
||||
<td sortable>{{ field }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
{% if data.totals %}
|
||||
<tfoot class="activity-foot">
|
||||
<tr>
|
||||
{% for total in data.totals %}
|
||||
<td>{{ total }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</tfoot>
|
||||
{% endif %}
|
||||
</table>
|
||||
164
templates/corporate/activity/installation_activity_table.html
Normal file
164
templates/corporate/activity/installation_activity_table.html
Normal file
@@ -0,0 +1,164 @@
|
||||
<h3 class="installation-activity-header">Installation activity: {{ num_active_sites }} active sites</h3>
|
||||
|
||||
<p class="installation-activity-header">{{ utctime }}</p>
|
||||
|
||||
<h4>Other views:</h4>
|
||||
<ul>
|
||||
<li><a href="/stats/installation">Server total /stats style graphs</a></li>
|
||||
<li><a href="/activity/remote">Remote servers</a></li>
|
||||
<li><a href="/activity/integrations">Integrations by client</a></li>
|
||||
{% if not export %}
|
||||
<li><a href="/activity?export=true">Export installation chart</a></li>
|
||||
{% else %}
|
||||
<li><a href="/activity">Non-export installation chart</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
|
||||
<h4>Counts chart key:</h4>
|
||||
<ul>
|
||||
<li><strong>active (site)</strong> - has ≥5 DAUs</li>
|
||||
<li>sites are listed if ≥1 users active in last 2 weeks</li>
|
||||
<li><strong>user</strong> - registered user, not deactivated, not a bot</li>
|
||||
<li><strong>active (user)</strong> - sent a message, or advanced the pointer (reading messages doesn't count unless advances the pointer)</li>
|
||||
<li><strong>ARR</strong> (Annual recurring revenue) - the number of users they are paying for * annual price/user.</li>
|
||||
<li><strong>Rate</strong> - % of full price the customer pays, or will pay, if on a paid plan.</li>
|
||||
<li><strong>Links</strong>
|
||||
<ul>
|
||||
<li><strong><i class="fa fa-home"></i></strong> - realm's Zulip</li>
|
||||
<li><strong><i class="fa fa-pie-chart"></i></strong> - realm's stats page</li>
|
||||
<li><strong><i class="fa fa-gear"></i></strong> - realm's support page</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>DAU</strong> (daily active users) - users active in last 24hr</li>
|
||||
<li><strong>WAU</strong> (weekly active users) - users active in last 7 * 24hr</li>
|
||||
<li><strong>Human message</strong> - message sent by non-bot user, and not with known-bot client</li>
|
||||
</ul>
|
||||
|
||||
<div class="installation-activity-filter-container">
|
||||
<h4>Current filter: {{ current_filter }}</h4>
|
||||
<p>
|
||||
<b>Filters:</b>
|
||||
<a href="/activity?filter=all">All</a> |
|
||||
<a href="/activity?filter=demo">Demo</a> |
|
||||
<a href="/activity?filter=sponsored">100% sponsored</a> |
|
||||
<a href="/activity?filter=free">On free plan</a> |
|
||||
<a href="/activity?filter=paid">On paid plan</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<table class="table summary-table sortable table-striped table-bordered">
|
||||
|
||||
<thead class="activity-head">
|
||||
<tr>
|
||||
{% if not export %}
|
||||
<th>Links</th>
|
||||
{% endif %}
|
||||
<th>Realm</th>
|
||||
<th>Created (green if ≤12wk)</th>
|
||||
{% if billing_enabled %}
|
||||
<th>Plan type</th>
|
||||
<th>ARR</th>
|
||||
<th>Rate (%)</th>
|
||||
{% endif %}
|
||||
<th>Organization type</th>
|
||||
<th>Referrer</th>
|
||||
<th>DAU</th>
|
||||
<th>WAU</th>
|
||||
<th>Total users</th>
|
||||
<th>Bots</th>
|
||||
{% if not export %}
|
||||
<th></th>
|
||||
{% endif %}
|
||||
<th colspan=8>Human messages sent, last 8 UTC days (today-so-far first)</th>
|
||||
{% if export %}
|
||||
<th>Admin emails</th>
|
||||
{% endif %}
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody>
|
||||
{% for row in rows %}
|
||||
<tr>
|
||||
{% if not export %}
|
||||
<td>
|
||||
{{ row.realm_url }}
|
||||
{{ row.stats_link }}
|
||||
{{ row.activity_link }}
|
||||
</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
{{ row.support_link }}
|
||||
</td>
|
||||
|
||||
<td {% if row.is_new %}
|
||||
class="good" {% else %}
|
||||
class="neutral" {% endif %} >
|
||||
{{ row.date_created_day }}
|
||||
</td>
|
||||
|
||||
{% if billing_enabled %}
|
||||
<td>
|
||||
{{ row.plan_type_string }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{% if row.arr %}
|
||||
{{ row.arr }}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{% if row.effective_rate != "" %}
|
||||
{{ row.effective_rate }}
|
||||
{% endif %}
|
||||
</td>
|
||||
{% endif %}
|
||||
|
||||
<td>
|
||||
{{ row.org_type_string }}
|
||||
</td>
|
||||
|
||||
<td>
|
||||
{{ row.how_realm_creator_found_zulip }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.dau_count }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.wau_count }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.user_profile_count }}
|
||||
</td>
|
||||
|
||||
<td class="number">
|
||||
{{ row.bot_count }}
|
||||
</td>
|
||||
{% if not export %}
|
||||
<td> </td>
|
||||
{% endif %}
|
||||
{% if row.history %}
|
||||
{{ row.history|safe }}
|
||||
{% else %}
|
||||
<td colspan=8></td>
|
||||
{% endif %}
|
||||
|
||||
{% if export %}
|
||||
<td>
|
||||
{{ row.admin_emails }}
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<tfoot class="activity-foot">
|
||||
<tr>
|
||||
{% for total in totals %}
|
||||
<td>{{ total }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
</tfoot>
|
||||
</table>
|
||||
23
templates/corporate/activity/remote_activity_key.html
Normal file
23
templates/corporate/activity/remote_activity_key.html
Normal file
@@ -0,0 +1,23 @@
|
||||
<h4>Chart key:</h4>
|
||||
<ul>
|
||||
<li><strong>Server mobile pushes</strong>
|
||||
<ul>
|
||||
<li>Count of forwarded push notifications in last 7 days</li>
|
||||
<li>Includes today's current count</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>ARR</strong> (annual recurring revenue)
|
||||
<ul>
|
||||
<li>If plan has a fixed price, displays that value</li>
|
||||
<li>Otherwise, is an estimate based on the current users multiplied by annual price per user</li>
|
||||
<li>Currently, does not account for first year, flat $20 discount per month</li>
|
||||
<li>Plans with status of <strong>Free trial</strong> show estimated revenue for full year</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Links</strong>
|
||||
<ul>
|
||||
<li><strong><i class="fa fa-pie-chart"></i></strong> - remote server's stats page</li>
|
||||
<li><strong><i class="fa fa-gear"></i></strong> - remote server's support page</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
68
templates/corporate/apps.html
Normal file
68
templates/corporate/apps.html
Normal file
@@ -0,0 +1,68 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Download the Zulip app for your device" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Zulip has apps for every platform. Download the Zulip
|
||||
app for macOS, Windows, Linux, Android, iOS or Terminal." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing apps">
|
||||
<div class="hero">
|
||||
<div id="waves"></div>
|
||||
<div class="inner-content">
|
||||
<div class="info" hidden>
|
||||
<div class="flex">
|
||||
<div class="cta">
|
||||
<h1>Zulip for <span class="platform"></span></h1>
|
||||
<p class="description"></p>
|
||||
<a class="button desktop-download-link no-action" hidden href=""><span class="button green">Download Zulip for <span class="platform"></span></span></a>
|
||||
<a class="button download-from-google-play-store" hidden href=""><img src="{{ static('images/store-badges/google-play-badge.png') }}" alt=""/></a>
|
||||
<a class="button download-from-apple-app-store" hidden href=""><img src="{{ static('images/store-badges/app-store-badge.svg') }}" alt=""/></a>
|
||||
<span id="download-from-microsoft-store" hidden>or <a href="https://apps.microsoft.com/store/detail/XP8HN41S4PLGZ3">download from the Microsoft Store</a></span>
|
||||
<span id="download-android-apk" hidden>or manually download APK for the <a class="android-apk-current" href="">current</a> or <a class="android-apk-legacy" href="">legacy</a> app</span>
|
||||
<div id="download-mac-alt" hidden>
|
||||
<div id="download-mac-alt-apple-silicon" hidden>or <a href="/apps/download/mac-arm64">download <strong>Apple Silicon</strong> build <i>(newer Macs)</i></a></div>
|
||||
<div id="download-mac-alt-intel" hidden>or <a href="/apps/download/mac-intel">download <strong>Intel</strong> build <i>(older Macs)</i></a></div>
|
||||
</div>
|
||||
<p class="download-instructions"></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="other-apps">
|
||||
<h2>Apps for every platform.</h2>
|
||||
|
||||
<div class="apps">
|
||||
<a class="app-option" href="/apps/mac">
|
||||
<i class="icon fa fa-apple" data-label="macOS"></i>
|
||||
</a>
|
||||
<a class="app-option" href="/apps/windows">
|
||||
<i class="icon fa fa-windows" data-label="Windows"></i>
|
||||
</a>
|
||||
<a class="app-option" href="/apps/linux">
|
||||
<i class="icon fa fa-linux" data-label="Linux"></i>
|
||||
</a>
|
||||
<a class="app-option" href="/apps/android">
|
||||
<i class="icon fa fa-android" data-label="Android"></i>
|
||||
</a>
|
||||
<a class="app-option" href="/apps/ios">
|
||||
<i class="icon fa fa-mobile-phone" data-label="iOS"></i>
|
||||
</a>
|
||||
<a class="app-option" href="https://github.com/zulip/zulip-terminal#readme">
|
||||
<i class="icon fa fa-terminal" data-label="Terminal (beta)"></i>
|
||||
</a>
|
||||
</div>
|
||||
<div id="third-party-apps">
|
||||
Zulip also works great in pinned
|
||||
<a href="/help/supported-browsers">browser tabs</a>
|
||||
and multi-protocol desktop chat apps
|
||||
like <a href="https://rambox.pro">Rambox</a>
|
||||
and <a href="https://ferdium.org/">Ferdium</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
42
templates/corporate/attribution.html
Normal file
42
templates/corporate/attribution.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Website attributions | Zulip" %}
|
||||
{% set PAGE_DESCRIPTION = "Attributions for the Zulip website." %}
|
||||
{% set allow_search_engine_indexing = False %} <!-- Page is not indexed by search engines. -->
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page">
|
||||
<div class="hero empty-hero"></div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content">
|
||||
<h1>Website attributions</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<b>On <a href="/for/business/">/for/business/</a> page:</b>
|
||||
<img alt="" src="{{ static('images/landing-page/companies/software-engineer.svg') }}" />
|
||||
<p>"<a href="https://iconscout.com/illustration/software-engineer-2043023">Software engineer Illustration</a>" By <a href="https://iconscout.com/contributors/delesign/illustrations">Delesign Graphic</a> is licensed under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>.</p>
|
||||
</li>
|
||||
<li>
|
||||
<b>On <a href="/zulip-cloud/">/zulip-cloud/</a> page:</b>
|
||||
<img alt="" src="{{ static('images/landing-page/zulip-cloud/support.svg') }}" />
|
||||
<p><a href="https://storyset.com/work">Work illustrations by Storyset</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<b>On <a href="/role/engineers/">/role/engineers/</a> page:</b>
|
||||
<img alt="" src="{{ static('images/landing-page/engineers/programmer.jpg') }}" />
|
||||
<p><a href="https://pixabay.com/photos/woman-program-programming-glasses-3597101/">Programmer illustration by Pixabay</a></p>
|
||||
</li>
|
||||
<li>
|
||||
<b>On <a href="/role/engineers/">/role/engineers/</a> page:</b>
|
||||
<img alt="" src="{{ static('images/landing-page/engineers/focus.jpg') }}" />
|
||||
<p><a href="https://pixabay.com/photos/dog-laptop-computer-glasses-2983021/">Dog in glasses with a laptop illustration by Pixabay</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
654
templates/corporate/billing/billing.html
Normal file
654
templates/corporate/billing/billing.html
Normal file
@@ -0,0 +1,654 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "billing" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Billing") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div id="billing-page" class="register-account flex full-page" data-billing-base-url="{{ billing_base_url }}">
|
||||
<div class="center-block new-style">
|
||||
{% if admin_access and has_active_plan %}
|
||||
{% if is_sponsorship_pending %}
|
||||
<div class="alert alert-success billing-page-success" id="billing-sponsorship-pending-message-top">
|
||||
This organization has requested sponsorship for a
|
||||
{% if is_self_hosted_billing and sponsorship_plan_name != "Community" %}
|
||||
discounted
|
||||
{% endif %}
|
||||
<a href="{{ billing_base_url }}/plans/">{{ sponsorship_plan_name }}</a> plan.<br/><a href="mailto:support@zulip.com">Contact Zulip support</a> with any questions or updates.
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if success_message %}
|
||||
<div class="alert alert-success billing-page-success" id="billing-success-message-top">
|
||||
{% if complimentary_access_next_plan_name and "PLAN_NAME" in success_message %}
|
||||
Your organization will be upgraded to {{ complimentary_access_next_plan_name }} on {{ complimentary_access_plan_end_date }}.
|
||||
{% else %}
|
||||
{{ success_message.replace("PLAN_NAME", plan_name) }}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="pitch">
|
||||
<h1>
|
||||
Zulip
|
||||
{% if is_self_hosted_billing %}
|
||||
{% else %}
|
||||
Cloud
|
||||
{% endif %}
|
||||
billing for {{ org_name }}
|
||||
</h1>
|
||||
</div>
|
||||
<div class="alert alert-danger" id="error-message-box"></div>
|
||||
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}" />
|
||||
<div class="white-box">
|
||||
<div id="billing-page-details">
|
||||
<div class="input-box billing-page-field">
|
||||
<h2 class="billing-section-title">Your plan</h2>
|
||||
<div class="billing-section-content">
|
||||
{% if free_trial or downgrade_at_end_of_free_trial %}
|
||||
<a href="{{ billing_base_url }}/plans/">
|
||||
{{ plan_name }} <i>(free trial)</i>
|
||||
</a>
|
||||
{% elif complimentary_access_plan %}
|
||||
<a href="{{ billing_base_url }}/plans/">
|
||||
{{ plan_name.replace(" (complimentary)", "") -}}
|
||||
</a>
|
||||
<i>(complimentary access)</i>
|
||||
{% else %}
|
||||
<a href="{{ billing_base_url }}/plans/">
|
||||
{{ plan_name }}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% if complimentary_access_plan %}
|
||||
<div class="input-box billing-page-field" id="complimentary-access-end-notice-wrapper">
|
||||
<div id="complimentary-access-end-notice" class="not-editable-realm-field">
|
||||
<i>Your complimentary access to Zulip Basic ends on {{ complimentary_access_plan_end_date }}.</i>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="input-box billing-page-field org-billing-frequency-wrapper"
|
||||
data-current-billing-frequency="{{ billing_frequency }}"
|
||||
{%if free_trial %}data-free-trial="true"{% endif %}
|
||||
{%if downgrade_at_end_of_cycle %}data-downgrade-eoc="true"{% endif %}
|
||||
{%if switch_to_monthly_at_end_of_cycle %}data-switch-to-monthly-eoc="true"{% endif %}
|
||||
{%if switch_to_annual_at_end_of_cycle %}data-switch-to-annual-eoc="true"{% endif %}>
|
||||
<h2 class="billing-section-title">Billing frequency</h2>
|
||||
{% if downgrade_at_end_of_free_trial or downgrade_at_end_of_cycle or complimentary_access_plan or fixed_price_plan or (free_trial and not charge_automatically) %}
|
||||
<div class="billing-section-content">
|
||||
{{ billing_frequency }}
|
||||
</div>
|
||||
{% elif switch_to_annual_at_end_of_cycle %}
|
||||
<select name="schedule" id="org-billing-frequency-annual" class="billing-frequency-select billing-section-content">
|
||||
<option value="Monthly">Monthly</option>
|
||||
<option value="Annual" selected>Annual</option>
|
||||
</select>
|
||||
<div class="billing-frequency-message not-editable-realm-field">
|
||||
Your plan will switch to annual billing on {{ renewal_date }}.
|
||||
</div>
|
||||
{%elif switch_to_monthly_at_end_of_cycle %}
|
||||
<select name="schedule" id="org-billing-frequency-monthly" class="billing-frequency-select billing-section-content">
|
||||
<option value="Monthly" selected>Monthly</option>
|
||||
<option value="Annual">Annual</option>
|
||||
</select>
|
||||
<div class="billing-frequency-message not-editable-realm-field">
|
||||
Your plan will switch to monthly billing on {{ renewal_date }}.
|
||||
</div>
|
||||
{% else %}
|
||||
<select name="schedule" id="org-billing-frequency-default" class="billing-frequency-select billing-section-content">
|
||||
<option value="Monthly" {% if billing_frequency == "Monthly" %}selected{% endif %}>Monthly</option>
|
||||
<option value="Annual" {% if billing_frequency == "Annual" %}selected{% endif %}>Annual</option>
|
||||
</select>
|
||||
{% endif %}
|
||||
<button id="org-billing-frequency-confirm-button" class="hide">
|
||||
<span class="billing-button-text">Update</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
<div id="org-billing-frequency-change-error" class="alert alert-danger billing-page-error"></div>
|
||||
</div>
|
||||
{% if complimentary_access_plan or fixed_price_plan %}
|
||||
{% elif automanage_licenses %}
|
||||
<div class="input-box billing-page-field">
|
||||
<h2 class="billing-section-title">
|
||||
Number of licenses
|
||||
{% if is_self_hosted_billing %}
|
||||
<a href="/help/self-hosted-billing#how-does-automatic-license-management-work" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/help/zulip-cloud-billing#how-does-automatic-license-management-work" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
|
||||
</h2>
|
||||
<div class="billing-section-content">
|
||||
{{ licenses }}
|
||||
<br />
|
||||
Licenses are managed
|
||||
<a href="/help/self-hosted-billing#how-does-automatic-license-management-work">automatically</a>.
|
||||
You can
|
||||
<a class="toggle-license-management" type="button">switch</a>
|
||||
to manual license management.
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if not (free_trial or downgrade_at_end_of_free_trial) %}
|
||||
<div class="input-box billing-page-field input-box-number">
|
||||
<h2 class="billing-section-title">
|
||||
Number of licenses for current billing period
|
||||
{% if is_self_hosted_billing %}
|
||||
<a href="/help/self-hosted-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/help/zulip-cloud-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</h2>
|
||||
<div class="number-input-with-label">
|
||||
<form id="current-license-change-form">
|
||||
<input type="number" name="licenses" autocomplete="off" id="current-manual-license-count" class="short-width-number-input billing-section-content" data-original-value="{{ licenses }}" value="{{ licenses }}" {%if not exempt_from_license_number_check %}min="{{ seat_count }}"{% endif %} required/>
|
||||
</form>
|
||||
<span class="licence-count-in-use">licenses ({{ seat_count }} in use)</span>
|
||||
<button id="current-manual-license-count-update-button" class="license-count-update-button hide">
|
||||
<span class="billing-button-text">Update</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
<div id="current-license-change-error" class="alert alert-danger billing-page-error"></div>
|
||||
<div class="not-editable-realm-field billing-page-license-management-description">
|
||||
Licenses are managed
|
||||
<a href="/help/self-hosted-billing#how-does-manual-license-management-work">manually</a>.
|
||||
You can
|
||||
<a class="toggle-license-management" type="button">switch</a>
|
||||
to automatic license management.
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if not (downgrade_at_end_of_cycle or downgrade_at_end_of_free_trial) %}
|
||||
<div class="input-box billing-page-field input-box-number">
|
||||
<h2 class="billing-section-title">
|
||||
Number of licenses for next billing period
|
||||
{% if is_self_hosted_billing %}
|
||||
<a href="/help/self-hosted-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/help/zulip-cloud-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</h2>
|
||||
<div class="number-input-with-label">
|
||||
<form id="next-license-change-form">
|
||||
<input type="number" name="licenses_at_next_renewal" autocomplete="off" id="next-manual-license-count" class="short-width-number-input billing-section-content" data-original-value="{{ licenses_at_next_renewal }}" value="{{ licenses_at_next_renewal }}" {%if not exempt_from_license_number_check %}min="{{ seat_count }}"{% endif %} required/>
|
||||
</form>
|
||||
<span class="licence-count-in-use">licenses ({{ seat_count }} in use)</span>
|
||||
<button id="next-manual-license-count-update-button" class="license-count-update-button hide">
|
||||
<span class="billing-button-text">Update</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
<div id="next-license-change-error" class="alert alert-danger billing-page-error"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<form id="toggle-license-management-form">
|
||||
<input name="toggle_license_management" type="hidden" value="true" />
|
||||
</form>
|
||||
<div id="toggle-license-management-error" class="alert alert-danger"></div>
|
||||
<div class="input-box billing-page-field">
|
||||
<h2 class="billing-section-title">Billing contact</h2>
|
||||
<div class="billing-section-content">
|
||||
<a href="mailto:{{ stripe_email }}">{{ stripe_email }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="cardchange-error" class="alert alert-danger"></div>
|
||||
<div class="input-box billing-page-field">
|
||||
<h2 class="billing-section-title">Payment method</h2>
|
||||
<div class="billing-section-content">
|
||||
{{ payment_method }}
|
||||
</div>
|
||||
{% if charge_automatically %}
|
||||
<div class="user-stripe-card-update input-box billing-page-field">
|
||||
<button class="user-stripe-card-update-button" id="update-card-button">
|
||||
<span class="billing-button-text">Update card</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
<br />
|
||||
<div class="stripe-customer-billing-portal not-editable-realm-field">
|
||||
<a href="{{ billing_base_url }}/customer_portal/?return_to_billing_page=true">View and update</a> billing information that will be displayed on your next invoice and receipt.
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-box billing-page-field">
|
||||
<div class="next-payment-info not-editable-realm-field">
|
||||
{% if renewal_amount %}
|
||||
{% if downgrade_at_end_of_cycle %}
|
||||
{% if is_self_hosted_billing %}
|
||||
Your organization will be downgraded to the <strong>Free</strong> plan at the end of the
|
||||
current billing period ({{ renewal_date }}). You will lose access to the
|
||||
<a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">benefits</a>
|
||||
of your current plan. For organizations with more than 10 users, this
|
||||
includes losing access to the
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Mobile Push Notification Service</a>.
|
||||
{% else %}
|
||||
Your organization will be downgraded to <strong>Zulip Cloud Free</strong> at the end of the current billing
|
||||
period (<strong>{{ renewal_date }}</strong>). You will lose access to unlimited search history and
|
||||
<a href="{{ billing_base_url }}/plans/">other features</a> of your current plan.
|
||||
{% endif %}
|
||||
{% elif downgrade_at_end_of_free_trial %}
|
||||
{% if is_self_hosted_billing %}
|
||||
Your organization will be downgraded to the <strong>Free</strong> plan at the end of the free trial
|
||||
({{ renewal_date }}). You will lose access to the
|
||||
<a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">benefits</a>
|
||||
of your current plan. For organizations with more than 10 users, this
|
||||
includes losing access to the
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Mobile Push Notification Service</a>.
|
||||
{% else %}
|
||||
Your organization will be downgraded to <strong>Zulip Cloud Free</strong> at the end of the free trial
|
||||
(<strong>{{ renewal_date }}</strong>). You will lose access to unlimited search history and
|
||||
<a href="{{ billing_base_url }}/plans/">other features</a> of your current plan.
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if fixed_price_plan %}
|
||||
This is a fixed-price plan.
|
||||
{% endif %}
|
||||
{% if charge_automatically %}
|
||||
{% if complimentary_access_plan %}
|
||||
Your plan will automatically upgrade to {{ complimentary_access_next_plan_name }} on {{ complimentary_access_plan_end_date }}.
|
||||
{% else %}
|
||||
Your plan will automatically renew on <strong>{{ renewal_date }}</strong>.
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if free_trial %}
|
||||
{% if has_paid_invoice_for_free_trial %}
|
||||
You have no outstanding invoices. Your next plan renewal date is <b>{{ free_trial_next_renewal_date_after_invoice_paid }}</b>. An invoice will be sent to <b>{{ stripe_email }}</b> on the same day.
|
||||
{% else %}
|
||||
To ensure continuous access to {{ plan_name }}, please pay your <a href="{{ billing_base_url }}/invoices/">invoice</a> before the end of your trial.
|
||||
Your free trial ends on <br /><strong>{{ renewal_date }}</strong>.
|
||||
{% endif %}
|
||||
{% else %}
|
||||
Next invoice will be sent on <strong>{{ renewal_date }}</strong>.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<br />
|
||||
{% if free_trial and not charge_automatically %}
|
||||
{% else %}
|
||||
<div class="input-box billing-page-field">
|
||||
<h2 class="billing-section-title">Expected next charge</h2>
|
||||
{% if not fixed_price_plan %}
|
||||
<div class="billing-section-content">
|
||||
${{ pre_discount_renewal_cents }} (${{ price_per_license }} x {{ licenses_at_next_renewal }} {{ 'user' if licenses_at_next_renewal == 1 else 'users' }} x
|
||||
{% if switch_to_annual_at_end_of_cycle %}
|
||||
12 months
|
||||
{%- elif switch_to_monthly_at_end_of_cycle %}
|
||||
1 month
|
||||
{%- else %}
|
||||
{{ "1 month" if billing_frequency == "Monthly" else "12 months" }}
|
||||
{%- endif -%})
|
||||
{% if discounted_months_left != 0 %}
|
||||
<br />
|
||||
<span class="flat-discount-minus-sign">−</span>
|
||||
<span class="flat-discount-separator">${{ flat_discount }}/month off</span> <i class="billing-page-discount">({{ discounted_months_left }} {{ "month" if discounted_months_left == 1 else "months" }} remaining)</i>
|
||||
{% endif %}
|
||||
{% if discount_percent %}
|
||||
<br />
|
||||
<i class="billing-page-discount">Includes: {{ discount_percent }}% discount</i>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<h1>${{ renewal_amount }}</h1>
|
||||
{% endif %}
|
||||
{% if not fixed_price_plan and using_min_licenses_for_plan %}
|
||||
<i>Minimum purchase for this plan: {{ min_licenses_for_plan }} licenses</i>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% elif fixed_price_plan %}
|
||||
This is a fixed-price plan. Your plan ends on <strong>{{ renewal_date }}</strong>.
|
||||
You will be contacted by Zulip Sales a couple of months before <strong>{{renewal_date}}</strong> to discuss plan renewal.
|
||||
{% else %}
|
||||
Your plan ends on <strong>{{ renewal_date }}</strong>, and does not renew.
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-box billing-page-field">
|
||||
<h2 class="billing-section-title">Invoices</h2>
|
||||
<div class="billing-section-content">
|
||||
<a href="{{ billing_base_url }}/invoices/">
|
||||
View invoices
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% if free_trial and not charge_automatically %}
|
||||
<!--
|
||||
We don't show cancel plan button for free trial with invoice payments to avoid confusion about the current status.
|
||||
Plan automatically downgrades anyway if user fails to pay the invoice.
|
||||
-->
|
||||
{% else %}
|
||||
<div id="planchange-error" class="alert alert-danger"></div>
|
||||
<div id="planchange-input-section">
|
||||
{% if free_trial and not downgrade_at_end_of_free_trial %}
|
||||
<div class="end-free-trial plan-toggle-action input-box billing-page-field" id="end-free-trial">
|
||||
<button class="end-free-trial-button plan-toggle-action-button">
|
||||
<span class="billing-button-text">Cancel plan</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
{% elif downgrade_at_end_of_cycle or downgrade_at_end_of_free_trial %}
|
||||
<div class="reactivate-current-plan plan-toggle-action input-box billing-page-field" id="reactivate-subscription">
|
||||
<button class="reactivate-current-plan-button plan-toggle-action-button">
|
||||
<span class="billing-button-text">
|
||||
{% if downgrade_at_end_of_free_trial %}
|
||||
Cancel downgrade
|
||||
{% else %}
|
||||
Reactivate subscription
|
||||
{% endif %}
|
||||
</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
{% elif complimentary_access_plan %}
|
||||
<div class="plan-toggle-action input-box billing-page-field" id="cancel-complimentary-access-upgrade">
|
||||
<button class="plan-toggle-action-button">
|
||||
<span class="billing-button-text">Cancel upgrade</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="cancel-current-plan plan-toggle-action input-box billing-page-field" id="cancel-subscription">
|
||||
<button class="plan-toggle-action-button {% if is_self_hosted_billing %}cancel-current-self-hosted-plan-button{% else %}cancel-current-cloud-plan-button{% endif %}">
|
||||
<span class="billing-button-text">Cancel plan</span>
|
||||
<object class="loader billing-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<form id="planchange-form">
|
||||
{% if free_trial %}
|
||||
<input name="status" type="hidden" value="{{ CustomerPlan.DOWNGRADE_AT_END_OF_FREE_TRIAL }}" />
|
||||
{% elif downgrade_at_end_of_free_trial %}
|
||||
<input name="status" type="hidden" value="{{ CustomerPlan.FREE_TRIAL }}" />
|
||||
{% elif downgrade_at_end_of_cycle or complimentary_access_plan %}
|
||||
<input name="status" type="hidden" value="{{ CustomerPlan.ACTIVE }}" />
|
||||
{% else %}
|
||||
<input name="status" type="hidden" value="{{ CustomerPlan.DOWNGRADE_AT_END_OF_CYCLE }}" />
|
||||
{% endif %}
|
||||
</form>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="support-link">
|
||||
<p>
|
||||
To make changes to your plan or view your billing history <a href="mailto:support@zulip.com">contact Zulip support</a>.
|
||||
</p>
|
||||
</div>
|
||||
{% else %}
|
||||
<!-- For sponsored or sponsorship pending organizations we redirect to /sponsorship page. -->
|
||||
<!-- For organizations on free plan we redirect to /plans page. -->
|
||||
<div class="billing-status-page">
|
||||
<div class="pitch">
|
||||
<h1>Zulip Cloud billing for {{ org_name }}</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<p>
|
||||
You do not have permission to view this page.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div id="confirm-end-free-trial" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-end-free-trial-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-end-free-trial-label" class="modal__title dialog_heading">
|
||||
Downgrade {{ org_name }} to
|
||||
{% if is_self_hosted_billing %}
|
||||
Free plan?
|
||||
{% else %}
|
||||
Zulip Cloud Free?
|
||||
{% endif %}
|
||||
</h1>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<main class="modal__content">
|
||||
<p>
|
||||
{% if is_self_hosted_billing %}
|
||||
Your organization will be downgraded to the <strong>Free</strong> plan at the
|
||||
end of your free trial ({{ renewal_date }}). You will lose access to the
|
||||
<a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">benefits</a>
|
||||
of your current plan. For organizations with more than 10 users, this
|
||||
includes losing access to the
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Mobile Push Notification Service</a>.
|
||||
{% else %}
|
||||
Your organization will be downgraded to <strong>Zulip Cloud Free</strong> at the end of your free trial
|
||||
({{ renewal_date }}). You will lose access to unlimited search history and
|
||||
<a href="{{ billing_base_url }}/plans/">other features</a>
|
||||
of your current plan. Are you sure you want to continue?
|
||||
{% endif %}
|
||||
</p>
|
||||
</main>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Never mind') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>{{ _('Downgrade') }}</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="confirm-licenses-modal-increase" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-licenses-modal-increase-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-licenses-modal-increase-label" class="modal__title dialog_heading">
|
||||
Confirm adding licenses
|
||||
</h1>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<main class="modal__content">
|
||||
<p>
|
||||
Are you sure you want to increase the number of licenses from
|
||||
<b><span class="current_license_count_holder"></span></b> to
|
||||
<b><span class="new_license_count_holder"></span></b>?
|
||||
</p>
|
||||
<p>
|
||||
{% if payment_method == "Invoice" %}
|
||||
You will receive an invoice for
|
||||
{% else %}
|
||||
You will be charged for
|
||||
{% endif %}
|
||||
<b><span class="difference_license_count_holder"></span></b> additional licenses.
|
||||
</p>
|
||||
</main>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Cancel') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>{{ _('Confirm') }}</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="confirm-licenses-modal-decrease" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-licenses-modal-decrease-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-licenses-modal-decrease-label" class="modal__title dialog_heading">
|
||||
Confirm decreasing licenses
|
||||
</h1>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<main class="modal__content">
|
||||
<p>
|
||||
Are you sure you want to decrease the number of licenses from
|
||||
<b><span class="current_license_count_holder"></span></b> to
|
||||
<b><span class="new_license_count_holder"></span></b>?
|
||||
</p>
|
||||
<p>
|
||||
Your organization will be limited to at most
|
||||
<b><span class="new_license_count_holder"></span></b> users.
|
||||
</p>
|
||||
</main>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Cancel') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>{{ _('Confirm') }}</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="confirm-cancel-cloud-subscription-modal" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-cancel-cloud-subscription-modal-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-cancel-cloud-subscription-modal-label" class="modal__title dialog_heading">
|
||||
Downgrade {{ org_name }} to Zulip Cloud Free?
|
||||
</h1>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<main class="modal__content">
|
||||
<p>
|
||||
Your organization will be downgraded to <strong>Zulip Cloud Free</strong> at the end of the current billing
|
||||
period ({{ renewal_date }}). You will lose access to unlimited search history and
|
||||
<a href="{{ billing_base_url }}/plans/">other features</a>
|
||||
of your current plan. Are you sure you want to continue?
|
||||
</p>
|
||||
</main>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Never mind') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>{{ _('Downgrade') }}</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="confirm-cancel-self-hosted-subscription-modal" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-cancel-self-hosted-subscription-modal-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-cancel-self-hosted-subscription-modal-label" class="modal__title dialog_heading">
|
||||
Downgrade {{ org_name }} to the Free plan?
|
||||
</h1>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<main class="modal__content">
|
||||
<p>
|
||||
Your organization will be downgraded to the <strong>Free</strong> plan at the end of the
|
||||
current billing period ({{ renewal_date }}). You will lose access to the
|
||||
<a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">benefits</a>
|
||||
of your current plan. For organizations with more than 10 users, this
|
||||
includes losing access to the
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Mobile Push Notification Service</a>.
|
||||
</p>
|
||||
</main>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Never mind') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>{{ _('Downgrade') }}</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="confirm-cancel-complimentary-access-upgrade-modal" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-cancel-complimentary-access-upgrade-modal-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-cancel-complimentary-access-upgrade-modal-label" class="modal__title dialog_heading">
|
||||
Cancel scheduled upgrade of {{ org_name }}?
|
||||
</h1>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<main class="modal__content">
|
||||
<p>
|
||||
Your organization will be not be upgraded to <strong>{{ complimentary_access_next_plan_name }}</strong>
|
||||
on {{ complimentary_access_plan_end_date }}. If your organization has more than
|
||||
10 users at that time, you will lose access to the
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Mobile Push Notification Service</a>.
|
||||
You will also not receive the <a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">other benefits</a>
|
||||
of the {{ complimentary_access_next_plan_name }} plan. Are you sure you want to continue?
|
||||
</p>
|
||||
</main>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Never mind') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>{{ _('Cancel upgrade') }}</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="confirm-toggle-license-management-modal" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-toggle-license-management-modal-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-toggle-license-management-modal-label" class="modal__title dialog_heading">
|
||||
Confirm switching to
|
||||
{% if automanage_licenses %}
|
||||
manual
|
||||
{% else %}
|
||||
automatic
|
||||
{% endif %}
|
||||
license management
|
||||
</h1>
|
||||
<div class="modal__subtitle">
|
||||
Are you sure you want to switch to
|
||||
<a href="/help/self-hosted-billing#how-does-automatic-license-management-work">
|
||||
{% if automanage_licenses %}
|
||||
manual
|
||||
{% else %}
|
||||
automatic
|
||||
{% endif %}
|
||||
license management
|
||||
</a>?
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Never mind') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>{{ _('Confirm') }}</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>Not available for demo organizations | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div class="app portico-page">
|
||||
<div class="app-main portico-page-container center-block flex full-page account-creation new-style">
|
||||
<div class="inline-block">
|
||||
<div class="get-started">
|
||||
<h1>Not available for demo organizations</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<p>
|
||||
{% if upgrade_request %}
|
||||
Demo organizations cannot be directly upgraded to a paid plan.
|
||||
{% elif sponsorship_request %}
|
||||
Demo organizations cannot apply for sponsorship.
|
||||
{% endif %}
|
||||
Please start by
|
||||
<a href="/help/demo-organizations#convert-a-demo-organization-to-a-permanent-organization">
|
||||
converting your demo organization
|
||||
</a>
|
||||
to a permanent Zulip Cloud organization.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
53
templates/corporate/billing/event_status.html
Normal file
53
templates/corporate/billing/event_status.html
Normal file
@@ -0,0 +1,53 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "billing-event-status" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Billing status") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block customhead %}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="app portico-page">
|
||||
<div class="billing-upgrade-page">
|
||||
<div class="hero small-hero"></div>
|
||||
|
||||
<div class="page-content">
|
||||
<div class="main">
|
||||
<br />
|
||||
<div id="data" data-stripe-session-id="{{ stripe_session_id}}" data-stripe-invoice-id="{{ stripe_invoice_id }}" data-billing-base-url="{{ billing_base_url }}"></div>
|
||||
<div class="alert alert-success" id="webhook-success"></div>
|
||||
<div class="alert alert-danger" id="webhook-error"></div>
|
||||
<div id="webhook-loading">
|
||||
<div class="zulip-loading-logo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 773.12 773.12">
|
||||
<circle cx="386.56" cy="386.56" r="386.56"/>
|
||||
<path d="M566.66 527.25c0 33.03-24.23 60.05-53.84 60.05H260.29c-29.61 0-53.84-27.02-53.84-60.05 0-20.22 9.09-38.2 22.93-49.09l134.37-120c2.5-2.14 5.74 1.31 3.94 4.19l-49.29 98.69c-1.38 2.76.41 6.16 3.25 6.16h191.18c29.61 0 53.83 27.03 53.83 60.05zm0-281.39c0 20.22-9.09 38.2-22.93 49.09l-134.37 120c-2.5 2.14-5.74-1.31-3.94-4.19l49.29-98.69c1.38-2.76-.41-6.16-3.25-6.16H260.29c-29.61 0-53.84-27.02-53.84-60.05s24.23-60.05 53.84-60.05h252.54c29.61 0 53.83 27.02 53.83 60.05z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<div id="webhook_loading_indicator"></div>
|
||||
</div>
|
||||
|
||||
<form id="restartsession-form">
|
||||
<input type="hidden" name="stripe_invoice_id" value="{{ stripe_invoice_id }}" />
|
||||
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}" />
|
||||
</form>
|
||||
<div class="alert alert-success" id="restartsession-success">Redirecting to Stripe Checkout</div>
|
||||
<div class="alert alert-danger" id="restartsession-error"></div>
|
||||
<div id="restartsession-loading">
|
||||
<div class="zulip-loading-logo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 773.12 773.12">
|
||||
<circle cx="386.56" cy="386.56" r="386.56"/>
|
||||
<path d="M566.66 527.25c0 33.03-24.23 60.05-53.84 60.05H260.29c-29.61 0-53.84-27.02-53.84-60.05 0-20.22 9.09-38.2 22.93-49.09l134.37-120c2.5-2.14 5.74 1.31 3.94 4.19l-49.29 98.69c-1.38 2.76.41 6.16 3.25 6.16h191.18c29.61 0 53.83 27.03 53.83 60.05zm0-281.39c0 20.22-9.09 38.2-22.93 49.09l-134.37 120c-2.5 2.14-5.74-1.31-3.94-4.19l49.29-98.69c1.38-2.76-.41-6.16-3.25-6.16H260.29c-29.61 0-53.84-27.02-53.84-60.05s24.23-60.05 53.84-60.05h252.54c29.61 0 53.83 27.02 53.83 60.05z"/>
|
||||
</svg>
|
||||
</div>
|
||||
<div id="restartsession_loading_indicator"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
56
templates/corporate/billing/legacy_server_login.html
Normal file
56
templates/corporate/billing/legacy_server_login.html
Normal file
@@ -0,0 +1,56 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "billing_auth" %}
|
||||
|
||||
{% set PAGE_TITLE = "Authenticate server for Zulip plan management" %}
|
||||
|
||||
{% block portico_content %}
|
||||
|
||||
<div id="server-login-page" class="register-account flex full-page">
|
||||
<div class="center-block new-style">
|
||||
<div class="pitch">
|
||||
<h1>Authenticate server<br/>for Zulip plan management</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<div id="server-login-page-details">
|
||||
{% if error_message %}
|
||||
<div id="server-login-error" class="alert alert-danger">{{ error_message }}</div>
|
||||
{% endif %}
|
||||
<div id="server-login-input-section">
|
||||
<form id="server-login-form" method="post" action="/serverlogin/">
|
||||
{{ csrf_input }}
|
||||
{% if next_page %}
|
||||
<input type="hidden" name="next_page" value="{{ next_page }}" />
|
||||
{% endif %}
|
||||
<div id="server-login-form-title" class="input-box server-login-form">
|
||||
<div class="not-editable-realm-field">
|
||||
To access plan management for a Zulip
|
||||
server, first enter <a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html#plan-management-for-an-entire-zulip-server">your server's credentials</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-box server-login-form-field">
|
||||
<label for="zulip-org-id" class="inline-block label-title">
|
||||
zulip_org_id
|
||||
</label>
|
||||
<input id="zulip-org-id" name="zulip_org_id" class="required" type="text"/>
|
||||
<div class="alert alert-danger server-login-form-field-error zulip_org_id-error"></div>
|
||||
</div>
|
||||
<div class="input-box server-login-form-field">
|
||||
<label for="password" class="inline-block label-title">zulip_org_key</label>
|
||||
<input id="password" name="zulip_org_key" class="required" type="password"/>
|
||||
<div class="alert alert-danger server-login-form-field-error zulip_org_key-error"></div>
|
||||
</div>
|
||||
<div id="server-login-page-button-container">
|
||||
<button type="submit" id="server-login-button" class="stripe-button-el invoice-button">
|
||||
<span class="server-login-button-text">Continue</span>
|
||||
<img class="loader remote-billing-button-loader" src="{{ static('images/loading/loader-white.svg') }}" alt="" />
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
{% extends "zerver/portico_signup.html" %}
|
||||
{% set entrypoint = "billing_auth" %}
|
||||
|
||||
{% block title %}
|
||||
{% if remote_server_hostname %}
|
||||
<title>Enter log in email | Zulip</title>
|
||||
{% else %}
|
||||
<title>Enter email | Zulip</title>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div class="register-account flex full-page" id="remote-billing-confirm-email">
|
||||
<div class="center-block new-style">
|
||||
<div class="pitch">
|
||||
{% if remote_server_hostname %}
|
||||
<h1>Enter log in email</h1>
|
||||
{% else %}
|
||||
<h1>Enter email</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<form id="remote-billing-confirm-email-form" method="post" action="{{ action_url }}">
|
||||
{{ csrf_input }}
|
||||
{% if next_page %}
|
||||
<input type="hidden" name="next_page" value="{{ next_page }}" />
|
||||
{% endif %}
|
||||
<div class="input-box server-login-form-field" id="remote-billing-confirm-email-intro">
|
||||
<div class="not-editable-realm-field">
|
||||
{% if remote_server_hostname %}
|
||||
Enter the email address of the person who is logging in to manage plans and billing for this server (yourself or someone else). They will receive an email from Zulip with a log in link.
|
||||
{% else %}
|
||||
Enter the email address you want to use for Zulip plan management. You will receive a one-time confirmation email.
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="input-box server-login-form-field">
|
||||
<label for="email" class="inline-block label-title">Email</label>
|
||||
<input id="email" name="email" type="email" class="required" {% if email %}value="{{ email }}"{% endif %} />
|
||||
<div id="server-login-form-email-error" class="alert alert-danger server-login-form-field-error email-error"></div>
|
||||
</div>
|
||||
<div class="upgrade-button-container">
|
||||
<button type="submit" id="remote-billing-confirm-email-button" class="stripe-button-el invoice-button">
|
||||
<span class="server-login-button-text">Continue</span>
|
||||
<img class="loader remote-billing-button-loader" src="{{ static('images/loading/loader-white.svg') }}" alt="" />
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,41 @@
|
||||
{% extends "zerver/portico_signup.html" %}
|
||||
{% set entrypoint = "billing_auth" %}
|
||||
|
||||
{% block title %}
|
||||
{% if remote_server_hostname %}
|
||||
<title>Log in link sent | Zulip</title>
|
||||
{% else %}
|
||||
<title>Confirm your email address | Zulip</title>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div class="app portico-page">
|
||||
<div class="app-main portico-page-container center-block flex full-page account-creation account-email-confirm-container new-style">
|
||||
<div class="inline-block">
|
||||
|
||||
<div class="get-started">
|
||||
{% if remote_server_hostname %}
|
||||
<h1>Log in link sent</h1>
|
||||
{% else %}
|
||||
<h1>Confirm your email address</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="white-box">
|
||||
{% if remote_server_hostname %}
|
||||
<p>We have sent <span class="user_email semi-bold">{{ email }}</span> a log in link for Zulip plan management. This link will expire in 24 hours.</p>
|
||||
{% else %}
|
||||
<p>To finish logging in, check your email account (<span class="user_email semi-bold">{{ email }}</span>) for a confirmation email from Zulip.</p>
|
||||
{% endif %}
|
||||
|
||||
{% include 'zerver/dev_env_email_access_details.html' %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
||||
{% block customhead %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,81 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "billing_auth" %}
|
||||
|
||||
{% block title %}
|
||||
<title>
|
||||
{% if next_page and next_page == "deactivate" %}
|
||||
Log in to deactivate registration for {{ host }} | Zulip
|
||||
{% else %}
|
||||
Log in to Zulip plan management for {{ host }} | Zulip
|
||||
{% endif %}
|
||||
</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div id="remote-billing-confirm-login-page" class="register-account flex full-page">
|
||||
<div class="center-block new-style">
|
||||
<div class="pitch">
|
||||
{% if next_page and next_page == "deactivate" %}
|
||||
<h1>Log in to deactivate registration for<br/>{{ host }}</h1>
|
||||
{% else %}
|
||||
<h1>Log in to Zulip plan management for<br/>{{ host }}</h1>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<form id="remote-billing-confirm-login-form" method="post" action="{{ action_url }}">
|
||||
{{ csrf_input }}
|
||||
<div class="input-box remote-billing-confirm-login-form-field">
|
||||
<label for="full_name" class="inline-block label-title">Name</label>
|
||||
{% if not user_full_name %}
|
||||
<input id="full_name" name="full_name" class="required" type="text" />
|
||||
<div id="remote-billing-confirm-login-form-full_name-error" class="alert alert-danger remote-billing-confirm-login-form-field-error full_name-error"></div>
|
||||
{% else %}
|
||||
<div class="not-editable-realm-field">
|
||||
{{ user_full_name }}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="input-box remote-billing-confirm-login-form-field">
|
||||
<label for="user-email" class="inline-block label-title">
|
||||
Email
|
||||
</label>
|
||||
<div id="user-email" class="not-editable-realm-field">
|
||||
{{ user_email }}
|
||||
</div>
|
||||
</div>
|
||||
<!-- user_full_name is not present only when user first logs in which also perfect to set email preferences -->
|
||||
{% if (not user_full_name) and (not (next_page and next_page == "deactivate")) %}
|
||||
<div class="input-group remote-billing-confirm-email-subscription-form-field">
|
||||
<label for="enable-major-release-emails" class="checkbox">
|
||||
<input id="enable-major-release-emails" name="enable_major_release_emails" type="checkbox" value="true" checked="checked" />
|
||||
<span class="rendered-checkbox"></span>
|
||||
Sign me up for emails about <strong>major Zulip releases</strong> and other big announcements (a few times a year)
|
||||
</label>
|
||||
<label for="enable-maintenance-release-emails" class="checkbox">
|
||||
<input id="enable-maintenance-release-emails" name="enable_maintenance_release_emails" type="checkbox" value="true" checked="checked" />
|
||||
<span class="rendered-checkbox"></span>
|
||||
Sign me up for emails about <strong>all Zulip releases</strong>, including security and maintenance releases (recommended for server administrators)
|
||||
</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if tos_consent_needed %}
|
||||
<div class="input-group terms-of-service remote-billing-confirm-login-form-field" id="remote-billing-confirm-login-tos-wrapper">
|
||||
<label for="remote-billing-confirm-login-tos" class="checkbox">
|
||||
<input id="remote-billing-confirm-login-tos" name="tos_consent" class="required" type="checkbox" value="true" />
|
||||
<span class="rendered-checkbox"></span>
|
||||
I agree to the <a href="{{ root_domain_url }}/policies/terms" target="_blank" rel="noopener noreferrer">Terms of Service</a>.
|
||||
</label>
|
||||
<div id="remote-billing-confirm-login-form-tos_consent-error" class="alert alert-danger remote-billing-confirm-login-form-field-error tos_consent-error"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="upgrade-button-container">
|
||||
<button type="submit" id="remote-billing-confirm-login-button" class="stripe-button-el invoice-button">
|
||||
<span class="remote-billing-confirm-login-button-text">Continue</span>
|
||||
<img class="loader remote-billing-button-loader" src="{{ static('images/loading/loader-white.svg') }}" alt="" />
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,55 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "billing_auth" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Deactivate server registration?") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div id="server-deactivate-page" class="register-account account-deactivation flex full-page">
|
||||
<div class="new-style">
|
||||
<div class="pitch">
|
||||
<h1>
|
||||
Deactivate registration for<br />{{ server_hostname }}?
|
||||
</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<div id="server-deactivate-details">
|
||||
{% if show_existing_plan_error %}
|
||||
<div id="server-deactivate-error" class="alert alert-danger">
|
||||
Could not deactivate registration. You must first
|
||||
<a href="https://zulip.com/help/self-hosted-billing#cancel-paid-plan">cancel</a>
|
||||
all paid plans associated with this server, including scheduled plan upgrades.
|
||||
</div>
|
||||
{% endif %}
|
||||
<form id="server-deactivate-form" method="post" action="{{ action_url }}">
|
||||
{{ csrf_input }}
|
||||
<div id="server-deactivate-form-top-description" class="input-box server-deactivate-form-field">
|
||||
<div class="not-editable-realm-field">
|
||||
You are about to deactivate this server's
|
||||
registration with
|
||||
the <a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Zulip
|
||||
Mobile Push Notification Service</a>. This
|
||||
will disable delivery of mobile push
|
||||
notifications for all organizations hosted
|
||||
on <b>{{ server_hostname }}</b>.
|
||||
</div>
|
||||
</div>
|
||||
<input type="hidden" name="confirmed" value="true" />
|
||||
<div class="upgrade-button-container">
|
||||
<button type="submit" id="server-deactivate-button" class="stripe-button-el invoice-button">
|
||||
<span class="server-deactivate-button-text">Deactivate registration</span>
|
||||
<img class="loader remote-billing-button-loader" src="{{ static('images/loading/loader-white.svg') }}" alt="" />
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="input-box upgrade-page-field">
|
||||
<div class="support-link not-editable-realm-field">
|
||||
Questions? Contact <a href="mailto:support@zulip.com">support@zulip.com</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,32 @@
|
||||
{% extends "zerver/portico_signup.html" %}
|
||||
{% set entrypoint = "billing_auth" %}
|
||||
|
||||
{% block title %}
|
||||
<title>Server registration deactivated | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div class="register-account flex full-page" id="account-deactivated-success-page">
|
||||
<div class="center-block new-style">
|
||||
<div class="pitch">
|
||||
<h1>
|
||||
Registration deactivated for<br />{{ server_hostname }}
|
||||
</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<div id="account-deactivated-success-page-details">
|
||||
<div class="input-box account-deactivated-success-page-field" id="account-deactivated-success-page-top-message">
|
||||
<div class="not-editable-realm-field">
|
||||
Your server's registration has been deactivated.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
{% block customhead %}
|
||||
{{ super() }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,30 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Plan management not available") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img src="{{ static('images/errors/400art.svg') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Plan management not available") }}</h1>
|
||||
<p>
|
||||
{% trans %} Plan management is not available for this
|
||||
organization, because your Zulip server is already on a
|
||||
{{ server_plan_name }} plan, which covers all
|
||||
organizations on this server. See the <b>Server-level billing</b> tab of the
|
||||
<a href="https://zulip.com/help/self-hosted-billing#log-in-to-billing-management">log
|
||||
in instructions</a> to administer the plan for your
|
||||
Zulip server.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans %} To move the plan from the server to this
|
||||
organization, or for other questions, <a href="mailto:{{
|
||||
support_email }}">contact support</a>.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,26 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Plan management not available") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img src="{{ static('images/errors/400art.svg') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Plan management not available") }}</h1>
|
||||
<p>
|
||||
{% trans %}
|
||||
Plan management for this server is not available because at least one organization
|
||||
hosted on this server already has an active plan.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
<p>
|
||||
{% trans %}
|
||||
<a href="https://zulip.com/help/self-hosted-billing#manage-billing">Log in</a> to plan management for your
|
||||
organization instead, or <a href='mailto:{{ support_email }}'>contact support</a> with any questions.
|
||||
{% endtrans %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,19 @@
|
||||
{% extends "zerver/portico_error_pages/portico_error_page.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Rate limit exceeded") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block error_page_content %}
|
||||
<img src="{{ static('images/errors/500art.svg') }}" alt=""/>
|
||||
<div class="errorbox">
|
||||
<div class="errorcontent">
|
||||
<h1 class="lead">{{ _("Rate limit exceeded.") }}</h1>
|
||||
<p>
|
||||
{% trans %}Your server has exceeded the limit for how
|
||||
often this action can be performed.{% endtrans %}
|
||||
{% trans %}You can try again in {{retry_after_string}}.{% endtrans %}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
42
templates/corporate/billing/server_not_uploading_data.html
Normal file
42
templates/corporate/billing/server_not_uploading_data.html
Normal file
@@ -0,0 +1,42 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
|
||||
{% block title %}
|
||||
<title>Required metadata missing | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div class="center-block flex full-page account-creation new-style">
|
||||
<div class="inline-block">
|
||||
<div class="get-started">
|
||||
<h1>Error: Server not uploading basic metadata</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<p>
|
||||
Managing your Zulip plan requires your server to upload
|
||||
up-to-date
|
||||
<a
|
||||
href="https://zulip.readthedocs.io/en/latest/production/mobile-push-notifications.html#uploading-basic-metadata">basic
|
||||
metadata</a>. This data is not being uploaded successfully.
|
||||
</p>
|
||||
{% if remote_realm_session %}
|
||||
<p>
|
||||
If your Zulip server's administrator is not able to fix this, <a
|
||||
href="mailto:support@zulip.com">contact Zulip support</a>.
|
||||
</p>
|
||||
{% elif supports_remote_realms %}
|
||||
<p>
|
||||
If your Zulip server's administrator is not able to fix this, <a
|
||||
href="mailto:support@zulip.com">contact Zulip support</a>.
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
Your Zulip server's administrator can fix this issue by <a
|
||||
href="https://zulip.readthedocs.io/en/stable/production/upgrade.html">upgrading</a>
|
||||
the server to Zulip 8.0+, or <a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html#uploading-usage-statistics">enabling the
|
||||
<code>SUBMIT_USAGE_STATISTICS</code> setting</a>.
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
188
templates/corporate/billing/sponsorship.html
Normal file
188
templates/corporate/billing/sponsorship.html
Normal file
@@ -0,0 +1,188 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "sponsorship" %}
|
||||
|
||||
{% block title %}
|
||||
<title>
|
||||
{% if is_sponsored or is_sponsorship_pending %}
|
||||
Zulip
|
||||
{% if is_remotely_hosted %}
|
||||
{% else %}
|
||||
Cloud
|
||||
{% endif %}
|
||||
billing for {{ org_name }}
|
||||
{% else %}
|
||||
Request Zulip
|
||||
{% if is_remotely_hosted %}
|
||||
{% else %}
|
||||
Cloud
|
||||
{% endif %} sponsorship
|
||||
{% endif %}
|
||||
</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
|
||||
{% if is_sponsored or is_sponsorship_pending %}
|
||||
|
||||
<div class="register-account flex full-page sponsorship-status-page">
|
||||
<div class="center-block new-style">
|
||||
<div class="alert alert-success sponsorship-page-success" id="sponsorship-status-success-message-top">
|
||||
{% if is_sponsored %}
|
||||
Zulip is sponsoring a free <a href="{{ billing_base_url }}/plans/">{{ sponsorship_plan_name }}</a> plan for this organization. 🎉
|
||||
{% else %}
|
||||
This organization has requested sponsorship for a
|
||||
{% if is_remotely_hosted and sponsorship_plan_name != "Community" %}
|
||||
discounted
|
||||
{% endif %}
|
||||
<a href="{{ billing_base_url }}/plans/">{{ sponsorship_plan_name }}</a> plan.<br/><a href="mailto:support@zulip.com">Contact Zulip support</a> with any questions or updates.
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="pitch">
|
||||
<h1>
|
||||
Zulip
|
||||
{% if is_remotely_hosted %}
|
||||
{% else %}
|
||||
Cloud
|
||||
{% endif %}
|
||||
billing for {{ org_name }}
|
||||
</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<div id="sponsorship-status-page-details">
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="sponsored-org-current-plan" class="inline-block label-title">Your plan</label>
|
||||
<div id="sponsored-org-current-plan" class="not-editable-realm-field">
|
||||
{% if is_sponsored %}
|
||||
<a href="{{ billing_base_url }}/plans/">{{ sponsorship_plan_name }}</a>
|
||||
{% elif complimentary_access %}
|
||||
<a href="{{ billing_base_url }}/plans/">Zulip Basic</a> <i>(complimentary access)</i>
|
||||
{% else %}
|
||||
<a href="{{ billing_base_url }}/plans/">{{ plan_name }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if is_sponsored %}
|
||||
<hr />
|
||||
<div class="support-link">
|
||||
<p>
|
||||
To make changes to your plan or view your billing history <a href="mailto:support@zulip.com">contact Zulip support</a>.
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% else %}
|
||||
|
||||
<div class="register-account flex full-page sponsorship-page">
|
||||
<div class="center-block new-style">
|
||||
<div class="pitch">
|
||||
<h1>
|
||||
Request Zulip
|
||||
{% if is_remotely_hosted %}
|
||||
{% else %}
|
||||
Cloud
|
||||
{% endif %} sponsorship
|
||||
</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<div id="sponsorship-error" class="alert alert-danger"></div>
|
||||
<div id="sponsorship-input-section">
|
||||
<form id="sponsorship-form" method="post" data-billing-base-url="{{ billing_base_url }}" data-is-remotely-hosted="{{ is_remotely_hosted }}">
|
||||
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}" />
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="org-name" class="inline-block label-title">Organization</label>
|
||||
<div id="org-name" class="not-editable-realm-field">{{ org_name }}</div>
|
||||
</div>
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<div class="inline-block relative">
|
||||
<select name="organization_type" id="organization-type" class="sponsorship-form-select">
|
||||
{% for org_type in sorted_org_types %}
|
||||
{% if not org_type[1].hidden %}
|
||||
<option data-string-value="{{ org_type[0] }}"
|
||||
{% if org_type[1].id == realm_org_type %}selected{% endif %}
|
||||
value="{{ org_type[1].id }}">
|
||||
{{ _(org_type[1].name) }}
|
||||
</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
</div>
|
||||
<label for="organization_type" class="inline-block label-title">
|
||||
Organization type
|
||||
{% if is_remotely_hosted %}
|
||||
<a href="/help/self-hosted-billing#free-community-plan" target="_blank" rel="noopener noreferrer">
|
||||
<i class="fa fa-question-circle-o" aria-hidden="true"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</label>
|
||||
</div>
|
||||
<p id="sponsorship-discount-details"></p>
|
||||
{% if is_remotely_hosted %}
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<div class="inline-block relative">
|
||||
<select name="requested_plan" id="organization-requested-plan" class="sponsorship-form-select">
|
||||
<option value="Community" selected>
|
||||
Community
|
||||
</option>
|
||||
<option value="Basic">
|
||||
Basic (discounted)
|
||||
</option>
|
||||
<option value="Business">
|
||||
Business (discounted)
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<label for="organization-requested-plan" class="inline-block label-title">Requested plan</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="org-website" class="inline-block
|
||||
label-title">Organization website (if any)</label>
|
||||
<input id="org-website" name="website" type="text"/>
|
||||
<div id="sponsorship-org-website-error" class="alert alert-danger sponsorship-field-error"></div>
|
||||
</div>
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="description" class="inline-block
|
||||
label-title">Description of your organization</label>
|
||||
<textarea id="description" name="description" cols="100" rows="5"></textarea>
|
||||
<div id="sponsorship-description-error" class="alert alert-danger sponsorship-field-error"></div>
|
||||
</div>
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="plan-to-use-zulip" class="inline-block
|
||||
label-title">How do you plan to use Zulip?</label>
|
||||
<textarea id="plan-to-use-zulip" name="plan_to_use_zulip" cols="100" rows="2"></textarea>
|
||||
<div id="sponsorship-plan-to-use-zulip-error" class="alert alert-danger sponsorship-field-error"></div>
|
||||
</div>
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="expected-total-users" class="inline-block label-title">Expected number of users (approximate range)</label>
|
||||
<input id="expected-total-users" name="expected_total_users" type="text" />
|
||||
<div id="sponsorship-expected-total-users-error" class="alert alert-danger sponsorship-field-error"></div>
|
||||
</div>
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="paid-users-count" class="inline-block label-title">How many paid staff does your organization have?</label>
|
||||
<input id="paid-users-count" name="paid_users_count" type="text"/>
|
||||
<div id="sponsorship-paid-users-count-error" class="alert alert-danger sponsorship-field-error"></div>
|
||||
</div>
|
||||
<div class="input-box sponsorship-form-field">
|
||||
<label for="paid-users-description" class="inline-block
|
||||
label-title">Description of paid staff (if any)</label>
|
||||
<textarea id="paid-users-description" name="paid_users_description" cols="100" rows="2"></textarea>
|
||||
<div id="sponsorship-paid-users-description-error" class="alert alert-danger sponsorship-field-error"></div>
|
||||
</div>
|
||||
<div class="upgrade-button-container">
|
||||
<button type="submit" id="sponsorship-button" class="stripe-button-el invoice-button">
|
||||
<span class="sponsorship-button-text">Submit</span>
|
||||
<object class="loader sponsorship-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
365
templates/corporate/billing/upgrade.html
Normal file
365
templates/corporate/billing/upgrade.html
Normal file
@@ -0,0 +1,365 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "upgrade" %}
|
||||
|
||||
{% block title %}
|
||||
<title>{{ _("Upgrade") }} | Zulip</title>
|
||||
{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
<div id="upgrade-page" class="register-account flex full-page">
|
||||
<div class="center-block new-style">
|
||||
{% if is_self_hosting_management_page and is_sponsorship_pending %}
|
||||
<div class="alert alert-success billing-page-success" id="upgrade-page-sponsorship-pending-message-top">
|
||||
This organization has requested sponsorship for a
|
||||
{% if sponsorship_plan_name == "Business" %}
|
||||
discounted
|
||||
{% endif %}
|
||||
<a href="{{ page_params.billing_base_url }}/plans/">{{ sponsorship_plan_name }}</a> plan.<br/><a href="mailto:support@zulip.com">Contact Zulip support</a> with any questions or updates.
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if success_message %}
|
||||
<div class="alert alert-success billing-page-success" id="upgrade-success-message-top">
|
||||
{{ success_message }}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="pitch">
|
||||
<h1>
|
||||
{% if page_params.free_trial_days %}
|
||||
Start free trial of
|
||||
{% else %}
|
||||
Upgrade {{ customer_name }} to
|
||||
{% endif %}
|
||||
<a href="{{ page_params.billing_base_url }}/plans/">
|
||||
{{ plan }}
|
||||
</a>
|
||||
</h1>
|
||||
</div>
|
||||
<div class="white-box">
|
||||
<div id="upgrade-page-details">
|
||||
{% if pay_by_invoice_payments_page %}
|
||||
<div class="input-box top-of-page-notice upgrade-page-field">
|
||||
<div class="not-editable-realm-field">
|
||||
{% if is_free_trial_invoice_expired_notice %}
|
||||
Your free trial of {{ free_trial_invoice_expired_notice_page_plan_name }} has expired.
|
||||
<a href="{{ pay_by_invoice_payments_page }}" target="_blank" rel="noopener noreferrer">An invoice</a>
|
||||
for ${{ scheduled_upgrade_invoice_amount_due }} has been sent to <b>{{ stripe_email }}</b>.
|
||||
To reactivate your {{ free_trial_invoice_expired_notice_page_plan_name }} plan, please pay the amount due.
|
||||
Once the invoice has been paid, reload this page to see billing details.
|
||||
{% else %}
|
||||
<a href="{{ pay_by_invoice_payments_page }}" target="_blank" rel="noopener noreferrer">An invoice</a>
|
||||
{% if fixed_price_plan %}
|
||||
for $<span class="due-today-price"></span>
|
||||
{% endif %}
|
||||
{% if scheduled_upgrade_invoice_amount_due %}
|
||||
for ${{ scheduled_upgrade_invoice_amount_due }}
|
||||
{% endif %}
|
||||
has been sent to <b>{{ stripe_email }}</b>.
|
||||
To complete the plan upgrade process, please pay the amount due. Once the invoice has been paid, reload this page to see billing details.
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
{% else %}
|
||||
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}" />
|
||||
<form id="autopay-form">
|
||||
<input type="hidden" name="seat_count" value="{{ seat_count }}" />
|
||||
<input type="hidden" name="signed_seat_count" value="{{ signed_seat_count }}" />
|
||||
<input type="hidden" name="salt" value="{{ salt }}" />
|
||||
{% if page_params.setup_payment_by_invoice %}
|
||||
<input type="hidden" name="billing_modality" value="send_invoice" />
|
||||
{% else %}
|
||||
<input type="hidden" name="billing_modality" value="charge_automatically" />
|
||||
{% endif %}
|
||||
<input type="hidden" name="tier" value="{{ page_params.tier }}" />
|
||||
|
||||
<div id="free-trial-top-banner" class="input-box upgrade-page-field">
|
||||
{% if page_params.free_trial_days %}
|
||||
<div class="not-editable-realm-field">
|
||||
{% if page_params.setup_payment_by_invoice %}
|
||||
An invoice will immediately be sent to <b>{{ stripe_email }}</b>. To ensure continuous access to Zulip Basic,
|
||||
please pay your invoice before your free trial ends on {{ free_trial_end_date }}.
|
||||
{% else %}
|
||||
Add a credit card to start your <b>{{ page_params.free_trial_days }}-day free trial</b> of
|
||||
{{ plan }}. Your card will not be charged if you
|
||||
cancel in the first {{ page_params.free_trial_days }} days.
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
{% if page_params.free_trial_days and not page_params.setup_payment_by_invoice %}
|
||||
<input type="hidden" name="schedule" value="monthly" />
|
||||
{% else %}
|
||||
<div class="input-box upgrade-page-field">
|
||||
<select name="schedule" id="payment-schedule-select">
|
||||
{% if fixed_price_plan %}
|
||||
<option value="monthly">Pay monthly</option>
|
||||
<option value="annual">Pay annually</option>
|
||||
{% else %}
|
||||
<option value="monthly" id="autopay_monthly_price"></option>
|
||||
<option value="annual" id="autopay_annual_price_per_month"></option>
|
||||
{% endif %}
|
||||
</select>
|
||||
<label for="payment-schedule-select">Payment schedule</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if complimentary_access_plan_end_date %}
|
||||
<div class="input-box upgrade-page-field">
|
||||
<select name="remote_server_plan_start_date" id="remote-server-plan-start-date-select">
|
||||
<option value="billing_cycle_end_date">{{ complimentary_access_plan_end_date }}</option>
|
||||
<option value="today">Today</option>
|
||||
</select>
|
||||
<label for="remote-server-plan-start-date-select">Plan start date</label>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if manual_license_management %}
|
||||
<div class="input-box upgrade-page-field" id="upgrade-manual-license-count-wrapper">
|
||||
<label for="licenses" class="inline-block label-title">Number of licenses {% if not exempt_from_license_number_check %}(minimum {{ seat_count }}){% endif %}</label>
|
||||
<input type="number" name="licenses" autocomplete="off" {% if not exempt_from_license_number_check %}min="{{ seat_count }}" value="{{ seat_count }}"{% endif %} autocomplete="off" id="manual_license_count" required/>
|
||||
<div id="upgrade-licenses-change-error" class="alert alert-danger upgrade-page-error"></div>
|
||||
</div>
|
||||
<input type="hidden" name="license_management" value="manual" />
|
||||
{% else %}
|
||||
<input type="hidden" name="license_management" value="automatic" />
|
||||
{% endif %}
|
||||
|
||||
{% if complimentary_access_plan_end_date %}
|
||||
<div class="input-box upgrade-page-field" id="due-today-for-future-update-wrapper">
|
||||
<label for="due-today-for-future-update" class="inline-block label-title">
|
||||
Due today
|
||||
</label>
|
||||
<div id="due-today-for-future-update" class="not-editable-realm-field">
|
||||
<h1>$0</h1>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="input-box upgrade-page-field">
|
||||
<label for="due-today" class="inline-block label-title">
|
||||
{% if complimentary_access_plan_end_date %}
|
||||
<span id="due-today-remote-server-title">
|
||||
Due {{ complimentary_access_plan_end_date }}
|
||||
</span>
|
||||
{% endif %}
|
||||
<span id="due-today-title">
|
||||
Due
|
||||
{% if page_params.free_trial_days %}
|
||||
on {{ free_trial_end_date }}
|
||||
{% else %}
|
||||
today
|
||||
{% endif %}
|
||||
</span>
|
||||
</label>
|
||||
<div id="due-today" class="not-editable-realm-field">
|
||||
{% if fixed_price_plan %}
|
||||
<h1>$<span class="due-today-price"></span></h1>
|
||||
{% else %}
|
||||
$<span id="pre-discount-renewal-cents"></span>
|
||||
($<span class="due-today-unit-price"></span> x
|
||||
{% if not manual_license_management %}
|
||||
{{ seat_count }}
|
||||
{% else %}
|
||||
<span class="due-today-license-count">{{ seat_count }}</span>
|
||||
{% endif %}
|
||||
<span class="due-today-license-count-user-plural">
|
||||
{{ 'user' if seat_count == 1 else 'users' }}
|
||||
</span> x
|
||||
<span class="due-today-duration"></span>)
|
||||
{% if page_params.flat_discounted_months > 0 %}
|
||||
<br/>
|
||||
<span class="flat-discount-minus-sign">−</span>
|
||||
<span class="flat-discount-separator">$<span class="flat-discounted-price"></span>/month off</span> <i class="billing-page-discount">({{ page_params.flat_discounted_months }} {{ "month" if page_params.flat_discounted_months == 1 else "months" }} remaining)</i>
|
||||
{% else %}
|
||||
<br/>
|
||||
<i class="billing-page-discount hide">Includes: <span class="billing-page-selected-schedule-discount"></span>% discount</i>
|
||||
{% endif %}
|
||||
<h1>$<span class="due-today-price"></span></h1>
|
||||
{% if page_params.free_trial_days and not manual_license_management %}
|
||||
<i>Your actual bill will depend on the number of
|
||||
active users in your organization.</i>
|
||||
{% endif %}
|
||||
{% if not manual_license_management and using_min_licenses_for_plan %}
|
||||
<i>Minimum purchase for this plan: {{ min_licenses_for_plan }} licenses</i>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if page_params.free_trial_days %}
|
||||
{% else %}
|
||||
<div id="license-management-details" class="input-box upgrade-page-field license-management-section">
|
||||
{% if fixed_price_plan %}
|
||||
<p class="not-editable-realm-field">
|
||||
This is a fixed-price plan. You will be contacted by Zulip Sales a couple of months before the plan ends to discuss plan renewal.
|
||||
</p>
|
||||
{% elif not manual_license_management %}
|
||||
<p class="not-editable-realm-field">
|
||||
Your subscription will renew automatically. Your bill will vary based on the number of active users in your organization.
|
||||
You can also <a href="{{ page_params.billing_base_url }}/upgrade/?manual_license_management=true&tier={{ page_params.tier }}">purchase a fixed number of licenses</a> instead.
|
||||
{% if is_self_hosting_management_page %}
|
||||
See <a href="/help/self-hosted-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">here</a> for details.
|
||||
{% else %}
|
||||
See <a href="/help/zulip-cloud-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">here</a> for details.
|
||||
{% endif %}
|
||||
</p>
|
||||
<input type="hidden" name="licenses" id="automatic_license_count" value="{{ seat_count }}" />
|
||||
{% else %}
|
||||
<p class="not-editable-realm-field">
|
||||
Your subscription will renew automatically. You will be able to manage the number of licenses on your organization's billing page.
|
||||
{% if not page_params.setup_payment_by_invoice %}
|
||||
You can also <a href="{{ page_params.billing_base_url }}/upgrade/?tier={{ page_params.tier }}">choose automatic license management</a> instead.
|
||||
{% if is_self_hosting_management_page %}
|
||||
See <a href="/help/self-hosted-billing#how-does-automatic-license-management-work" target="_blank" rel="noopener noreferrer">here</a> for details.
|
||||
{% else %}
|
||||
See <a href="/help/zulip-cloud-billing#how-does-automatic-license-management-work" target="_blank" rel="noopener noreferrer">here</a> for details.
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if is_self_hosting_management_page %}
|
||||
See <a href="/help/self-hosted-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">here</a> for details.
|
||||
{% else %}
|
||||
See <a href="/help/zulip-cloud-billing#how-does-manual-license-management-work" target="_blank" rel="noopener noreferrer">here</a> for details.
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div {% if page_params.setup_payment_by_invoice %} id="update-invoice-billing-info" {% elif payment_method %} id="upgrade-payment-info"{% endif %}>
|
||||
{% if page_params.setup_payment_by_invoice %}
|
||||
{% elif payment_method %}
|
||||
<div class="input-box upgrade-page-field" id="upgrade-payment-method-wrapper">
|
||||
<label for="customer-payment-method-for-upgrade" class="inline-block label-title">Payment method</label>
|
||||
<div id="customer-payment-method-for-upgrade" class="not-editable-realm-field">
|
||||
{{ payment_method }}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div id="upgrade-payment-method-container" class="upgrade-add-card-container input-box upgrade-page-field">
|
||||
<button id="upgrade-add-card-button" {% if page_params.setup_payment_by_invoice %}class="update-billing-information-button"{% elif payment_method %}class="update-card-button"{% endif %}>
|
||||
<span id="upgrade-add-card-button-text">
|
||||
{% if page_params.setup_payment_by_invoice %}
|
||||
Update billing information
|
||||
{% elif payment_method %}
|
||||
Update card
|
||||
{% else %}
|
||||
Add card
|
||||
{% endif %}
|
||||
</span>
|
||||
<object class="loader upgrade-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
{% if not fixed_price_plan %}
|
||||
<span class="not-editable-realm-field" id="upgrade-payment-by-invoice-container">
|
||||
{% if page_params.setup_payment_by_invoice %}
|
||||
or <a href="{{ page_params.billing_base_url }}/upgrade/?tier={{ page_params.tier }}">pay by card</a>
|
||||
{% else %}
|
||||
or <a href="{{ page_params.billing_base_url }}/upgrade/?manual_license_management=true&tier={{ page_params.tier }}&setup_payment_by_invoice=true" id="upgrade-payment-by-invoice-link" data-tippy-content="Requires purchasing a fixed number of licenses" data-tippy-placement="right">pay by invoice</a>
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if not page_params.free_trial_days and payment_method %}
|
||||
<div class="stripe-billing-information not-editable-realm-field">
|
||||
{% if not manual_license_management %}
|
||||
<a href="{{ page_params.billing_base_url }}/customer_portal/?tier={{ page_params.tier }}">View and update</a> billing information that will be displayed on your invoice and receipt.
|
||||
{% else %}
|
||||
<a href="{{ page_params.billing_base_url }}/customer_portal/?manual_license_management=true&tier={{ page_params.tier }}">View and update</a> billing information that will be displayed on your invoice and receipt.
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
<div id="upgrade-cardchange-error" class="alert alert-danger upgrade-page-error"></div>
|
||||
</div>
|
||||
<div class="upgrade-button-container input-box upgrade-page-field" >
|
||||
<button id="org-upgrade-button" {% if not page_params.setup_payment_by_invoice and not payment_method %}disabled{% endif %}>
|
||||
<span id="org-upgrade-button-text">
|
||||
{% if complimentary_access_plan_end_date %}
|
||||
<span id="org-future-upgrade-button-text-remote-server">
|
||||
Schedule upgrade to {{ plan }}
|
||||
</span>
|
||||
{% endif %}
|
||||
<span id="org-today-upgrade-button-text">
|
||||
{% if page_params.free_trial_days %}
|
||||
Start {{ page_params.free_trial_days }}-day free trial
|
||||
{% elif page_params.setup_payment_by_invoice %}
|
||||
Send invoice
|
||||
{% else %}
|
||||
Purchase {{ plan }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</span>
|
||||
<object class="loader upgrade-button-loader" type="image/svg+xml" data="{{ static('images/loading/loader-white.svg') }}"></object>
|
||||
</button>
|
||||
<div id="autopay-error" class="alert alert-danger upgrade-page-error hide"></div>
|
||||
</div>
|
||||
</form>
|
||||
<form id="upgrade-cardchange-form">
|
||||
{% if manual_license_management %}
|
||||
<input type="hidden" name="manual_license_management" value="true" />
|
||||
{% endif %}
|
||||
<input type="hidden" name="tier" value="{{ page_params.tier }}" />
|
||||
</form>
|
||||
{% endif %}
|
||||
<div class="input-box upgrade-page-field">
|
||||
<div class="support-link not-editable-realm-field">
|
||||
{% if pay_by_invoice_payments_page %}
|
||||
If you have questions or need to make any changes, please contact <a href="mailto:sales@zulip.com">sales@zulip.com</a>.
|
||||
{% else %}
|
||||
Questions? Contact <a href="mailto:sales@zulip.com">sales@zulip.com</a>.
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if page_params.setup_payment_by_invoice %}
|
||||
<div id="confirm-send-invoice-modal" class="micromodal" aria-hidden="true">
|
||||
<div class="modal__overlay" tabindex="-1">
|
||||
<div class="modal__container" role="dialog" aria-modal="true" aria-labelledby="confirm-send-invoice-modal-label">
|
||||
<header class="modal__header">
|
||||
<div class="modal__header-content">
|
||||
<h1 id="confirm-send-invoice-modal-label" class="modal__title dialog_heading">
|
||||
{% if page_params.free_trial_days %}
|
||||
Start free trial for {{ plan }}
|
||||
{% else %}
|
||||
Send invoice for {{ plan }}
|
||||
{% endif %}
|
||||
</h1>
|
||||
</div>
|
||||
<button type="button" class="modal__close" aria-label="{{ _('Close modal') }}" tabindex="0" data-micromodal-close>
|
||||
<i class="zulip-icon zulip-icon-close" aria-hidden="true"></i>
|
||||
</button>
|
||||
</header>
|
||||
<main class="modal__content">
|
||||
<p>
|
||||
Please be sure to
|
||||
<a href="{{ page_params.billing_base_url }}/customer_portal/?manual_license_management=true&tier={{ page_params.tier }}&setup_payment_by_invoice=true" target="_blank" rel="noopener noreferrer">configure</a>
|
||||
your billing details if you have not done so already. This information will appear on your invoice and receipt.
|
||||
<br />
|
||||
{% if page_params.free_trial_days %}
|
||||
<br />
|
||||
Starting free trial will immediately send an invoice to <b>{{ stripe_email }}</b>.
|
||||
This is your last chance to update the billing information on your invoice.
|
||||
{% else %}
|
||||
Your invoice will be sent to <b>{{ stripe_email }}</b>.
|
||||
{% endif %}
|
||||
</p>
|
||||
</main>
|
||||
<footer class="modal__footer">
|
||||
<button class="modal__button dialog_exit_button" aria-label="{{ '(Close this dialog window)' }}" data-micromodal-close>{{ _('Cancel') }}</button>
|
||||
<button class="modal__button dialog_submit_button">
|
||||
<span>
|
||||
{% if page_params.free_trial_days %}
|
||||
{{ _('Send invoice and start free trial') }}
|
||||
{% else %}
|
||||
{{ _('Send invoice') }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
31
templates/corporate/case-studies/asciidoctor-case-study.html
Normal file
31
templates/corporate/case-studies/asciidoctor-case-study.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Asciidoctor open-source community | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip became the heart of the Asciidoctor
|
||||
community by enabling organized, inclusive and thoughtful discussion." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-pycon">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Asciidoctor <br /> open-source community</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for<br /> <a href="/for/open-source/">open
|
||||
source projects</a> and <a href="/for/communities/">communities</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/asciidoctor-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
199
templates/corporate/case-studies/asciidoctor-case-study.md
Normal file
199
templates/corporate/case-studies/asciidoctor-case-study.md
Normal file
@@ -0,0 +1,199 @@
|
||||
## Asciidoctor: An active open-source community building software to share knowledge
|
||||
|
||||
Started in 2012, the [Asciidoctor](https://asciidoctor.org) community develops
|
||||
an [open-source](https://github.com/asciidoctor) text processor for parsing
|
||||
AsciiDoc content, enriching it, and converting it to formats such as HTML 5,
|
||||
DocBook, PDF, and many others.
|
||||
|
||||
For years, the project struggled to find a way to bring the community together
|
||||
in one place. Thanks to recommendations from leaders at other open-source
|
||||
communities, the Asciidoctor project leads decided to give Zulip a try to see if
|
||||
it could solve those challenges. “Moving to Zulip transformed our dialogue,
|
||||
making it organized, inclusive, and thoughtful in a way it never was before,”
|
||||
says project lead [Dan Allen](https://github.com/mojavelinux). “We finally had a
|
||||
home base. Zulip has been a game changer for our community.”
|
||||
|
||||
|
||||
> Zulip has been a game changer for our community.
|
||||
>
|
||||
> — Project lead Dan Allen
|
||||
|
||||
|
||||
## A decade-long search for a communication platform to bring the community together
|
||||
|
||||
“In the early days, we started out only communicating using the GitHub issue
|
||||
tracker,” Dan Allen recalls, “but we could see that it wasn’t going to scale. It
|
||||
doesn’t provide a channel for general dialogue.” The project tried IRC, but it
|
||||
was unapproachable for newcomers and lacked modern chat and moderation features.
|
||||
Asciidoctor set up a discussion list, but that wasn’t a good fit either.
|
||||
Contacting hundreds of people over email to ask a simple question always felt
|
||||
inappropriate, and the lack of real-time interaction ended up making
|
||||
conversations take longer.
|
||||
|
||||
Looking for a web-based chat solution, Asciidoctor tapped into Gitter in 2014.
|
||||
“Gitter certainly looks modern and approachable. However, we quickly learned
|
||||
that the single, running thread of the channel was both chaotic and stressful,”
|
||||
Dan says. And the platform had mostly stagnated.
|
||||
|
||||
Many users in the community pleaded for threads, but Gitter’s threading feature
|
||||
(finally added in 2020), only made the situation more problematic for the
|
||||
community. “Threads buried the replies. You had to either navigate to threads
|
||||
using notifications, or scroll back multiple pages to find the little ‘see
|
||||
replies’ link and rediscover the thread. It was just so tedious,” Dan recalls.
|
||||
|
||||
|
||||
> The conversations in Gitter were becoming more about Gitter and its
|
||||
> limitations and less about the project itself.
|
||||
>
|
||||
> — Project lead Dan Allen
|
||||
|
||||
While Gitter allows users to create new rooms, what the project really needed
|
||||
was a single community space with “socially distanced” conversations going on.
|
||||
They needed a new model. And that’s exactly what they found in Zulip.
|
||||
|
||||
|
||||
## Asciidoctor moves to Zulip: “All the anxiety and stress was gone”
|
||||
|
||||
With the community continuing to grow, Dan and fellow maintainers decided it was
|
||||
time to seek out a better solution. Drawing on advice from leaders of other
|
||||
open-source communities, the project decided to give Zulip a try in early 2021.
|
||||
|
||||
[Zulip’s channels and topics model](/why-zulip/) immediately clicked. “Channels
|
||||
partition the community without making it feel divided. When someone has a
|
||||
question, they can find the most relevant channel and either make a new topic or
|
||||
contribute to an existing one.” This paradigm was a game-changer. “Literally the
|
||||
day we moved to Zulip, all the anxiety and stress of keeping up with the
|
||||
discourse was gone,” Dan says.
|
||||
|
||||
With Zulip, Dan has developed a comfortable workflow for catching up on
|
||||
conversations after being away. “When I start my day, I open up the [Recent
|
||||
topics](/help/recent-conversations) page and work through the topics that have
|
||||
activity on-by-one,” Dan describes. More casual community participants can [skim
|
||||
the topic list](/help/reading-strategies) to find interesting discussions, and
|
||||
mark topics they don’t care about as read with a single click.
|
||||
|
||||
|
||||
## Powerful moderation tools help keep conversations on track
|
||||
|
||||
Zulip’s topic model helps discussions stay focused. “Zulip starts the
|
||||
conversation out on the right foot by giving it its own space as a topic,” Dan
|
||||
explains. “As a result, conversations don’t have to be branched from an
|
||||
arbitrary spot, and the discussion is much more likely to stay focused and
|
||||
succinct.”
|
||||
|
||||
> Zulip starts the conversation out on the right foot by giving it its own
|
||||
> space as a topic.
|
||||
>
|
||||
> — Project lead Dan Allen
|
||||
|
||||
If a topic starts in the wrong place or veers off course, Zulip’s [moderation
|
||||
tools](/help/moderating-open-organizations) make it easy to fix. Community
|
||||
moderators can keep the dialogue organized by reclassifying topics and posts
|
||||
without disrupting the ongoing conversation. “If someone accidentally posts to
|
||||
the wrong channel or topic, Zulip allows me to [move those messages
|
||||
around](/help/move-content-to-another-channel) so they land in the right spot,”
|
||||
Dan says. “Moving messages also sends a subtle hint to the person posting about
|
||||
where to post the next time. And I can use [topic
|
||||
references](/help/link-to-a-message-or-conversation#link-to-a-topic-within-zulip)
|
||||
to link to the new topic location, or to a related topic. That’s incredibly
|
||||
powerful,” Dan says.
|
||||
|
||||
The ability to [mark topics as resolved](/help/resolve-a-topic) helps moderators
|
||||
see at a glance which topics require their attention. “Many topics reach a
|
||||
logical conclusion when the initial question has been answered, and the initial
|
||||
poster will typically express that they’re satisfied. At that point, one of us
|
||||
marks the topic as resolved,” Dan explains. “When I’m looking for topics that
|
||||
need my attention, I can focus on the ones that aren’t yet resolved and try to
|
||||
help get them to that state.” Later on, community members can use resolved
|
||||
topics [as a reference source](#zulip-makes-information-easy-to-find).
|
||||
|
||||
|
||||
## Zulip enables organized, inclusive and thoughtful discussion
|
||||
|
||||
After a successful launch of the Asciidoctor community on Zulip, Asciidoctor’s
|
||||
sibling project [Antora](https://antora.org) adopted it as well. For both
|
||||
projects, using Zulip has been night and day compared to other platforms. “I can
|
||||
manage hundreds of participants across two communities extremely efficiently,
|
||||
and I don’t feel stressed,” says Dan. “I used it for my company chat as well.
|
||||
Zulip is calm and organized. I can immediately see what people are asking
|
||||
and jump to respond when I need to.”
|
||||
|
||||
> I can manage hundreds of participants across two communities extremely
|
||||
> efficiently.
|
||||
>
|
||||
> — Project lead Dan Allen
|
||||
|
||||
The sense of space created by Zulip’s topic model has made the community more
|
||||
inclusive. “Using Zulip gives space to a much broader range of voices.
|
||||
We’re seeing people participating who never participated before,” Dan says.
|
||||
“People who are less extroverted, who don’t speak English natively, or just
|
||||
can’t type as quickly now all have a chance to be part of the dialogue. Zulip
|
||||
offers a more manageable pace.”
|
||||
|
||||
> We’re seeing people participating who never participated before.
|
||||
>
|
||||
> — Project lead Dan Allen
|
||||
|
||||
Even the tone of conversation has shifted, becoming more respectful and
|
||||
thoughtful. “People are more relaxed. They can think and take their time to
|
||||
reply. Topics give people space. People don’t feel like they are trying to talk
|
||||
over someone else. That means you can have more constructive dialogue because
|
||||
the volume level is lower,” says Dan. At the same time, Zulip enables
|
||||
lightweight interactions. “Often times, I participate just [using
|
||||
emoji](/help/emoji-reactions). I must use the 👍 and 🎉 reactions dozens of
|
||||
times a day,” Dan says.
|
||||
|
||||
Channels have also helped the community get to know one another better. “When we
|
||||
created the instance, we set up a #social channel. We seeded it with the topic
|
||||
‘introduce yourself’, and new members took full advantage of it,” Dan says. The
|
||||
social channel has brought a more personal touch to the community. “In real life,
|
||||
no one just walks in and starts asking questions out of the blue,” Dan points
|
||||
out. “In the social channel, we’ve talked about non-technical topics like TV
|
||||
series, screen setups, and holiday wishes just to get to know the people behind
|
||||
the screen name and enrich each other’s lives in other ways. What we learned?
|
||||
Everyone enjoys a lot of British TV. ;)”
|
||||
|
||||
|
||||
## Zulip makes information easy to find
|
||||
|
||||
As a community grows, its conversation history becomes a trove of reference
|
||||
information. However, this history provides value only if the information is
|
||||
findable. “Once a conversation went out of view in Gitter, it was essentially
|
||||
lost,” Dan says. “The search was global across the whole Gitter instance, and it
|
||||
only returned excerpts with no sense of context. It was often faster to just
|
||||
scroll through the history in an attempt to try to find where the conversation
|
||||
happened than it was to search.”
|
||||
|
||||
In contrast, Zulip offers a [faceted search](/help/search-for-messages) that
|
||||
lets you find past discussions with pinpoint accuracy. “You can narrow the
|
||||
search to a channel or topic (with autocomplete!),” Dan points out. The results
|
||||
are presented with topic headings, making it easier to see whether the message
|
||||
is relevant. “You can click the topic to see the message in context,” Dan says.
|
||||
“It’s not only a great way to search, but it’s a great way to catch up on
|
||||
messages too. You can also search for all messages you sent, which turns out to
|
||||
be a great navigation tool and a memory saver!”
|
||||
|
||||
|
||||
## “Zulip is the heart of our community”
|
||||
|
||||
Dan is passionate about supporting Zulip’s development. “If we don’t sponsor the
|
||||
open source projects we love, we’ll have no one else to blame if we live in a
|
||||
world of proprietary software,” Dan says. “We truly feel heard by Zulip
|
||||
developers when we provide feedback. We also love that Zulip is [truly open
|
||||
source](https://blog.zulip.com/2021/04/28/why-zulip-is-on-github-sponsors/), not
|
||||
open core like some alternatives. And we very much appreciate Zulip supporting
|
||||
open source by hosting our Zulip instances.”
|
||||
|
||||
“Zulip is the heart of our community, and nearly everyone who participates
|
||||
absolutely loves it,” Dan says. “It really does provide [everything we
|
||||
need](/features/) to manage the discourse, including topic-based threads,
|
||||
mentions, faceted search, moderation controls, polls, and emoji.” Speaking on
|
||||
behalf of the Asciidoctor and Antora projects, Dan wholeheartedly recommends
|
||||
that other communities give it a try. “Many communities have been strained to
|
||||
the limits during the pandemic,” says Dan. “Zulip brings health back to these
|
||||
communities.”
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on using Zulip for [open source](/for/open-source/), and
|
||||
learn how Zulip [helps communities scale](/for/communities/)!
|
||||
31
templates/corporate/case-studies/atolio-case-study.html
Normal file
31
templates/corporate/case-studies/atolio-case-study.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Atolio | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip helps create an open communication
|
||||
culture at Atolio, a distributed tech startup." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Atolio</h1>
|
||||
<p>Distributed startup</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for <a href="/for/business/">business</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/atolio-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
120
templates/corporate/case-studies/atolio-case-study.md
Normal file
120
templates/corporate/case-studies/atolio-case-study.md
Normal file
@@ -0,0 +1,120 @@
|
||||
Founded in 2019 by a seasoned team of engineering and sales leaders, Atolio is a
|
||||
small startup with big ambitions to radically improve the way people deal with
|
||||
information at work. They have deep expertise in what it takes to [empower teams
|
||||
to collaborate effectively](/why-zulip/), and have thought hard about how to
|
||||
enable effective collaboration for their own team.
|
||||
|
||||
> The first-class threads in Zulip are absolutely critical to how we work. As
|
||||
> a fully distributed company, we needed a modern way to support the different
|
||||
> ways people work, while ensuring that everyone can find the current and
|
||||
> historical topics that are important to them. So many people on Hacker News
|
||||
> talk about using Zulip - I'm so glad we joined them!
|
||||
>
|
||||
> — David Lanstein, co-founder and CEO of [Atolio](https://www.atolio.com/)
|
||||
|
||||
|
||||
## Taking the opportunity to pick the best collaboration tools
|
||||
|
||||
Atolio’s founders set out to build a fully distributed company from the get-go,
|
||||
and they knew how important it would be to choose the right set of collaboration
|
||||
tools. “We had all used Slack, Jira and Confluence before, but we didn’t want to
|
||||
default to those options,” says Atolio’s co-founder and CTO Gareth Watts. “We
|
||||
wanted to take the opportunity to pick the best tools for our future team.”
|
||||
|
||||
As past users of Slack’s team chat, Atolio’s founders were well aware of its
|
||||
downsides. "Slack is an extremely noisy environment. It’s very difficult to keep
|
||||
up with what your colleagues are doing, and it’s hard to separate chitchat from
|
||||
what’s important,” says Atolio’s CTO Gareth Watts. “Information in Slack’s
|
||||
threads ends up being even more hidden than other messages.”
|
||||
|
||||
Thus the search was on to find a team chat tool that would truly serve Atolio’s
|
||||
needs. “We didn’t want Slack,” Gareth says. “We wanted a tool designed for
|
||||
asynchronous distributed communication, and Zulip seemed to fit the bill.”
|
||||
|
||||
> Slack is an extremely noisy environment. It’s very difficult to keep up with
|
||||
> what your colleagues are doing.
|
||||
>
|
||||
> — Gareth Watts, co-founder and CTO of [Atolio](https://www.atolio.com/)
|
||||
|
||||
## Trying out Zulip’s open-source team chat
|
||||
|
||||
Beyond Zulip’s [topic-based threading model](/why-zulip/), Atolio’s team felt
|
||||
confident that they could [count on Zulip in the coming years](/values/) as they
|
||||
built out their company. “We liked that Zulip is an open-source tool with a
|
||||
[huge community](/team/) around it,” Atolio’s CTO Gareth Watts explains. “We are
|
||||
using Zulip Cloud, but if we want, we can export our data and
|
||||
[self-host](/self-hosting/) our own Zulip server. So we know Zulip will always
|
||||
be there for us.”
|
||||
|
||||
Having decided to test out Zulip, Atolio’s founders realized that they should go
|
||||
all-in on a trial period. “We decided to turn off all other chat tools and try
|
||||
Zulip for a full month,” Gareth says. This way, the team could really see how
|
||||
Zulip would fit into the company’s communication patterns and workflows after an
|
||||
initial adjustment period. “After that, we could discuss if it wasn’t working
|
||||
out,” says Gareth. “But as it turned out, we never looked back.”
|
||||
|
||||
> We decided to turn off all other chat tools and try Zulip for a full month…
|
||||
> We never looked back.
|
||||
>
|
||||
> — Gareth Watts, co-founder and CTO of [Atolio](https://www.atolio.com/)
|
||||
|
||||
## “Zulip is at the core of our business”
|
||||
|
||||
Since February 2020, Zulip has been the primary tool for internal communication
|
||||
at Atolio. “Zulip is at the core of our business,” Atolio’s CTO Gareth Watts
|
||||
explains. The team has always been able to rely on this crucial piece of company
|
||||
infrastructure. “The Zulip Cloud hosting has been bulletproof — we haven’t had
|
||||
any down time,” says Gareth.
|
||||
|
||||
Zulip’s organized team chat has enabled Atolio to create the open communication
|
||||
culture the founders wanted. “Zulip lets us have conversations in public, not
|
||||
behind closed doors,” Gareth explains. “In Slack, two thirds of communication is
|
||||
not in public just to avoid noise. In Zulip, you can talk about what you want —
|
||||
you just give everything its own topic.”
|
||||
|
||||
> In Zulip, it’s super easy to find things 24 hours later if you weren’t online
|
||||
> when a discussion happened.
|
||||
>
|
||||
> — Gareth Watts, co-founder and CTO of [Atolio](https://www.atolio.com/)
|
||||
|
||||
Atolio’s distributed team also uses Zulip to build personal connections. With
|
||||
each conversation getting its own space in a dedicated topic, team members can
|
||||
share pictures of their cats or GIPHY memes without disrupting serious work
|
||||
discussions. And if a topic ever goes off on a tangent, it’s easy to split it in
|
||||
two and continue from there.
|
||||
|
||||
When new team members join the company, the onboarding process welcomes them to
|
||||
Zulip and the company’s communication culture. An internal Wiki introduces
|
||||
Zulip’s [topic-based threading](/help/introduction-to-topics), [search
|
||||
tools](/help/search-for-messages), and some handy [keyboard
|
||||
shortcuts](/help/keyboard-shortcuts), with pointers to [Zulip’s help
|
||||
center](/help/) for more information. Gareth hasn’t seen much difference between
|
||||
onboarding to Zulip compared to other team chat tools: “If someone hasn’t used
|
||||
Slack before, they need onboarding too.”
|
||||
|
||||
> Zulip lets us have conversations in public, not behind closed doors.
|
||||
>
|
||||
> — Gareth Watts, co-founder and CTO of [Atolio](https://www.atolio.com/)
|
||||
|
||||
## Easy to integrate
|
||||
|
||||
To make Zulip a central hub for updates about what’s happening, Atolio has
|
||||
integrated Zulip with its engineering tools. In a #tickets channel, a topic is
|
||||
created automatically for each ticket, so there is a dedicated space to discuss
|
||||
the issue at hand. There are topics in other Zulip channels for automated
|
||||
deployment announcements, and for bot posts when pull requests are opened or
|
||||
merged.
|
||||
|
||||
Atolio has also [connected Zulip](https://www.atolio.com/connectors/) to their
|
||||
own unified search product. “Writing against the [Zulip APIs](/api/) has not
|
||||
been hard,” Gareth says. “And since it’s open-source, we can always [read the
|
||||
source code](https://github.com/zulip/zulip#readme) if we find the docs
|
||||
confusing.”
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on [using Zulip for business](/for/business/). You can also
|
||||
learn how Zulip is being used at the InsurTech startup
|
||||
[Semsee](/case-studies/semsee/), the [iDrift AS](/case-studies/idrift/) company,
|
||||
the [End Point Dev](/case-studies/end-point/) software consultancy, and the [GUT
|
||||
contact](/case-studies/gut-contact/) support agency.
|
||||
28
templates/corporate/case-studies/case-studies.html
Normal file
28
templates/corporate/case-studies/case-studies.html
Normal file
@@ -0,0 +1,28 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case studies | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Real-world examples of Zulip in use for business, education, research, open-source projects, and communities." %}
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case studies</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Does choosing Zulip really make a difference? Read about how Zulip has transformed communication across industries and use cases.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/case-studies.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
75
templates/corporate/case-studies/case-studies.md
Normal file
75
templates/corporate/case-studies/case-studies.md
Normal file
@@ -0,0 +1,75 @@
|
||||
Zulip’s organized team chat app makes communication dramatically more efficient
|
||||
than other popular apps like Slack and Microsoft Teams, which push teams towards
|
||||
chaotic and disruptive communication patterns.
|
||||
|
||||
But don't just take our word for it. Across diverse, demanding organizations
|
||||
in [business](#business), [education and research](#education-and-research),
|
||||
and [open-source projects and communities](#open-source-projects-and-communities),
|
||||
the case studies below feature Zulip users describing in detail how Zulip supports
|
||||
and transforms communication for the better.
|
||||
|
||||
## Business
|
||||
|
||||
- ### [Efficient distributed team management at iDrift AS](/case-studies/idrift/)
|
||||
While Slack worked reasonably well for real-time chat, busy Slack channels
|
||||
hindered async discussions. iDrift AS evaluated and adopted Zulip in 2020.
|
||||
- ### [Easy communication for 1000 agents at GUT contact](/case-studies/gut-contact/)
|
||||
GUT contact offers flexibility to work from one of 10 offices across 3 countries,
|
||||
or from home. Zulip keeps teams in sync across all job functions.
|
||||
- ### [Managing hundreds of projects at End Point Dev](/case-studies/end-point/)
|
||||
For nearly a decade, Zulip has been a virtual office for End Point’s distributed
|
||||
team. Discussing projects in Zulip channels keeps everyone informed.
|
||||
- ### [Worldwide operations and AI at WindBorne](/case-studies/windborne/)
|
||||
Zulip is WindBorne's irreplaceable hub for coordinating work ranging from
|
||||
balloon launches around the globe to developing state-of-the-art AI models.
|
||||
- ### [More efficient communication than Slack at Semsee](/case-studies/semsee/)
|
||||
New Semsee employees adapt easily to Zulip’s organized conversations. They quickly
|
||||
develop an intuition for when to start a new topic, and what topic names work well.
|
||||
- ### [Open distributed communication at Atolio](/case-studies/atolio/)
|
||||
Since February 2020, Zulip’s organized team chat has enabled the open
|
||||
communication culture Atolio’s founders wanted.
|
||||
|
||||
## Education and research
|
||||
|
||||
- ### [Organized chat for 1000s of students at TUM](/case-studies/tum/)
|
||||
Prior to adopting Zulip, instructors had cycled through product after product
|
||||
in search of a way to effectively manage communication among their 30-50
|
||||
person course staff and 1400-2000 students at a time.
|
||||
- ### [Communication hub across 6 continents at UCSD](/case-studies/ucsd/)
|
||||
With students logging in at all hours of the day, Zulip’s topic model is key for
|
||||
finding materials and participating in discussions. Zulip’s rich functionality
|
||||
smoothed out many aspects of remote communication.
|
||||
- ### [Connecting across generations at the National University of Córdoba](/case-studies/university-of-cordoba/)
|
||||
The Mathematics, Astronomy, Physics and Computing (FAMAF) department tried moving
|
||||
to Slack. However, without a software budget, the 90-day message history limit on
|
||||
Slack’s free plan was a major frustration.
|
||||
- ### [Research collaboration at scale in the Lean mathematical community](/case-studies/lean/)
|
||||
Zulip’s unique combination of topic-based organization with a casual chat app feel
|
||||
helps the Lean community create a welcoming environment for newcomers.
|
||||
|
||||
## Open-source projects and communities
|
||||
|
||||
- ### [Inclusive discussion in the open-source Asciidoctor community](/case-studies/asciidoctor/)
|
||||
If a topic starts in the wrong place or veers off course, Zulip’s moderation
|
||||
tools make it easy to fix. Community moderators can keep the dialogue
|
||||
organized by reclassifying topics and posts without disrupting the ongoing
|
||||
conversation.
|
||||
- ### [Faster decision-making in the Rust language community](/case-studies/rust/)
|
||||
In contrast to other chat tools, Zulip makes it pleasant to have multiple
|
||||
conversations at once. Zulip’s thread-based organization creates a clear record
|
||||
of past discussions, documenting the decision-making process.
|
||||
- ### [Platform for a worldwide community since 2013 at Recurse Center](/case-studies/recurse-center/)
|
||||
The Recurse Center was an early adopter of Zulip. They began to use the product
|
||||
in January 2013, when it was still in private beta. Even then, Zulip’s
|
||||
thoughtful design made it stand out.
|
||||
- ### [Professional community support at Rush Stack](/case-studies/rush-stack/)
|
||||
To make the transition, Rush Stack imported the project’s full chat history from
|
||||
Gitter into Zulip, making it an easily searchable resource. Enabling Zulip’s
|
||||
feature for logging in with GitHub meant that users didn’t have to make new
|
||||
accounts.
|
||||
- ### [Collaboration drives innovation at Mixxx](/case-studies/mixxx/)
|
||||
Zulip has proven perfectly suited to support Mixxx’s worldwide community: It has
|
||||
made collaboration easier, and community engagement has grown as a result. Zulip’s
|
||||
threading model works well for occasional participants in the community, and
|
||||
world-public channels make it possible to view discussions without even creating
|
||||
an account.
|
||||
31
templates/corporate/case-studies/end-point-case-study.html
Normal file
31
templates/corporate/case-studies/end-point-case-study.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: End Point Dev software consultancy | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip takes the pain out of remote
|
||||
collaboration in a distributed company with hundreds of ongoing projects." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: End Point Dev</h1>
|
||||
<p>Software consultancy</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for <a href="/for/business/">business</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/end-point-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
145
templates/corporate/case-studies/end-point-case-study.md
Normal file
145
templates/corporate/case-studies/end-point-case-study.md
Normal file
@@ -0,0 +1,145 @@
|
||||
## Organizing the flow of information
|
||||
|
||||
Founded in 1995, [End Point Dev](https://www.endpointdev.com/about/) is a
|
||||
full-service software consultancy, with a diverse set of customers: from
|
||||
startups, to giants like Google, NASA, Oracle, and Morgan Stanley. The company
|
||||
employs a team of 65 or so software developers, data organizers, and security
|
||||
experts distributed all around the globe. Each project brings together talented
|
||||
individuals with the right mixture of skills, wherever they might be located.
|
||||
|
||||
For the past six years, End Point has been using Zulip to stay connected as a
|
||||
team. “Other apps like Slack would struggle with organizing the flow of
|
||||
information in a complex organization like ours,” says End Point CTO [Jon
|
||||
Jensen](https://www.endpointdev.com/team/jon-jensen/). “Zulip’s UI makes it easy
|
||||
to access all the information you need, without being too cluttered.”
|
||||
|
||||
|
||||
> Zulip’s UI makes it easy to access all the info you need.
|
||||
>
|
||||
> — [Jon Jensen](https://www.endpointdev.com/team/jon-jensen/), CTO of End Point
|
||||
|
||||
## Legacy software challenges
|
||||
|
||||
In 2005, looking to improve on email and phone communication, the company set up
|
||||
an IRC chat server. Many team members loved IRC’s realtime chat experience. As
|
||||
the company evolved, however, IRC’s limited feature set (for example, there were
|
||||
no file uploads), became a growing concern.
|
||||
|
||||
By 2017, while most of the company was still on IRC, one division had moved to
|
||||
Flowdock, and another team that had joined in an acquisition was using Slack.
|
||||
The company’s collaboration tools were no longer helping everyone stay
|
||||
connected. “Having multiple chat systems was bad for our culture,” says End
|
||||
Point’s CTO [Jon Jensen](https://www.endpointdev.com/team/jon-jensen/). “Some
|
||||
people were always cut out of the conversation.”
|
||||
|
||||
## Choosing Zulip: A modern feature set with a snappy UI
|
||||
|
||||
It was time to find a team chat solution that would bring the company back
|
||||
together. Unfortunately, none of the tools already in use would do the job.
|
||||
“Slack’s interface was too slow and clunky,” [Jon
|
||||
Jensen](https://www.endpointdev.com/team/jon-jensen/) explains, “And the more
|
||||
channels you’re in, the harder it is to use,” which was a show-stopper for a
|
||||
consulting company with hundreds of ongoing projects.
|
||||
|
||||
|
||||
> Slack’s interface was too slow and clunky, and the more channels you’re in,
|
||||
> the harder it is to use.
|
||||
>
|
||||
> — [Jon Jensen](https://www.endpointdev.com/team/jon-jensen/), CTO of End Point
|
||||
|
||||
Inclined to go with a self-hosted solution, Jon and some of his co-workers
|
||||
explored all the leading open-source team chat products. They found that while
|
||||
Mattermost and Rocket.Chat were similar to Slack (but felt less polished), Zulip
|
||||
stood out. “Zulip had all the modern features we were looking for, like
|
||||
reliable, flexible notifications. At the same time, the [extensive keyboard
|
||||
shortcuts](/help/keyboard-shortcuts) and the ‘All messages’
|
||||
view offered a UI that the IRC fans loved.”
|
||||
|
||||
When End Point moved to Zulip, it was an immediate improvement over the
|
||||
hodge-podge of tools previously in use. “Choosing topics in Zulip felt like a
|
||||
hurdle at first,” Jon recalls, “but the team got used to it pretty quickly.” Not
|
||||
entering a topic is always an option, and Zulip’s topics help users read their
|
||||
messages more efficiently. “It’s nice to be able to [mute](/help/mute-a-topic)
|
||||
busy topics,” Jon says.
|
||||
|
||||
## “Zulip is our virtual office”
|
||||
|
||||
For the past six years, the Zulip chat has been a virtual office for End Point’s
|
||||
distributed team, a place to show up and be present at work. Discussing projects
|
||||
in Zulip channels keeps everyone informed.
|
||||
|
||||
“Zulip is my lifeline,” says [Joanne
|
||||
Tipton](https://www.endpointdev.com/team/joanne-tipton/), a senior team manager
|
||||
at End Point. “I’m on it all day. I need to have an idea of all the things that
|
||||
are going on, so the [desktop notifications](/help/desktop-notifications) are
|
||||
invaluable.” There are 130 channels in the organization, and managers are
|
||||
subscribed to most of them. Joanne takes advantage of per-channel flexibility for
|
||||
notifications, turning on notification sounds just for low-traffic channels where
|
||||
every message is important.
|
||||
|
||||
> Zulip is my lifeline.
|
||||
>
|
||||
> — [Joanne Tipton](https://www.endpointdev.com/team/joanne-tipton/), Senior Team Manager at End Point
|
||||
|
||||
[Alejandro Ramon](https://www.endpointdev.com/team/alejandro-ramon/), who leads
|
||||
the Immersive & Geospatial division, joined End Point the day before the move to
|
||||
Zulip. Zulip has always been a core tool for his work at End Point, and he has
|
||||
built his workflows on Zulip’s [integrations](/integrations/). “With the
|
||||
[Jenkins CI integration](/integrations/jenkins), I can see when a job has
|
||||
finished building and is ready to deploy,” Alejandro says. “I use this 100s of
|
||||
times per week.”
|
||||
|
||||
|
||||
> I use Zulip’s Jenkins CI integration 100s of times per week.
|
||||
>
|
||||
> — [Alejandro Ramon](https://www.endpointdev.com/team/alejandro-ramon/),
|
||||
> Director of Immersive & Geospatial division at End Point
|
||||
|
||||
Zulip also enables real-time system monitoring, with error alerts sent into a
|
||||
dedicated channel for each system. Alejandro relies on Zulip’s clear record of
|
||||
what’s been happening with each installation, which combines automated alerts
|
||||
with discussion by the team. “I use [search](/help/search-for-messages) quite a
|
||||
bit,” Alejandro says. “Being able to filter by user and search term, and look at
|
||||
a date range, is very helpful.”
|
||||
|
||||
Zulip is conveniently accessible no matter where Alejandro is working from. “The
|
||||
[mobile apps](/apps/) work well when I need to connect from a customer site,”
|
||||
Alejandro explains.
|
||||
|
||||
## Taking the pain out of team chat
|
||||
|
||||
End Point’s client companies use a wide variety of chat tools to communicate
|
||||
with their collaborators at EndDev, from modern team chat tools like Slack and
|
||||
Microsoft Teams, to tools designed primarily for 1:1 communication like Google
|
||||
Chat and Skype. End Point’s CTO [Jon
|
||||
Jensen](https://www.endpointdev.com/team/jon-jensen/) has experienced them all.
|
||||
|
||||
“It is amazing that companies would use Teams in its current state,” Jon says, a
|
||||
bit exasperated. “The UI is slow and inconsistent, and you have to do so much
|
||||
clicking to get anywhere. Compared to Zulip, it’s missing key features like the
|
||||
‘All messages’ view and topics.”
|
||||
|
||||
> It is amazing that companies would use Teams in its current state. The UI is
|
||||
> slow and inconsistent, and compared to Zulip, it’s missing key features.
|
||||
>
|
||||
> — [Jon Jensen](https://www.endpointdev.com/team/jon-jensen/), CTO of End Point
|
||||
|
||||
In Jon’s view, any communication tool imposes some cost on the team. “When
|
||||
you’re choosing a team chat tool, you’re deciding how much pain are you
|
||||
requiring your staff to undergo,” Jon explains. “And if your remote tools are
|
||||
painful to use, you marginalize remote staff,” as conversations move from chat
|
||||
to offices and hallways. Thankfully, this is not a problem at End Point, Jon
|
||||
says. “Zulip removes much of the pain that makes people not want to use team
|
||||
chat apps. We love it."
|
||||
|
||||
> Zulip removes much of the pain that makes people not want to use team chat
|
||||
> apps. We love it.
|
||||
>
|
||||
> — [Jon Jensen](https://www.endpointdev.com/team/jon-jensen/), CTO of End Point
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on [using Zulip for business](/for/business/). You can also
|
||||
learn how Zulip is being used at the [iDrift AS](/case-studies/idrift/) company,
|
||||
the [GUT contact](/case-studies/gut-contact/) support agency, and the startups
|
||||
[Semsee](/case-studies/semsee/) and [Atolio](/case-studies/atolio/).
|
||||
31
templates/corporate/case-studies/gut-contact-case-study.html
Normal file
31
templates/corporate/case-studies/gut-contact-case-study.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: GUT contact | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip makes communication easy for 1000
|
||||
agents at GUT contact, a support agency." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: GUT contact</h1>
|
||||
<p>Support agency</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for <a href="/for/business/">business</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/gut-contact-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
114
templates/corporate/case-studies/gut-contact-case-study.md
Normal file
114
templates/corporate/case-studies/gut-contact-case-study.md
Normal file
@@ -0,0 +1,114 @@
|
||||
For over 20 years, GUT contact has been offering premium customer support,
|
||||
outbound sales and other German-language services. The company achieves top
|
||||
performance by putting employees in a productive and motivating environment.
|
||||
Company leadership makes mindful choices about the tools employees use to get
|
||||
their work done, and has successfully scaled the team to over 1000 agents.
|
||||
|
||||
Agents at GUT contact use Zulip every day to communicate with their team leads.
|
||||
“Most of our agents are in their 60s or 70s, so the software must be as simple
|
||||
as possible. That’s why we love Zulip,” says [Erik
|
||||
Dittert](https://gutcontact.de/unternehmen/team/erik-dittert/), who’s been
|
||||
leading GUT contact’s IT team for the past 20 years.
|
||||
|
||||
> The software must be as simple as possible. That’s why we love Zulip.
|
||||
>
|
||||
> — Erik Dittert, [Head of
|
||||
> IT](https://gutcontact.de/unternehmen/team/erik-dittert/) at [GUT
|
||||
> contact](https://gutcontact.de/)
|
||||
|
||||
|
||||
## “Our agents don’t need email accounts”
|
||||
|
||||
GUT contact relies on team chat for written communication within the company.
|
||||
“Our agents don’t need email accounts,” says Erik Dittert, GUT Contact’s Head of
|
||||
IT. “If someone has an email, they’ll get spam.” Instead, under Erik’s
|
||||
leadership, GUT contact has been self-hosting open-source team chat applications
|
||||
for years, upgrading as technology has evolved.
|
||||
|
||||
The company started with IRC, used an XMPP chat client for a while, and in 2019
|
||||
moved to Rocket.Chat. “Rocket.Chat was a little bit better than our XMPP
|
||||
server,” Erik says. However, when Erik learned about Zulip, he was excited to
|
||||
check it out. “I installed Zulip, and the IT team played with the app. We loved
|
||||
it. The UI was just cleaner, easier,” Erik says.
|
||||
|
||||
Zulip’s topic-based threading model was transformative. With other chat apps,
|
||||
“the first person has a question about something, the next person has a question
|
||||
about something else. You answer the first person, and the second person is
|
||||
confused,” Erik explains. This doesn’t happen with Zulip’s topics.
|
||||
|
||||
> Topic-based communication is a big big big feature we love in Zulip.
|
||||
>
|
||||
> — Erik Dittert, [Head of
|
||||
> IT](https://gutcontact.de/unternehmen/team/erik-dittert/) at [GUT
|
||||
> contact](https://gutcontact.de/)
|
||||
|
||||
|
||||
## Smooth transition to Zulip
|
||||
|
||||
Erik showed Zulip to his boss and others at the company, and in October 2022,
|
||||
GUT contact made the switch.
|
||||
|
||||
“Zulip was quite easy to set up, and worked instantly. 1000 people — no
|
||||
problem,” Erik recalls. “I hooked up the Zulip server to LDAP, and our agents
|
||||
loved not having to remember a separate username and password.” Erik considered
|
||||
importing data from Rocket.Chat into Zulip, but in the end it was decided that
|
||||
the messy conversation history was not worth preserving.
|
||||
|
||||
Erik put training videos on the company’s intranet to explain the switching
|
||||
process, and to give an overview of key new features. Employees were encouraged
|
||||
to play around with Zulip, create channels, and chat with each other. After a
|
||||
month of running Zulip in parallel with Rocket.Chat, the old system was turned
|
||||
off.
|
||||
|
||||
> Zulip was quite easy to set up, and worked instantly. 1000 people — no
|
||||
> problem.
|
||||
>
|
||||
> — Erik Dittert, [Head of
|
||||
> IT](https://gutcontact.de/unternehmen/team/erik-dittert/) at [GUT
|
||||
> contact](https://gutcontact.de/)
|
||||
|
||||
|
||||
## Easy for anyone to use
|
||||
|
||||
GUT contact offers employees the flexibility to work from one of 10 offices
|
||||
across 3 countries, or from their home office. This makes Zulip a critical
|
||||
communication tool across all job functions. There is a channel for each
|
||||
department (IT, human resources, etc.), as well as a dedicated channel for each
|
||||
customer, where team leaders post daily updates.
|
||||
|
||||
For agents, many of whom are not fully comfortable with modern software, Zulip
|
||||
being easy to use is invaluable. "We checked out Microsoft Teams and Mattermost,
|
||||
and most of our users didn’t like these programs, because they didn’t know how
|
||||
to work with them,” Erik says. “In Zulip, agents love the “All messages” view,”
|
||||
which combines direct messages and channel messages into a single feed. “Unlike
|
||||
other chat apps, you don’t have to click on each channel separately to see
|
||||
unreads,” Erik explains.
|
||||
|
||||
## Functionality for the most technical users
|
||||
|
||||
Members of the IT team use Zulip to collaborate from around the world. “We share
|
||||
code all the time, and the formatting and syntax highlighting is great,” Erik
|
||||
says. When they need to jump on a call, “The Jitsi integration is perfect. We
|
||||
don’t have to deal with emailing a calendar invite.”
|
||||
|
||||
Outside of office hours, Erik uses the mobile app to check on his message inbox.
|
||||
It’s easy to skim the list of topics to check if anything requires timely
|
||||
attention. “I love the clean mobile app and the push notifications,” Erik says.
|
||||
“The app is extremely fast — you click, and messages show up instantly.”
|
||||
|
||||
Erik meets up regularly with other technologists to “have a beer and talk about
|
||||
cool software.” In this 50-person group, “Zulip is quite a big theme right now,”
|
||||
Erik says.
|
||||
|
||||
> I love Zulip. I use it every day, every night.
|
||||
>
|
||||
> — Erik Dittert, [Head of
|
||||
> IT](https://gutcontact.de/unternehmen/team/erik-dittert/) at [GUT
|
||||
> contact](https://gutcontact.de/)
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on [using Zulip for business](/for/business/). You can also
|
||||
learn how Zulip is being used at the [iDrift AS](/case-studies/idrift/) company,
|
||||
the [End Point Dev](/case-studies/end-point/) software consultancy, and the
|
||||
startups [Semsee](/case-studies/semsee/) and [Atolio](/case-studies/atolio/).
|
||||
31
templates/corporate/case-studies/idrift-case-study.html
Normal file
31
templates/corporate/case-studies/idrift-case-study.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: iDrift AS, distributed tech company | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn why using Zulip significantly increases the
|
||||
size of the team for which a manager can meaningfully know what’s going on." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: iDrift AS</h1>
|
||||
<p>Distributed tech company</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for <a href="/for/business/">business</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/idrift-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
119
templates/corporate/case-studies/idrift-case-study.md
Normal file
119
templates/corporate/case-studies/idrift-case-study.md
Normal file
@@ -0,0 +1,119 @@
|
||||
## A distributed team
|
||||
|
||||
For the past 20 years, iDrift AS has been offering infrastructure and security
|
||||
support for small businesses. iDrift AS is a distributed organization, operating
|
||||
from six offices across Norway. As such, this 30-person company has always
|
||||
depended on team chat to coordinate and support each other’s efforts.
|
||||
|
||||
iDrift AS co-founder and owner Gaute Lund had long been frustrated with the
|
||||
limitations of the company’s collaboration tools. “When I learned about Zulip it
|
||||
was an absolute revelation,” says Gaute Lund. “Zulip’s threading model makes it
|
||||
so much easier to manage my team. As a leader, in just a few minutes I can get
|
||||
an overview over what's going on and see where my attention is needed.”
|
||||
|
||||
|
||||
## Async communication is a challenge
|
||||
|
||||
From its founding, iDrift AS relied on IRC for internal communication, but the
|
||||
lack of a modern user interface proved to be a barrier for participation for
|
||||
management and non-technical members of the team. iDrift AS therefore moved from
|
||||
IRC to Slack in October 2016.
|
||||
|
||||
“In terms of functionality, Slack is just souped-up IRC — there is no conceptual
|
||||
difference,” says iDrift AS owner Gaute Lund. “It doesn’t add anything
|
||||
significant other than the UI.”
|
||||
|
||||
While Slack worked reasonably well for real-time communication, the busy Slack
|
||||
channels at iDrift AS were not effective for asynchronous discussions. “It was
|
||||
almost impossible to catch up on a conversation, or get an overview of what you
|
||||
missed while on vacation,” Gaute Lund says.
|
||||
|
||||
> Slack is just souped-up IRC — there is no conceptual difference.
|
||||
>
|
||||
> — Gaute Lund, co-founder and owner of iDrift AS
|
||||
|
||||
|
||||
## Easy transition to Zulip
|
||||
|
||||
When a team member recommended Zulip, Gaute Lund understood the potential of
|
||||
[Zulip’s threading model](/why-zulip/) to dramatically improve
|
||||
async collaboration at iDrift AS. The company evaluated Zulip in the summer of
|
||||
2020, and decided to make the move.
|
||||
|
||||
The team took easily to Zulip’s topic-based threading paradigm. “Once people
|
||||
start using Zulip, it quickly becomes obvious why it’s better,” says Gaute Lund.
|
||||
|
||||
The transition also went smoothly from a technical perspective. “It was not a
|
||||
lot of work to move everything over from Slack to Zulip,” says Gaute Lund. “The
|
||||
export/import tool worked really well to ensure that we had logs of all the
|
||||
prior conversations.”
|
||||
|
||||
Chat integrations for operational systems and alerts are a crucial part of the
|
||||
workflow at iDrift AS. Zulip offers a [Slack-compatible
|
||||
interface](/integrations/slack_incoming), so many integrations could be
|
||||
simply moved over. “For a handful of integrations where Zulip didn’t meet our
|
||||
needs, it was easy to [create our own
|
||||
integration](/api/integrations-overview#write-your-own-integration) or improve
|
||||
the existing one. It wasn’t a problem,” Gaute Lund says.
|
||||
|
||||
iDrift AS decided to self-host its own Zulip server. Because Zulip is
|
||||
[100% open source](https://github.com/zulip/zulip), this option offers
|
||||
the same functionality as a [Zulip Cloud Standard](/plans/)
|
||||
subscription. “Zulip is very stable, and easy to run and to upgrade,”
|
||||
says Senior IT Consultant Tor Hveem.
|
||||
|
||||
> Once people start using Zulip, it quickly becomes obvious why it’s better.
|
||||
>
|
||||
> — Gaute Lund, co-founder and owner of iDrift AS
|
||||
|
||||
|
||||
## Zulip helps leaders scale
|
||||
|
||||
The move to Zulip transformed Gaute Lund’s day-to-day experience as a leader.
|
||||
“Using Zulip significantly increases the size of the team for which a manager
|
||||
can meaningfully know what’s going on,” says Gaute Lund. “There are 25 people
|
||||
for whom I have a very good grip on their work, whereas previously it was no
|
||||
more than a handful”.
|
||||
|
||||
|
||||
> Using Zulip significantly increases the size of the team for which a manager
|
||||
> can meaningfully know what’s going on.
|
||||
>
|
||||
> — Gaute Lund, co-founder and owner of iDrift AS
|
||||
|
||||
As a Microsoft shop, iDrift AS uses Microsoft Teams for file sharing, scheduling
|
||||
and video calls. Would they use it for team chat? “For technical people, the
|
||||
chat experience in Teams is abhorrent,” says Gaute. “It’s almost impossible to
|
||||
get an overview of what’s happening. Only a small number of messages fit on the
|
||||
screen, and the discussions hidden inside threads make it even harder to see
|
||||
what’s going on.”
|
||||
|
||||
In contrast, Zulip’s topic-based threading lets Gaute review conversations in
|
||||
batches, without being constantly interrupted by chat messages. Every few hours,
|
||||
Gaute looks through the list of recent Zulip topics to find discussions that may
|
||||
require his attention, and offers feedback as needed. Catching up is fast:
|
||||
“Updating myself on an incident might take a few seconds,” Gaute Lund says.
|
||||
|
||||
|
||||
## Efficient team communication
|
||||
|
||||
With Zulip, the team can discuss everything from customer issues to major design
|
||||
decisions. “Zulip lets people focus on conversations where they can contribute,
|
||||
whether or not they happen to be online when the conversation starts,” says
|
||||
Gaute Lund.
|
||||
|
||||
The Zulip chat also serves as a knowledge base for the history of the
|
||||
organization. “We have a very stable customer base, and Zulip search makes it
|
||||
easy to review past interactions,” Gaute Lund says.
|
||||
|
||||
> Zulip lets people focus on conversations where they can contribute.
|
||||
>
|
||||
> — Gaute Lund, co-founder and owner of iDrift AS
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on [using Zulip for business](/for/business/). You can also
|
||||
learn how Zulip is being used at the [End Point Dev](/case-studies/end-point/)
|
||||
software consultancy, the [GUT contact](/case-studies/gut-contact/) support
|
||||
agency, and the startups [Semsee](/case-studies/semsee/) and
|
||||
[Atolio](/case-studies/atolio/).
|
||||
29
templates/corporate/case-studies/lean-case-study.html
Normal file
29
templates/corporate/case-studies/lean-case-study.html
Normal file
@@ -0,0 +1,29 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Lean theorem prover community | Zulip" %}
|
||||
{% set PAGE_DESCRIPTION = "Zulip enables collaboration at scale: “We could never do what we’re doing on Slack or Discord.”" %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: <br/>Lean theorem prover community</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for <a href="/for/research/">research</a><br/>
|
||||
and <a href="/for/open-source/">open source</a> communities.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/lean-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
137
templates/corporate/case-studies/lean-case-study.md
Normal file
137
templates/corporate/case-studies/lean-case-study.md
Normal file
@@ -0,0 +1,137 @@
|
||||
## Collaboration at the cutting edge of mathematics
|
||||
|
||||
Modern mathematical research is an incredibly complex and specialized endeavor.
|
||||
Novel proofs may require years of dedicated study to understand, making it very
|
||||
difficult for the mathematical community to fully validate each other’s
|
||||
research. To enlist the help of computers for verifying mathematical theorems,
|
||||
mathematicians and computer scientists are [collaborating on an ambitious
|
||||
project](https://leanprover-community.github.io/) to develop the [Lean theorem
|
||||
prover](https://leanprover.github.io/) mathematics library.
|
||||
|
||||
The Lean prover project was [featured in Nature magazine in June
|
||||
2021](https://www.nature.com/articles/d41586-021-01627-2), when the interactive
|
||||
theorem prover was successfully used to [verify a result at the cutting edge of
|
||||
mathematical
|
||||
research](https://www.quantamagazine.org/lean-computer-program-confirms-peter-scholze-proof-20210728/).
|
||||
This accomplishment was the result of a deep multi-month collaboration between
|
||||
the [Lean Prover community](https://leanprover-community.github.io/) [on
|
||||
Zulip](https://leanprover.zulipchat.com/login/) and [Peter
|
||||
Scholze](https://www.hcm.uni-bonn.de/people/faculty/profile/peter-scholze/), a
|
||||
[world-famous mathematician](https://en.wikipedia.org/wiki/Peter_Scholze)
|
||||
working to “[rebuild much of modern
|
||||
mathematics](http://nature.com/articles/d41586-021-01627-2)”.
|
||||
|
||||
“I joined the Zulip chat to answer any mathematical questions that may arise,
|
||||
but also as an interested spectator,” wrote Peter Scholze in a [blog post
|
||||
describing the
|
||||
project](https://xenaproject.wordpress.com/2021/06/05/half-a-year-of-the-liquid-tensor-experiment-amazing-developments/).
|
||||
“It was exactly the interactions via the Zulip chat that convinced me that a
|
||||
proper verification was going on,” he commented.
|
||||
|
||||
|
||||
> It was exactly the interactions via the Zulip chat that convinced me that a
|
||||
> proper verification was going on.
|
||||
>
|
||||
> — [Peter Scholze](https://www.hcm.uni-bonn.de/people/faculty/profile/peter-scholze/),
|
||||
> professor at the [University of
|
||||
> Bonn](https://en.wikipedia.org/wiki/University_of_Bonn) and director at the
|
||||
> [Max Planck Institute for
|
||||
> Mathematics](https://en.wikipedia.org/wiki/Max_Planck_Institute_for_Mathematics)
|
||||
> ([source](https://xenaproject.wordpress.com/2021/06/05/half-a-year-of-the-liquid-tensor-experiment-amazing-developments/))
|
||||
|
||||
“I have never seen this kind of collaboration before,” says [Kevin
|
||||
Buzzard](https://www.imperial.ac.uk/people/k.buzzard), Professor of Pure
|
||||
Mathematics at Imperial College London, who took part in Lean community’s
|
||||
verification effort. In mathematics, papers are generally coauthored by 2-3
|
||||
people who have known each other for years. The verification project is
|
||||
breaking new ground, with 10 authors, most of whom have never met, scattered
|
||||
across the world. “Zulip has completely changed the way I work, and very much
|
||||
for the better,” says Kevin Buzzard, who also leads the [Xena
|
||||
project](https://xenaproject.wordpress.com/what-is-the-xena-project/) to
|
||||
formalize undergraduate mathematics with Lean and thereby transform how college
|
||||
mathematics is taught.
|
||||
|
||||
|
||||
## Unified library of mathematics developed by a diverse community
|
||||
|
||||
Lean is an interactive theorem prover and a programming language. Like C++ or
|
||||
Python, it would be impossible to use in practice without a library of
|
||||
pre-defined components — imagine writing a function from scratch every time you
|
||||
need to sort a list! The functions that make it possible to “program” in Lean
|
||||
are being developed as
|
||||
[*mathlib*](https://github.com/leanprover-community/mathlib), a unified
|
||||
open-source library of mathematics.
|
||||
|
||||
The mathlib development effort brings together a uniquely large and diverse
|
||||
group of contributors, ranging from renowned researchers to undergraduate
|
||||
students just starting their mathematical journey. The Zulip chat has been vital
|
||||
to attracting and growing the mathlib community, which has been the foundation
|
||||
of mathlib’s success.
|
||||
|
||||
|
||||
> A number of people have cited the accessibility of [the Zulip] chat room as a
|
||||
> reason for deciding to use Lean.
|
||||
>
|
||||
> — “The Lean Mathematical Library”, by the
|
||||
> [mathlib](https://github.com/leanprover-community/mathlib) community
|
||||
> ([arXiv:1910.09336v2](https://arxiv.org/abs/1910.09336v2) **[cs.LO])**
|
||||
|
||||
Now numbering hundreds of active participants, the Lean community did not start
|
||||
out this way. [Launched in 2013](https://leanprover.github.io/about/), Lean was
|
||||
for many years developed by a small, tight-knit group, which exchanged ideas on
|
||||
a mailing list. Looking to have faster-paced interactions, the user community
|
||||
moved to Gitter in 2017, but it felt chaotic. Seeking a platform that would
|
||||
truly help the community to scale, the Lean community adopted Zulip in February
|
||||
2018.
|
||||
|
||||
“When we moved to Zulip, it was instantly clear that the problems we were seeing
|
||||
on Gitter had gone away completely,” says [Kevin
|
||||
Buzzard](https://www.imperial.ac.uk/people/k.buzzard), Professor of Pure
|
||||
Mathematics at Imperial College London. “Zulip was incredibly intuitive to use.
|
||||
It just worked.”
|
||||
|
||||
|
||||
> Zulip is incredibly intuitive.
|
||||
>
|
||||
> — [Kevin
|
||||
> Buzzard](https://www.imperial.ac.uk/people/k.buzzard), Professor of Pure
|
||||
> Mathematics at Imperial College London
|
||||
|
||||
|
||||
## Accessible and efficient like no other chat platform
|
||||
|
||||
Zulip’s unique combination of [topic-based
|
||||
organization](/why-zulip/) with a casual chat app feel helps
|
||||
the Lean community create a welcoming environment for newcomers. By [browsing
|
||||
recent conversations](/help/recent-conversations), newcomers can see what’s
|
||||
being discussed without being overwhelmed. They can start a new topic to ask
|
||||
basic questions without worrying about interrupting other conversations. Zulip’s
|
||||
threading model makes managing conversations incredibly efficient, allowing more
|
||||
senior community members to collaborate on research and library development, and
|
||||
jump in to help newer community members as time allows.
|
||||
|
||||
|
||||
> We could never do what we’re doing on Slack or Discord.
|
||||
>
|
||||
> — [Kevin Buzzard](https://www.imperial.ac.uk/people/k.buzzard), Professor of
|
||||
> Pure Mathematics at Imperial College London
|
||||
|
||||
“Zulip has been fantastic,” says [Robert Y. Lewis](https://robertylewis.com/),
|
||||
Brown University lecturer and
|
||||
[mathlib](https://github.com/leanprover-community/mathlib)
|
||||
[maintainer](https://github.com/leanprover-community/mathlib#maintainers). “I
|
||||
use Slack at work, and it works fine for 10-15 people, but I can’t imagine it
|
||||
working at Lean’s scale.”
|
||||
|
||||
|
||||
> I can’t imagine the Lean community without Zulip.
|
||||
>
|
||||
> — [Robert Y. Lewis](https://robertylewis.com/), Brown University lecturer and
|
||||
> [mathlib](https://github.com/leanprover-community/mathlib)
|
||||
> [maintainer](https://github.com/leanprover-community/mathlib#maintainers)
|
||||
|
||||
---
|
||||
|
||||
Check out our guides on using Zulip for [research](/for/research/)
|
||||
and [open source](/for/open-source/), and learn how Zulip
|
||||
[helps communities grow](/for/communities/)!
|
||||
30
templates/corporate/case-studies/mixxx-case-study.html
Normal file
30
templates/corporate/case-studies/mixxx-case-study.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Mixxx open-source community | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how collaboration in Zulip drives innovation
|
||||
for a community of passionate DJs and programmers from all over the world." %}
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Mixxx <br /> open-source community</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for<br /> <a href="/for/open-source/">open
|
||||
source projects</a> and <a href="/for/communities/">communities</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/mixxx-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
125
templates/corporate/case-studies/mixxx-case-study.md
Normal file
125
templates/corporate/case-studies/mixxx-case-study.md
Normal file
@@ -0,0 +1,125 @@
|
||||
[Mixxx](https://mixxx.org/) is open-source DJing software built by a community
|
||||
of passionate DJs and programmers from all over the world. In their nights and
|
||||
weekends, and without centralized planning or deadlines, they’ve created free
|
||||
software that [rivals](https://cdm.link/mixxx-2-4-2/) commercial alternatives
|
||||
*and* [respects](https://www.digitaldjtips.com/reviews/mixxx-2-5-1-dj-software/)
|
||||
its users.
|
||||
|
||||
Mixxx aims to offer DJs creative freedom that can’t be found in other software.
|
||||
In the Mixxx community, collaboration between users and developers drives
|
||||
product innovation. A simple question from a user can spark a clever solution.
|
||||
|
||||
“Zulip has become a solid foundation of our community: a place where developers,
|
||||
translators, designers, and testers meet and collaborate,” core Mixxx developer
|
||||
Daniel Schürmann explains in a [blog
|
||||
post](https://mixxx.org/news/2025-11-17-zulip-3000_members/) occasioned by the
|
||||
Mixxx Zulip community reaching 3,000 members.
|
||||
|
||||
<figure class="markdown-image-with-caption">
|
||||
<img src="/static/images/landing-page/case-studies/Mixxx-UI.png" alt="Mixxx software interface">
|
||||
<figcaption class="markdown-image-caption">Mixxx software</figcaption>
|
||||
</figure>
|
||||
|
||||
## Needed: A platform to keep conversations organized and accessible
|
||||
|
||||
Founded in 2001, the Mixxx community originally communicated on a Mailman
|
||||
mailing list and an IRC chat channel. But by 2018, these platforms were no
|
||||
longer serving the community’s needs.
|
||||
|
||||
"As the project and number of contributors grew, we needed a platform that could
|
||||
keep conversations organized and accessible to everyone,” Daniel explains on the
|
||||
Mixxx blog. “Zulip… convinced us after a short evaluation period. Its unique
|
||||
thread system was the ideal solution to replace structured email threads and
|
||||
instant chat rooms.”
|
||||
|
||||
> [Zulip’s] unique thread system was the ideal solution to replace structured
|
||||
> email threads and instant chat rooms.
|
||||
>
|
||||
> — [Mixxx blog](https://mixxx.org/news/2025-11-17-zulip-3000_members/)
|
||||
|
||||
## Supporting asynchronous collaboration with structure and focus
|
||||
|
||||
Zulip has proven perfectly suited to support Mixxx’s worldwide community: It has
|
||||
made collaboration easier, and community engagement has grown as a result.
|
||||
“Zulip works particularly well for open-source projects where many topics run in
|
||||
parallel, and where structure and focus are key to success,” Daniel explains.
|
||||
|
||||
Being able to move messages between threads helps keep conversations tidy, which
|
||||
is critical for a distributed volunteer community like Mixxx: “[It] makes it
|
||||
possible to collaborate asynchronously across time zones without missing
|
||||
important context,” Daniel’s writes on the blog.
|
||||
|
||||
> Whenever a topic drifts, we can split it into a new thread, so conversations
|
||||
> stay focused and are easy to follow.
|
||||
>
|
||||
> — [Mixxx blog](https://mixxx.org/news/2025-11-17-zulip-3000_members/)
|
||||
|
||||
The Mixxx community has dedicated channels for development, support,
|
||||
socializing, and introductions. New members are encouraged to introduce
|
||||
themselves in a dedicated topic with their name, where the community can welcome
|
||||
them.
|
||||
|
||||
## Informed, but not stressed
|
||||
|
||||
Daniel, too, contributes to Mixxx in his spare time. Given the demands of his
|
||||
day job, family and friends, “I’m not the person who can always hang around in
|
||||
the chat,” he explains. “With Zulip, there’s no *need* to hang around in chat
|
||||
rooms to avoid missing an important conversation.”
|
||||
|
||||
> With Zulip, I feel informed, but not stressed by all the messages.
|
||||
>
|
||||
> — Daniel Schürmann, core Mixxx developer
|
||||
|
||||
Zulip’s threading model also works well for occasional participants in the
|
||||
community, and world-public channels make it possible to view discussions
|
||||
without even creating an account.
|
||||
|
||||
Daniel squeezes in some Mixxx time on his commute: “The smart phone app recently
|
||||
received a major update, and is very nice,” he says.
|
||||
|
||||
## Creative collaboration between users and developers
|
||||
|
||||
A creative partnership between users and developers is core to the Mixxx
|
||||
development process. Zulip supports detailed, specific discussion of any problem
|
||||
reported by a user, with video and image uploads, syntax-highlighted code
|
||||
blocks, and convenient quoting functionality. Everyone can keep track of
|
||||
conversations in their [inbox](/help/inbox), and automatically
|
||||
[follow](/help/follow-a-topic) topics they’ve participated in.
|
||||
|
||||
> Collaboration in the Mixxx Zulip community propels the creative process to
|
||||
> the next level.
|
||||
>
|
||||
> — Evelynne Veys, core Mixxx developer
|
||||
|
||||
## One of the best tools, built with love
|
||||
|
||||
Daniel uses Microsoft Teams in his day job, and greatly prefers Zulip: “You can
|
||||
experience that there’s a lot of love in Zulip,” he explains. From the smooth,
|
||||
snappy interactions, to helpful touches like global times, polls, and pronouns,
|
||||
it adds up.
|
||||
|
||||
> You can experience that there’s a lot of love in Zulip.
|
||||
>
|
||||
> — Daniel Schürmann, core Mixxx developer
|
||||
|
||||
Other community members feel it too: “Some new contributors who were skeptical
|
||||
at first later told us that they consider Zulip one of the best tools for
|
||||
managing communication across projects,” Daniel says.
|
||||
|
||||
With Zulip, the Mixxx community isn’t reliant on proprietary software built by a
|
||||
mega-corporation. Daniel and other community members are glad that the Mixxx
|
||||
community has found an excellent communication tool that also aligns with their
|
||||
FOSS values.
|
||||
|
||||
> I highly recommend Zulip to other communities… Slack is a no-go for many due
|
||||
> to not being FLOSS, and I’m concerned about vendor lock-in if they were to
|
||||
> stop being so generous. Slack’s threading model is much worse than Zulip’s
|
||||
> IMO. The channels/topics flow is an incredibly intuitive way to keep track of
|
||||
> everything that is going on.
|
||||
>
|
||||
> — RJ Ryan, core Mixxx developer
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on using Zulip for [open source](/for/open-source/), and
|
||||
learn how Zulip [helps communities scale](/for/communities/)!
|
||||
@@ -0,0 +1,32 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Recurse Center | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "“Switching to Zulip has turned out to be one of the
|
||||
best decisions we’ve made,” says Recurse Center co-founder and CEO Nick
|
||||
Bergson-Shilcock." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Recurse Center</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for
|
||||
<br/><a href="/for/communities/">communities</a> and <a href="/for/education/">education</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/recurse-center-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
243
templates/corporate/case-studies/recurse-center-case-study.md
Normal file
243
templates/corporate/case-studies/recurse-center-case-study.md
Normal file
@@ -0,0 +1,243 @@
|
||||
[The Recurse Center](https://www.recurse.com/about) (RC for short) offers
|
||||
educational retreats for anyone who wants to get dramatically better at
|
||||
programming. Since its founding in 2011, [over 2000
|
||||
participants](https://www.recurse.com/10-years) have attended the program,
|
||||
either in person in New York City or (since the start of the Covid-19 pandemic)
|
||||
remotely from anywhere in the world. Participants range from experienced
|
||||
professional programmers to new programmers transitioning into the industry. The
|
||||
retreats are free for everyone, and RC is funded entirely through its
|
||||
[integrated recruiting agency](https://www.recurse.com/hire).
|
||||
|
||||
[A major highlight](https://www.recurse.com/why) of RC’s program is its active
|
||||
online community of current participants and alumni. “The core of the Recurse
|
||||
Center is the community, and the core of our online community is Zulip,”
|
||||
[writes](https://www.recurse.com/blog/112-how-rc-uses-zulip) Recurse Center
|
||||
[co-founder and CEO](https://www.recurse.com/team) Nick Bergson-Shilcock.
|
||||
“Switching to Zulip has turned out to be one of the best decisions we’ve made,
|
||||
and it’s impossible to imagine RC today without it.”
|
||||
|
||||
|
||||
> The core of the Recurse Center is the community, and the core of our online
|
||||
> community is Zulip… Switching to Zulip has turned out to be one of the best
|
||||
> decisions we’ve made, and it’s impossible to imagine RC today without it.
|
||||
>
|
||||
> — [Nick Bergson-Shilcock](https://github.com/nicholasbs), Recurse Center
|
||||
> [co-founder and CEO](https://www.recurse.com/team)
|
||||
|
||||
|
||||
## Choosing Zulip in 2013: “One of the best decisions we’ve made”
|
||||
|
||||
The Recurse Center was an early adopter of Zulip. They began to use the product
|
||||
in January 2013, when it was still in private beta. Even then, Zulip’s
|
||||
thoughtful design made it stand out. “We wanted a private chat system that was
|
||||
persistent, easily searchable, and which supported syntax highlighting for code
|
||||
snippets,“ says Recurse Center co-founder and CEO Nick Bergson-Shilcock. “Zulip
|
||||
gave us all the benefits above, along with a slew of others we hadn’t expected.”
|
||||
|
||||
When the startup building Zulip was [acquired by Dropbox in early
|
||||
2014](https://zulip.com/history/), Zulip product development was put on hold for
|
||||
a year and a half. Because of Zulip’s advantages over the alternatives, Recurse
|
||||
Center continued using Zulip all through that time: “We strongly prefer Zulip to
|
||||
other options for several reasons – its message threading being a key one,”
|
||||
[wrote](https://www.recurse.com/blog/90-zulip-supporting-oss-at-the-recurse-center)
|
||||
RC CEO Nick Bergson-Shilcock in 2015.
|
||||
|
||||
From the early days, the RC community has been passionate about Zulip. When
|
||||
Dropbox generously decided to [release Zulip as open source
|
||||
software](https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a-dropbox-hack-week-project/)
|
||||
in 2015, Recurse Center alumni [flew out to San
|
||||
Francisco](https://www.recurse.com/blog/90-zulip-supporting-oss-at-the-recurse-center)
|
||||
for a week to help make it happen. Since then, Zulip has built the most active
|
||||
open-source development community of any team chat software, with [75
|
||||
people](https://zulip.com/team/) who’ve contributed 100+ commits.
|
||||
|
||||
> It’s not an exaggeration to say Zulip has made RC a stronger community.
|
||||
>
|
||||
> — [Nick Bergson-Shilcock](https://github.com/nicholasbs), Recurse Center
|
||||
> [co-founder and CEO](https://www.recurse.com/team)
|
||||
|
||||
|
||||
## Zulip becomes the backbone of a worldwide community
|
||||
|
||||
For years, the Zulip chat been the backbone of the Recurse Center community.
|
||||
“Zulip is an integral part of the Recurse Center experience,” says Rachel
|
||||
Petacat, [Head of Retreat](https://www.recurse.com/team) at Recurse Center, and
|
||||
RC’s Director of Operations from 2014 to 2021.
|
||||
|
||||
Zulip serves as a collaboration hub for the current participants and alumni.
|
||||
“Participants use Zulip to ask and answer questions, get code review, and
|
||||
coordinate pairing sessions, reading groups, informal seminars, and countless
|
||||
other forms of collaboration. Zulip is even more essential for our alumni, who
|
||||
are in over 100 cities around the world but remain heavily involved thanks to
|
||||
Zulip,” [writes](https://www.recurse.com/blog/112-how-rc-uses-zulip) RC CEO Nick
|
||||
Bergson-Shilcock.
|
||||
|
||||
> [In the first ten years](https://www.recurse.com/10-years) since the Recurse
|
||||
> Center was founded, the community sent **2.52 million** Zulip messages.
|
||||
|
||||
[Zulip’s threading model](https://zulip.com/why-zulip/) makes it easy to have
|
||||
focused technical discussions. It also perfectly accommodates participants at
|
||||
different levels of engagement. Current RC members can immerse themselves in the
|
||||
ongoing discussions, occasionally muting topics they don’t want to follow. RC
|
||||
leaders monitor the community asynchronously, reviewing the ongoing
|
||||
conversations a few times a day and jumping in as needed. Finally, alumni can
|
||||
drop by on occasion to skim [recent conversations](/help/recent-conversations),
|
||||
catch up on their friends’ update threads, or search the discussion history for
|
||||
a topic of interest.
|
||||
|
||||
“Our community is 10 years old and spans continents,” RC’s Head of Retreat
|
||||
Rachel Petacat says. “Zulip provides the continuity that lets us maintain our
|
||||
culture over time.”
|
||||
|
||||
|
||||
## A welcoming environment for all community members
|
||||
|
||||
When new participants join the Recurse Center, Zulip becomes their port of entry
|
||||
into the community. “With Zulip’s threading, new folks can get the full context
|
||||
for a conversation, which makes the community feel welcoming,” Head of Retreat
|
||||
Rachel Petacat says.
|
||||
|
||||
|
||||
> Zulip is more friendly to new users than Discord or Slack.
|
||||
>
|
||||
> — Rachel Petacat, Recurse Center [Head of Retreat](https://www.recurse.com/team)
|
||||
|
||||
Threading also gives each conversation its own space, which means that community
|
||||
members never have to feel like they are interrupting when they speak up.
|
||||
“Threading makes it easy for anyone to jump in,” Rachel explains. ”Folks don’t
|
||||
feel like they’re stepping onto someone’s conversation.”
|
||||
|
||||
Over the years, the Recurse Center has used Zulip’s customization features and
|
||||
powerful, well-documented APIs to set up a space that really feels like a home
|
||||
for the community. “We use so many custom emoji,” says Rachel Petacat.
|
||||
|
||||
A whole crew of bots is on hand to help out, from Chatbot for quick chat intros,
|
||||
to [RSVPBot](https://github.com/wtfcarlos/RSVPBot#readme) for creating and
|
||||
managing calendar events, to
|
||||
[Blaggeregator](https://github.com/recursecenter/blaggregator#readme), which
|
||||
aggregates blog posts for the RC community.
|
||||
|
||||
|
||||
## “I can’t imagine being able to operate Recurse Center without Zulip”
|
||||
|
||||
Rachel Petacat is a long-time member of RC’s leadership team. Her job requires
|
||||
keeping up with the ~45 members in the current batch, making sure they have what
|
||||
they need to get the most out of their RC experience.
|
||||
|
||||
To juggle everything she needs to get done, Rachel takes full advantage of the
|
||||
flexibility between synchronous and asynchronous discussions that Zulip offers.
|
||||
Realtime chat on Zulip is perfect for coordinating with other members of the
|
||||
leadership team. “Zulip is one of the first tabs I open at the start of the work
|
||||
day,” Rachel says. “I can check what’s happening, and plan my day. Other
|
||||
organizers and I tag each other on Zulip if we need any help.”
|
||||
|
||||
Rachel uses Zulip to follow the ongoing conversations, and help out as needed.
|
||||
Zulip’s threading model makes it easy to review discussion threads every few
|
||||
hours, and respond in context. “I read the discussions on Zulip once in the
|
||||
morning and again in the afternoon, chiming in where I need to,” says Rachel.
|
||||
With Zulip, Rachel is able to manage the community without her focus being
|
||||
interrupted by the need to jump in before the moment has passed. “I can’t
|
||||
imagine being able to operate the Recurse Center without Zulip,” Rachel says.
|
||||
|
||||
|
||||
## An alum experience: Staying connected since 2015
|
||||
|
||||
One of the benefits of participating in RC is the opportunity to stay connected
|
||||
with the community. “You'll be able to participate in the RC community online
|
||||
forever,” the RC website [explains](https://www.recurse.com/why). “Almost 30% of
|
||||
the RC community is regularly active [on
|
||||
Zulip](https://www.recurse.com/blog/112-how-rc-uses-zulip),” an incredible
|
||||
statistic for a 6-12 week program with many alumni who attended years ago. Many
|
||||
alums drop in on Zulip to chat, pair-program, and host events.
|
||||
|
||||
John Hergenroeder first attended RC back in 2015. In the Recurse Center, John (a
|
||||
software engineer by profession) found the inclusive and welcoming programming
|
||||
community he was looking for.
|
||||
|
||||
Even with everyone sitting in the same room, Zulip served as a social hub for
|
||||
John’s RC cohort. “People had different schedules, so we used Zulip to leave
|
||||
questions, work artifacts, demos — anything you thought was interesting,” John
|
||||
says. This let participants engage with the content asynchronously, and created
|
||||
a lasting record for the community. “We even used a Zulip topic to coordinate
|
||||
for lunch, to let people have their uninterrupted focus time,” John says.
|
||||
|
||||
Since 2015, John has stayed connected with the RC alumni community on Zulip. “We
|
||||
have a channel for alumni check-ins, where each alum uses a dedicated topic to
|
||||
post updates,” John explains. Some alums drop by weekly, while others might come
|
||||
around once a year. “You can leave a note, and it’s OK if your friend reads it
|
||||
a few months later,” John says. “Compare that with Slack, where if someone
|
||||
doesn’t see a message in some channel on that day, they’ll *never* see it.”
|
||||
|
||||
Without dedicating a lot of time, John is able to stay involved in the community
|
||||
on Zulip, and share his expertise where relevant. “I scan [recent
|
||||
topics](/help/recent-conversations) for places where I could help, and rely on
|
||||
email notifications for private messages,” John explains. The experience of
|
||||
keeping up on Zulip is in sharp contrast with Slack, which John uses at work:
|
||||
“It’s so hard to keep up with the Slack firehose.”
|
||||
|
||||
> Zulip allows people who are engaging with the community at different paces to connect.
|
||||
>
|
||||
> — John Hergenroeder, Recurse Center alum
|
||||
|
||||
|
||||
## Zulip’s open-source ethos
|
||||
|
||||
Zulip is developed as open-source software, with an active and growing
|
||||
community; over 1100 people have contributed code to the project. As a long-time
|
||||
Zulip user, John Hergenroeder appreciates the many thoughtfully designed
|
||||
[features](https://zulip.com/features/) unique to Zulip.
|
||||
“[Choosing](https://zulip.com/help/mention-a-user-or-group#silently-mention-a-user)
|
||||
whether or not a mention notifies people is really handy,” John says. “[Global
|
||||
times](https://zulip.com/help/format-your-message-using-markdown#global-times)
|
||||
are great for organizing events, and
|
||||
[spoilers](https://zulip.com/help/format-your-message-using-markdown#spoilers)
|
||||
were perfect for chatting about the Advent of Code puzzles.”
|
||||
|
||||
And if Zulip is missing some feature? “We can file an issue, or even go and make
|
||||
it happen,” says John. Over the years, John has filed [11
|
||||
issues](https://github.com/zulip/zulip/issues?q=is%3Aissue+author%3Ajdherg+is%3Aclosed)
|
||||
in the Zulip issue tracker that have been resolved, and dozens of Recursers have
|
||||
contributed code to Zulip. It’s a radically different experience from trying to
|
||||
give feedback to a corporation building a closed-source product. When he
|
||||
encounters issues with Slack, John has his strategy: “When I come across a Slack
|
||||
bug, I try to find someone I know who works there, because I have no idea if
|
||||
anyone will pay attention if I go through support.”
|
||||
|
||||
|
||||
## Going virtual: “For a while, Zulip *was* RC”
|
||||
|
||||
Prior to 2020, the Recurse Center offered an immersive in-person retreat
|
||||
experience in the heart of New York City. This paradigm was shattered when the
|
||||
Covid-19 pandemic hit New York in March 2020, and the Recurse Center made the
|
||||
difficult decision to [move all operations
|
||||
online](https://www.recurse.com/blog/152-RC-is-online-only-until-at-least-May).
|
||||
|
||||
Over time, the Recurse Center built out a custom virtual world (integrated with
|
||||
Zulip) for online participants. But in the early days of the pandemic, it was
|
||||
Zulip that replaced the physical space where RC participants had spent time
|
||||
together and helped each other out. “At the time, all we had was Zulip, email,
|
||||
our website, Zoom, and a rarely used forum,” recalls RC’s Head of Retreat Rachel
|
||||
Petacat. “For a while, Zulip *was* RC.”
|
||||
|
||||
|
||||
## An invaluable knowledge base
|
||||
|
||||
Edith, who works as a technical writer, participated in virtual RC in 2020. Two
|
||||
years later, she still uses Zulip every day to stay connected.
|
||||
|
||||
Zulip’s combination of powerful search and topic-based threading makes prior
|
||||
discussions both findable and useful. “It’s easier to build context with Zulip
|
||||
than any other tool,” Edith says. “With other messaging services, information
|
||||
tends to get lost. In Zulip, I often look something up from a while ago —
|
||||
anything from discussion of niche programming topics, to whether anyone has
|
||||
commented on a book I’m thinking about reading.”
|
||||
|
||||
“You really feel that you’re joining a group of 2000 people who’ve been doing
|
||||
this for 10 years,” says Rachel Petacat. “You can find someone who trod the same
|
||||
path 6 years ago!”
|
||||
|
||||
---
|
||||
|
||||
Check out our guides on using Zulip for [education](/for/education/) and
|
||||
[events](/for/events/), and learn how Zulip [helps communities
|
||||
grow](/for/communities/)!
|
||||
32
templates/corporate/case-studies/rush-stack-case-study.html
Normal file
32
templates/corporate/case-studies/rush-stack-case-study.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Rush Stack open-source community | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip makes it easy for the Rush Stack
|
||||
community to provide the level of support required for mission-critical
|
||||
enterprise tools." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-pycon">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Rush Stack <br /> open-source community</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for<br /> <a href="/for/open-source/">open
|
||||
source projects</a> and <a href="/for/communities/">communities</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/rush-stack-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
117
templates/corporate/case-studies/rush-stack-case-study.md
Normal file
117
templates/corporate/case-studies/rush-stack-case-study.md
Normal file
@@ -0,0 +1,117 @@
|
||||
[Rush Stack](https://rushstack.io/) is an open-source collection of specialized
|
||||
tooling for working with the world's largest source code repositories.
|
||||
|
||||
Providing support is often a challenge for open-source projects, especially when
|
||||
maintainers are juggling internal investigations at work alongside their
|
||||
open-source correspondence. Yet to be successful, the Rush Stack community
|
||||
needs to systematically handle questions and feedback.
|
||||
|
||||
Zulip makes it easy for the Rush Stack community to provide the level of support
|
||||
required for mission-critical enterprise tools. “With Zulip, we have a system
|
||||
that feels professional, where once a topic is opened, we can make sure that it
|
||||
gets resolved,” says Rush Stack maintainer [Pete
|
||||
Gonzalez](https://github.com/octogonz).
|
||||
|
||||
|
||||
> With Zulip, we have a system that feels professional.
|
||||
>
|
||||
> — Rush Stack maintainer Pete Gonzalez
|
||||
|
||||
|
||||
## Choosing a chat product? Focus on the features that matter.
|
||||
|
||||
Pete Gonzalez started researching chat platform options for the Rush Stack
|
||||
community in early 2020, looking to replace Gitter. “I had worked on
|
||||
[Yammer](https://en.wikipedia.org/wiki/Viva_Engage), and even wrote my own
|
||||
client, so I was thinking about chat apps very deeply,” Pete recalls. “Although
|
||||
chat apps may seem similar, there are actually many subtle design tradeoffs
|
||||
whose combination determines whether an app will work well for a particular use
|
||||
case.”
|
||||
|
||||
Rush Stack needed a space for maintainers and community members to have serious,
|
||||
long-running conversations. “Rush Stack discussions have the character of
|
||||
support tickets,” Pete explains. “Someone can ask a question that might take two
|
||||
years to finally solve.”
|
||||
|
||||
Pete identified Zulip as the best fit for the needs of the community. With
|
||||
Zulip’s topic-based organization, conversations can run their course, with the
|
||||
full context of the discussion easily at hand when someone has a new idea.
|
||||
“Zulip gives you control,” Pete points out. “You can edit or move messages to
|
||||
fix anything that might be incorrect or confusing, which is important for
|
||||
long-running discussions.”
|
||||
|
||||
|
||||
> Zulip gives you control.
|
||||
>
|
||||
> — Rush Stack maintainer Pete Gonzalez
|
||||
|
||||
To make the transition, Rush Stack imported the project’s full chat history from
|
||||
Gitter into Zulip, making it an easily searchable resource. Enabling Zulip’s
|
||||
feature for logging in with GitHub meant that users didn’t have to make new
|
||||
accounts. Users could also control how their messages looked with familiar
|
||||
Markdown formatting.
|
||||
|
||||
|
||||
## “Zulip has better features for the way we use it”
|
||||
|
||||
Over the years, Pete had continued to keep an eye on the evolution of team chat
|
||||
products. “Compared to Discord, Slack, GitHub discussions… Zulip has better
|
||||
features for the way we use it,” he says.
|
||||
|
||||
Pete has seen open-source maintainers struggle to manage a Discord community:
|
||||
“There are all these people asking questions… If an important question scrolls
|
||||
out of view, how would you follow up? Maintainers end up giving up on community
|
||||
management, leaving casual participants to sort things out on their own.”
|
||||
|
||||
Slack’s paid plans, which start at $8.75/user/month, are unaffordable for
|
||||
community use. “You have to pay a lot for Slack history, and users can’t log in
|
||||
with their GitHub account,” Pete says. On the free plan, communities have access
|
||||
to just 90 days of message history, which is unworkable for a community with a
|
||||
large knowledge base and long-running investigations.
|
||||
|
||||
|
||||
> Of all the apps I tested, Zulip’s approach stood out as the best fit for how
|
||||
> we work.
|
||||
>
|
||||
> — Rush Stack maintainer Pete Gonzalez
|
||||
|
||||
|
||||
## Software that’s built in the open and always improving
|
||||
|
||||
Pete has been impressed by how Zulip handles user feedback. “I can go into the
|
||||
development community to talk to them, and often the tech lead of the team will
|
||||
reply,” he notes. “Even if their answer is that my request is a lower priority
|
||||
right now, there is context to understand that. New features are always being
|
||||
added, and with the team’s daily discussions being public, I can see what they
|
||||
are working on and why. It’s a really different dynamic from trying to make
|
||||
feature requests or bug reports for a closed source product with an invisible
|
||||
engineering team.”
|
||||
|
||||
|
||||
> New features are always being added, and with the team’s daily discussions
|
||||
> being public, I can see what they are working on and why.
|
||||
>
|
||||
> — Rush Stack maintainer Pete Gonzalez
|
||||
|
||||
Pete was pleased to learn that organizations can now allow [public
|
||||
access](/help/public-access-option) to channels. It lowers the bar for people to
|
||||
view Zulip discussions that are linked from Rush Stack GitHub issues.
|
||||
|
||||
Pete has also seen Zulip’s onboarding experience transform over the past few
|
||||
years. “In the past, Zulip was optimized for daily users, and so had a bit of a
|
||||
learning curve for occasional Rush Stack participants. But the UX has improved a
|
||||
lot in this regard. The [recent conversations](/help/recent-conversations) view
|
||||
that’s been added has largely addressed the challenge for new users,” Pete says.
|
||||
This view lists the topics being discussed, and is also the go-to for Pete to
|
||||
check in on what’s happening.
|
||||
|
||||
|
||||
> The folks who make Zulip listen to customers, and the product continues to
|
||||
> improve.
|
||||
>
|
||||
> — Rush Stack maintainer Pete Gonzalez
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on using Zulip for [open source](/for/open-source/), and
|
||||
learn how Zulip [helps communities scale](/for/communities/)!
|
||||
31
templates/corporate/case-studies/rust-case-study.html
Normal file
31
templates/corporate/case-studies/rust-case-study.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Rust programming language community | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn why Rust development would not be moving at the
|
||||
pace that it has been without Zulip, and the organized, searchable conversations it enables." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-pycon">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Rust<br/>programming language community</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for<br /> <a href="/for/open-source/">open
|
||||
source projects</a> and <a href="/for/communities/">communities</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/rust-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
167
templates/corporate/case-studies/rust-case-study.md
Normal file
167
templates/corporate/case-studies/rust-case-study.md
Normal file
@@ -0,0 +1,167 @@
|
||||
## Rust: A popular programming language built by 1000s of contributors
|
||||
|
||||
[Rust](https://www.rust-lang.org/) is a popular modern programming language,
|
||||
designed for performance, reliability and productivity, and used by hundreds of
|
||||
companies around the world. Organized into teams and working groups, the Rust
|
||||
project is led by [over 100 team members](https://www.rust-lang.org/governance)
|
||||
who oversee the work of [more than 6000
|
||||
contributors](https://thanks.rust-lang.org/).
|
||||
|
||||
|
||||
## Rust moves to Zulip, one team at a time
|
||||
|
||||
Each Rust team decides independently how to organize itself and what
|
||||
communication tools to use. Every major Rust team has chosen Zulip as their chat
|
||||
platform, including the
|
||||
[Compiler](https://www.rust-lang.org/governance/teams/compiler),
|
||||
[Language](https://www.rust-lang.org/governance/teams/lang),
|
||||
[Library](https://www.rust-lang.org/governance/teams/library) and
|
||||
[Infrastructure](https://www.rust-lang.org/governance/teams/infra) teams. Some
|
||||
Rust teams have migrated between collaboration tools two or even three times in
|
||||
search of an effective solution. No team has moved away from Zulip after trying
|
||||
it.
|
||||
|
||||
“Zulip lets us move faster, connect with each other better, and have interactive
|
||||
technical discussions that are organized, recorded, and welcoming to other
|
||||
people,” says [Rust Language
|
||||
team](https://www.rust-lang.org/governance/teams/lang) co-lead [Josh
|
||||
Triplett](https://joshtriplett.org/).
|
||||
|
||||
|
||||
> Zulip lets us have focused conversations at scale.
|
||||
>
|
||||
> — [Rust compiler team](https://www.rust-lang.org/governance/teams/compiler) co-lead [Felix
|
||||
> Klock](https://github.com/pnkfelix)
|
||||
|
||||
|
||||
## The Language team moves from Discord to Zulip: “It’s better in all the ways I care about”
|
||||
|
||||
Let’s take a closer look at the story of the Rust Language team, which works on
|
||||
designing and helping to implement new language features. The team started out
|
||||
by using Gitter, but moved to Discord in 2018 in search of a more stable
|
||||
solution.
|
||||
|
||||
Some community members advocated for trying out Zulip, but the team leadership
|
||||
was reluctant to make another change. “Everyone in our community who was
|
||||
familiar with Zulip seemed thrilled with it,” says [Language
|
||||
team](https://www.rust-lang.org/governance/teams/lang) co-lead [Josh
|
||||
Triplett](https://joshtriplett.org/), “but moving our team seemed like too much
|
||||
of a pain.”
|
||||
|
||||
Eventually, Josh had to sign up for Zulip in order to get in touch with another
|
||||
Rust team. “After a day of using Zulip, I became an advocate myself,” he says.
|
||||
“Zulip is wildly simpler than most other tools I’ve worked with.” The team made
|
||||
the move in November 2019 and has never looked back.
|
||||
|
||||
“I’m personally ecstatically happy with Zulip,” says Josh, who also uses the
|
||||
Zulip instances for the [Bytecode Alliance](https://bytecodealliance.org/),
|
||||
[Rust for Linux](https://github.com/Rust-for-Linux), and
|
||||
[http-rs](https://github.com/http-rs/tide) Zulip communities. “It’s better in
|
||||
all the ways I care about and a joy to use.”
|
||||
|
||||
|
||||
> Zulip is wildly simpler than most other tools I’ve worked with.
|
||||
>
|
||||
> — [Rust Language team](https://www.rust-lang.org/governance/teams/lang) co-lead
|
||||
> [Josh Triplett](https://joshtriplett.org/)
|
||||
|
||||
|
||||
## Zulip enables organized, searchable conversations
|
||||
|
||||
Zulip’s threading model provides a two-layer organizational hierarchy. It offers
|
||||
the advantages of a forum or a mailing list, reimagined in the context of a
|
||||
modern chat tool.
|
||||
|
||||
In contrast with other chat tools, Zulip makes it pleasant to have **multiple
|
||||
conversations** going on at once, with each conversation being easy to follow.
|
||||
“Slack and Discord both suffer when trying to collaborate with others at scale —
|
||||
you end up with conversations happening across each other,” says [David
|
||||
Wood](https://davidtw.co/), member of the [Rust compiler
|
||||
team](https://www.rust-lang.org/governance/teams/compiler). “In Zulip, I can
|
||||
instantly see the context for each message.”
|
||||
|
||||
Afterwards, Zulip’s thread-based organization creates a **clear record** of
|
||||
past discussions, documenting the decision-making process. “Zulip creates a
|
||||
transparent record of what we do,” says Josh. It’s **easy to link** to Zulip
|
||||
threads from other tools in order to provide background context. “We link to
|
||||
Zulip threads all the time on GitHub, Twitter, email, Discourse, and from other
|
||||
Zulip messages,” [Josh Triplett](https://joshtriplett.org/) says.
|
||||
|
||||
|
||||
> Slack and Discord feel opaque. Zulip feels like an open room.
|
||||
>
|
||||
> — [Rust Language team](https://www.rust-lang.org/governance/teams/lang) co-lead
|
||||
> [Josh Triplett](https://joshtriplett.org/)
|
||||
|
||||
Because information on Zulip is **well-organized**, one can easily find and
|
||||
review earlier conversations, even if months have passed. The organization’s
|
||||
**rich history** continues to provide value indefinitely. “I can find and
|
||||
re-read old conversations,” says [Rust Language
|
||||
team](https://www.rust-lang.org/governance/teams/lang) co-lead [Niko
|
||||
Matsakis](https://github.com/nikomatsakis). “If I send someone a link to a
|
||||
discussion, they can jump right in; this would be impossible in other chat tools
|
||||
I’ve used.”
|
||||
|
||||
Unlike other chat tools, a discussion on Zulip can even be revived after weeks
|
||||
or months have passed if new information or ideas come to light, with no loss of
|
||||
**surrounding context**.
|
||||
|
||||
Catching up works great, whether you were away for hours, days, or even weeks.
|
||||
“When I come back after a break, I don’t feel overwhelmed: I can skim topics
|
||||
looking for the ones that seem important, and scroll briefly through the rest,”
|
||||
says [Rust Language team](https://www.rust-lang.org/governance/teams/lang)
|
||||
co-lead [Niko Matsakis](https://github.com/nikomatsakis).
|
||||
|
||||
|
||||
> When I come back after a break, I don’t feel overwhelmed.
|
||||
>
|
||||
> — [Rust Language team](https://www.rust-lang.org/governance/teams/lang)
|
||||
> co-lead [Niko Matsakis](https://github.com/nikomatsakis)
|
||||
|
||||
|
||||
## Zulip makes the Rust community more agile
|
||||
|
||||
In addition to being well-organized, Zulip interactions are
|
||||
**conversational**, enabling **faster decision-making**. GitHub issues about
|
||||
controversial Rust language decisions can devolve into incomprehensible comment
|
||||
threads with [several](https://github.com/rust-lang/rust/issues/57640)
|
||||
[hundred](https://github.com/rust-lang/rust/issues/34511)
|
||||
[messages](https://github.com/rust-lang/rust/issues/28237). “Some decisions
|
||||
that were blocked for months on GitHub were resolved within 24 hours by starting
|
||||
the right conversation on Zulip,” says [Rust Language
|
||||
team](https://www.rust-lang.org/governance/teams/lang) co-lead [Josh
|
||||
Triplett](https://joshtriplett.org/).
|
||||
|
||||
|
||||
> Some decisions that were blocked for months on GitHub were resolved within 24
|
||||
> hours on Zulip.
|
||||
>
|
||||
> — [Rust Language team](https://www.rust-lang.org/governance/teams/lang) co-lead
|
||||
> [Josh Triplett](https://joshtriplett.org/)
|
||||
|
||||
With the features and feel of a **modern chat tool**, Zulip makes it easy to
|
||||
have quick, light-weight, friendly conversations to get work done. “Zulip
|
||||
strikes just the right balance between ephemeral and permanent,” [Josh
|
||||
Triplett](https://joshtriplett.org/) says. The [mobile
|
||||
applications](/apps/) make it easy to participate wherever you
|
||||
are. “The Android app is extremely functional,” says Josh. “It’s easy to set
|
||||
notification preferences, and the default level of notifications is just right.”
|
||||
|
||||
Adopting Zulip has been transformational for how the Rust community makes
|
||||
progress. “Rust development would not be moving at the pace that it has been
|
||||
without Zulip,” says [Rust Language
|
||||
team](https://www.rust-lang.org/governance/teams/lang) co-lead [Josh
|
||||
Triplett](https://joshtriplett.org/). “Without Zulip, the Rust community would
|
||||
be more stuck, more slow-moving, less agile, and a little less human.”
|
||||
|
||||
|
||||
> Rust development would not be moving at the pace that it has been without
|
||||
> Zulip.
|
||||
>
|
||||
> — [Rust Language team](https://www.rust-lang.org/governance/teams/lang) co-lead
|
||||
> [Josh Triplett](https://joshtriplett.org/)
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on using Zulip for [open source](/for/open-source/), and
|
||||
learn how Zulip [helps communities scale](/for/communities/)!
|
||||
32
templates/corporate/case-studies/semsee-case-study.html
Normal file
32
templates/corporate/case-studies/semsee-case-study.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Semsee | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "“I don't like going back to Slack now. It's just not
|
||||
as efficient a way to organize communication.” Learn how Zulip is used at
|
||||
InsurTech startup Semsee." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Semsee</h1>
|
||||
<p>InsurTech Startup</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for <a href="/for/business/">business</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/semsee-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
88
templates/corporate/case-studies/semsee-case-study.md
Normal file
88
templates/corporate/case-studies/semsee-case-study.md
Normal file
@@ -0,0 +1,88 @@
|
||||
[Semsee](https://semsee.com/) is a technology startup in the commercial
|
||||
insurance space, building intelligent software that digitizes slow manual
|
||||
processes. Originally based out of an office in New York, Semsee moved to a
|
||||
remote-work model during the pandemic, and now has several satellite teams
|
||||
across the US.
|
||||
|
||||
Semsee adopted Zulip early on in its journey. “We didn’t plan to be remote,”
|
||||
says James van Lommel, [Director of
|
||||
Engineering](https://www.linkedin.com/in/james-v-91a65219/) at Semsee. “But now
|
||||
that we are remote, it’s good to have a communication tool that really backs
|
||||
that up.”
|
||||
|
||||
|
||||
> Now that we are remote, it’s good to have a communication tool that really
|
||||
> backs that up.
|
||||
>
|
||||
> — James van Lommel, Director of Engineering at [Semsee](https://semsee.com/)
|
||||
|
||||
|
||||
## Looking for something better than Slack
|
||||
|
||||
James van Lommel joined Semsee in 2018 to lead the engineering team. At the
|
||||
time, the company was using Slack. James knew his choice of communication
|
||||
platform would have broad implications: “Communication helps feed the type of
|
||||
culture you have at a company,” James says.
|
||||
|
||||
James had used Slack extensively in his prior work experience. “Seeing how Slack
|
||||
gets used, especially as a company grows larger, I knew I wanted something
|
||||
better,” he recalls. “If you are not using Slack *all the time*, you can’t keep
|
||||
up with what’s happening.” James wanted a chat tool that would create breathing
|
||||
room for focused work, in-person conversations, and different work schedules.
|
||||
|
||||
> Seeing how Slack gets used, especially as a company grows larger, I knew I
|
||||
> wanted something better.
|
||||
>
|
||||
> — James van Lommel, Director of Engineering at [Semsee](https://semsee.com/)
|
||||
|
||||
In addition, as a security expert, James was interested in a self-hosted
|
||||
solution. “There is so much sensitive data that goes into a chat tool,” he says.
|
||||
“When we self-host, the messages don’t live on anyone else’s cloud.”
|
||||
|
||||
When James discovered Zulip, the topic-based threading model piqued his
|
||||
interest. “I didn’t want Mattermost or another self-hosted Slack clone,” he
|
||||
says. James quickly set up a Zulip server — he found that the instructions for
|
||||
self-hosting were easy to follow, and worked without a hitch. After trying Zulip
|
||||
for a few days with some coworkers, James was convinced that Zulip was the right
|
||||
choice for Semsee. “We need our employees to be able to come to the right place,
|
||||
and have a conversation about one thing,” he says. “Zulip solves that pain
|
||||
point.”
|
||||
|
||||
|
||||
## An efficient way to organize communication
|
||||
|
||||
These days, Zulip is at the core of company communication at Semsee. Email is
|
||||
rarely used for internal communications. For jumping on a call, Zulip’s native
|
||||
call integration is an easy starting point. System monitoring and software
|
||||
development processes are integrated with Zulip via the API. For example, a
|
||||
custom integration sends logging data from Semsee’s product into Zulip, with a
|
||||
channel and topic configured based on the deployed environment.
|
||||
|
||||
New employees adapt easily to Zulip’s organized conversations. By reading
|
||||
ongoing discussions, they quickly get an intuition for when to start a new
|
||||
topic, and what kinds of topic names work well. “Once they get used to Zulip,
|
||||
they are just rolling with it, and I don’t hear any complaints,” says James.
|
||||
With conversations organized by topic, “people don’t have to scroll through and
|
||||
cherry-pick out the messages they need to read,” James says.
|
||||
|
||||
Semsee invites customers to join the company Zulip chat as guests. “Our
|
||||
customers just see one channel with one or two topics, so it’s very easy for
|
||||
them,” James explains. On the flip side, when Semsee employees are invited to
|
||||
join customers’ Slack chats, they miss Zulip. “I don’t like going back to Slack
|
||||
now. It’s just not as efficient a way to organize communication,” says James. “A
|
||||
few users from an extensive Slack background have told me: ‘Zulip is just
|
||||
better.’"
|
||||
|
||||
|
||||
> I don’t like going back to Slack now. It’s just not as efficient a way to
|
||||
> organize communication.
|
||||
>
|
||||
> — James van Lommel, Director of Engineering at [Semsee](https://semsee.com/)
|
||||
|
||||
---
|
||||
|
||||
Check out our guide on [using Zulip for business](/for/business/). You can also
|
||||
learn how Zulip is being used at the [Atolio](/case-studies/atolio/) startup,
|
||||
the [iDrift AS](/case-studies/idrift/) company, the [End Point
|
||||
Dev](/case-studies/end-point/) software consultancy, and the [GUT
|
||||
contact](/case-studies/gut-contact/) support agency.
|
||||
30
templates/corporate/case-studies/tum-case-study.html
Normal file
30
templates/corporate/case-studies/tum-case-study.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: Technical University of Munich Department of Informatics | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "How do you teach computer science to 1400 freshmen?
|
||||
“Zulip is the only app that makes hundreds of conversations manageable.”" %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: Technical University of Munich <br /> Department of Informatics</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about <a href="/for/education/">Zulip for Education</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/tum-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
89
templates/corporate/case-studies/tum-case-study.md
Normal file
89
templates/corporate/case-studies/tum-case-study.md
Normal file
@@ -0,0 +1,89 @@
|
||||
## How do you teach 1400+ students?
|
||||
|
||||
The [Technical University of Munich](https://www.tum.de/en/) (TUM) is
|
||||
one of Europe’s top universities. Every year, its Department of
|
||||
Informatics ([ranked #1 in Germany][tum-ranking]) welcomes over a
|
||||
thousand freshmen to the undergraduate program.
|
||||
|
||||
Teaching introductory computer science courses to 1400-2000 students
|
||||
at a time is a massive undertaking. Just answering student questions
|
||||
easily takes 1500+ messages *per homework exercise*. Instructors have
|
||||
cycled through product after product in search of a way to manage
|
||||
communication with students, and among the 30-50 person course staff.
|
||||
|
||||
## Communication platform is key
|
||||
|
||||
[Tobias Lasser](https://ciip.in.tum.de/people/lasser.html), lecturer
|
||||
at the TUM Department of Informatics, set out to teach an introductory
|
||||
algorithms class with 1400 students in April 2020, as the COVID-19
|
||||
pandemic was sweeping across Europe. With instruction moving online,
|
||||
he knew that finding an effective communication platform was more
|
||||
important than ever.
|
||||
|
||||
“Our default teaching platform is Moodle, which is fine for
|
||||
announcements, but does not scale for discussions,” Tobias says. “Our
|
||||
university also hosts Rocket.Chat, but when some colleagues tried it
|
||||
for a large class, it was a complete mess.” Due to strict European
|
||||
regulations, cloud-only solutions like Piazza, Slack and Discord were
|
||||
non-starters for data privacy reasons. “I checked Mattermost and
|
||||
Element, but wasn’t happy with the user interface for either.” That’s
|
||||
when Tobias came across Zulip.
|
||||
|
||||
## “Better user experience than Slack”
|
||||
|
||||
Tobias evaluated Zulip by [visiting the Zulip development
|
||||
community](/development-community/) to see it in action. “It takes a bit of
|
||||
time to get used to, but Zulip has the best user experience of all the
|
||||
chat apps I’ve tried,” Tobias says. “With the discussion organized by
|
||||
topic within each channel, Zulip is the only app that makes hundreds of
|
||||
conversations manageable.”
|
||||
|
||||
Despite initially asking to use Slack, students came to love Zulip’s
|
||||
model. “Many students commented how great Zulip was on the course
|
||||
evaluation forms,” Tobias says.
|
||||
|
||||
## Word about Zulip spreads
|
||||
|
||||
Word about Tobias’s success with teaching with Zulip quickly spread
|
||||
throughout the department. One year later, the department’s Zulip
|
||||
organization is used by 4400 students and educators. “I’m working to
|
||||
establish Zulip as the new default communication platform for teaching
|
||||
in the department, for classes of all sizes”, Tobias says.
|
||||
|
||||
Other instructors have loved using Zulip as well. “I consider Zulip to
|
||||
be the best tool in terms of privacy and usability, and try to
|
||||
implement it in all courses where I collaborate,” says Johannes Stöhr,
|
||||
teaching assistant for multiple courses at the department.
|
||||
|
||||
## A welcoming open-source community
|
||||
|
||||
Robert Imschweiler, an undergraduate at the TUM, is responsible for
|
||||
maintaining the department’s Zulip server. “Our chat needs to be
|
||||
self-hosted to comply with European laws about protecting student
|
||||
data,” Robert says. “Zulip has been extremely stable and requires no
|
||||
maintenance beyond installing updates.”
|
||||
|
||||
When questions arise, Robert stops by the Zulip development community to ask for
|
||||
advice. “Right before exams, we had over 1000 students online at once, and I
|
||||
was worried that the CPU usage was high. The community investigated my
|
||||
problem immediately, and a couple of days later they [shared a patch]
|
||||
[czo-patch-thread] that resolved it.” This patch to improve performance at
|
||||
scale was released to all users as part of [Zulip 4.0][zulip-4-blog].
|
||||
|
||||
Since then, Robert has built several Zulip customizations for the
|
||||
department, and has had them merged to the upstream project. “I feel
|
||||
very welcomed as a new contributor and am glad that I’ve been able to
|
||||
contribute a few patches of my own,” Robert says.
|
||||
|
||||
---
|
||||
|
||||
Learn more about [Zulip for Education](/for/education/), and how
|
||||
Zulip is being used at the [University of California San
|
||||
Diego](/case-studies/ucsd/) and the [National University of Córdoba](/case-studies/university-of-cordoba/).
|
||||
You can also check out our guides on using Zulip for [conferences](/for/events/)
|
||||
and [research](/for/research/)!
|
||||
|
||||
|
||||
[tum-ranking]: https://www.in.tum.de/en/the-department/profile-of-the-department/facts-figures/facts-and-figures-2020/
|
||||
[czo-patch-thread]: https://chat.zulip.org/#narrow/channel/3-backend/topic/Tornado.20performance/near/1111686
|
||||
[zulip-4-blog]: https://blog.zulip.com/2021/05/13/zulip-4-0-released/
|
||||
31
templates/corporate/case-studies/ucsd-case-study.html
Normal file
31
templates/corporate/case-studies/ucsd-case-study.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: University of California San Diego | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "How do you teach graduate-level mathematics to
|
||||
students across six continents? “I chose Zulip especially for the threaded model
|
||||
and the TeX integration.”" %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: University of California San Diego</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about <a href="/for/education/">Zulip for Education</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/ucsd-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
96
templates/corporate/case-studies/ucsd-case-study.md
Normal file
96
templates/corporate/case-studies/ucsd-case-study.md
Normal file
@@ -0,0 +1,96 @@
|
||||
## Making the best of a tough year
|
||||
|
||||
[University of California San Diego
|
||||
(UCSD)](https://ucsd.edu/about/index.html) is recognized as one of the
|
||||
top universities worldwide. The UCSD math department offers
|
||||
prestigious graduate and undergraduate programs, with course topics
|
||||
ranging from foundational material to cutting-edge research.
|
||||
|
||||
In response to the COVID-19 pandemic, UCSD instruction moved online early
|
||||
in 2020. As instructors scrambled to figure out online education,
|
||||
Kiran Kedlaya, Professor of Mathematics at UCSD, gave himself a bigger
|
||||
challenge: “Seeing the unique opportunity, I decided to open my
|
||||
classes up to the world,” Kiran says.
|
||||
|
||||
|
||||
## Communication is key
|
||||
|
||||
Kiran knew that an effective chat platform would be key for
|
||||
communicating with students. He had prior experience with Slack,
|
||||
Discord and Zulip. “I chose Zulip for several reasons, especially the
|
||||
threaded model (which I find sorely lacking in other chat apps), and
|
||||
the TeX integration.”
|
||||
|
||||
From Spring 2020 through Spring 2021, the [Zulip
|
||||
Standard](/for/education/#feature-pricing) plan was free for all educators,
|
||||
as we did our part to help make the transition to online education a
|
||||
little easier. Having set up Zulip Cloud for his three graduate-level
|
||||
courses, Kiran felt confident in the communication platform, and was
|
||||
ready to make his classes open to all.
|
||||
|
||||
|
||||
## Teaching students across six continents
|
||||
|
||||
Students worldwide jumped on the opportunity to take a course with
|
||||
Kiran. “Of the 350 students in my classes, no more than 15% were local
|
||||
to UCSD,” Kiran says. A Zulip poll showed participants from as far as
|
||||
the Middle East, Southeast Asia and Oceania.
|
||||
|
||||
“Zulip became a central hub for asynchronous Q&A and posting Zoom
|
||||
links for lectures, whiteboard PDFs, and announcements,” Kiran says.
|
||||
|
||||
With students logging in at all hours of the day, Zulip’s topic model
|
||||
was key to making sure everyone could find the materials they needed
|
||||
and participate in the discussions. “Zulip’s topics, and the ability
|
||||
to change the topic of someone else's message, has made it much easier
|
||||
for me to keep things coherent,” says Kiran.
|
||||
|
||||
|
||||
## Zulip has what you need
|
||||
|
||||
Beyond topics, Zulip’s rich functionality smoothed out made many
|
||||
aspects of remote communication. Here is what Kiran has to say about
|
||||
the benefits of just a few of Zulip’s features:
|
||||
|
||||
|
||||
- **Discussing math**: “The
|
||||
[**TeX**](/help/format-your-message-using-markdown#latex)
|
||||
made it super easy to discuss material from the course using
|
||||
proper mathematical notation, and was one of the reasons I chose
|
||||
Zulip in the first place.”
|
||||
- **Quick pulse-checks**: “[**Emoji
|
||||
reactions**](/help/emoji-reactions) were a nice way
|
||||
to collect RSVPs for office hours or acknowledge typo corrections
|
||||
for my lecture notes.”
|
||||
- **Hiding answers**:
|
||||
“[**Spoilers**](/help/format-your-message-using-markdown#spoilers)
|
||||
are a great way to answer questions about homework without depriving
|
||||
students of a chance to keep thinking about the problem on their
|
||||
own.”
|
||||
- **Scheduling**: “With [**global
|
||||
times**](/help/format-your-message-using-markdown#global-times),
|
||||
I could announce office hours or outside lectures without having to
|
||||
worry about confusion for students in different time zones.”
|
||||
|
||||
|
||||
## Education beyond coursework
|
||||
|
||||
What happens once classes return to campus? “I intend to continue to
|
||||
use Zulip as the main communication platform for my in-person classes
|
||||
this coming year,” Kiran says.
|
||||
|
||||
Zulip is also helping Kiran organize events for students, and create
|
||||
communities for education and research. “I used Zulip as the
|
||||
communication hub for a 200-person undergraduate conference that was
|
||||
held virtually for the first time,” Kiran says. “I’ve also started a
|
||||
Zulip for the number theory research group at UCSD, where graduate
|
||||
students and postdocs can connect to discuss reading courses, social
|
||||
events, conferences of interest, etc.”
|
||||
|
||||
---
|
||||
|
||||
Learn more about [Zulip for Education](/for/education/), and how
|
||||
Zulip is being used at the [Technical University of Munich](/case-studies/tum/)
|
||||
and the [National University of Córdoba](/case-studies/university-of-cordoba/).
|
||||
You can also check out our guides on using Zulip for [conferences](/for/events/)
|
||||
and [research](/for/research/)!
|
||||
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: National University of Córdoba FAMAF | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip connects faculty with students at the
|
||||
National University of Córdoba, crossing the generational divide." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: National University of Córdoba</h1>
|
||||
<p>Faculty of Mathematics, Astronomy, Physics and Computing (FAMAF)</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about <a href="/for/education/">Zulip for Education</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/university-of-cordoba-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,78 @@
|
||||
Founded in 1613, the National University of Córdoba is the second largest
|
||||
university in Argentina, with tuition-free enrollment for all. The university’s
|
||||
Faculty of Mathematics, Astronomy, Physics and Computing (FAMAF) teaches classes
|
||||
to over 5000 undergraduates from all over the country.
|
||||
|
||||
“Zulip is a key piece of how we run classes in our department,” says Nicolás
|
||||
Wolovick, a professor at FAMAF and director of the computer science career
|
||||
track. “If we didn’t have Zulip, I really don’t know how we’d manage it.”
|
||||
|
||||
## Sponsored hosting for a modern team chat app
|
||||
|
||||
For a while, FAMAF used Moodle’s course management software to communicate with
|
||||
students, but “it was a pain,” Nicolás recalls. The department tried moving to
|
||||
Slack. However, without a software budget, the message history limit on Slack’s
|
||||
free plan was a major frustration.
|
||||
|
||||
In search of an alternative, a faculty member reached out to request a sponsored
|
||||
Zulip Cloud Standard plan. With the request approved the very next day, the
|
||||
department moved over to Zulip starting in Fall 2020.
|
||||
|
||||
Looking back, being pushed off Slack by its search history limit ended up being
|
||||
for the best: “I think Zulip is a great tool, much better than Slack,” says
|
||||
Miguel Pagano, professor at FAMAF.
|
||||
|
||||
> I think Zulip is a great tool, much better than Slack.
|
||||
>
|
||||
> — Miguel Pagano, professor at FAMAF of the National University of Córdoba
|
||||
|
||||
## Zulip becomes a knowledge base
|
||||
|
||||
Zulip has become part of the core flow of how faculty at FAMAF run their
|
||||
classes. Instructors create channels for the classes they teach each semester.
|
||||
For lab classes, instructors make private channels for communication with each
|
||||
project group. “I use pinned channels to focus on the two subjects I’m teaching
|
||||
right now,” Nicolás notes.
|
||||
|
||||
Discussions from prior semesters are available for easy reference, so
|
||||
instructors can simply point students to past conversations for answers to their
|
||||
questions. “Zulip acts as a knowledge database of what we did in each subject,”
|
||||
Nicolás explains. “The search is perfect.”
|
||||
|
||||
> We can find messages from five years ago — it’s very convenient.
|
||||
>
|
||||
> — Miguel Pagano, professor at FAMAF of the National University of Córdoba
|
||||
|
||||
## A cross-generational app for instructors and students
|
||||
|
||||
Many members of the faculty prefer familiar tools, and sometimes find the UI of
|
||||
apps like Discord overwhelming. So it matters that Zulip has a clean interface,
|
||||
with channels and conversations inside channels clearly presented. There are
|
||||
also some friendly touches: “I love using Markdown for message formatting, and
|
||||
that you can copy-paste formatted text, and it translates accurately,” Nicolás
|
||||
notes.
|
||||
|
||||
> The UI is spartan, simple, clear — I like that. It reminds me of what Google
|
||||
> used to be.
|
||||
>
|
||||
> — Nicolás Wolovick, professor at FAMAF of the National University of Córdoba
|
||||
|
||||
And while students hardly use email, Nicolás and other faculty appreciate being
|
||||
able to send messages to Zulip by replying to email notifications.
|
||||
|
||||
At the same time, Zulip offers fun features for the students. “We have a whole
|
||||
subculture of custom emoji,” Nicolás says. “Students love to use them to
|
||||
customize the space and express themselves.”
|
||||
|
||||
Still, the overall vibe is professional, and moderation has never been an issue.
|
||||
“I’ve never had to ban anyone or even delete a message,” Nicolás says. Students
|
||||
keep their Zulip account after graduation, which provides a way for faculty and
|
||||
alumni to stay connected.
|
||||
|
||||
---
|
||||
|
||||
Learn more about [Zulip for Education](/for/education/), and how Zulip is being
|
||||
used at the [Technical University of Munich](/case-studies/tum/) and the
|
||||
[University of California San Diego](/case-studies/ucsd/). You can also check
|
||||
out our guides on using Zulip for [conferences](/for/events/) and
|
||||
[research](/for/research/)!
|
||||
32
templates/corporate/case-studies/windborne-case-study.html
Normal file
32
templates/corporate/case-studies/windborne-case-study.html
Normal file
@@ -0,0 +1,32 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Case study: WindBorne | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip became the irreplaceable hub for
|
||||
coordinating work at WindBorne, from balloon launches around the globe to
|
||||
building state-of-the-art AI models." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page case-study-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Case study: WindBorne</h1>
|
||||
<p>Tech startup with worldwide operations</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn more about using Zulip for <a href="/for/business/">business</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/case-studies/windborne-case-study.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
136
templates/corporate/case-studies/windborne-case-study.md
Normal file
136
templates/corporate/case-studies/windborne-case-study.md
Normal file
@@ -0,0 +1,136 @@
|
||||
How can a scrappy startup help mitigate the most immediately destructive aspects
|
||||
of climate change? [WindBorne](https://windbornesystems.com/) is advancing
|
||||
humanity's ability to predict the weather — from hurricanes to heatwaves — and
|
||||
thus manage its impacts.
|
||||
|
||||
Zulip has been WindBorne's irreplaceable hub for coordinating work
|
||||
that ranges from balloon launches around the globe to developing
|
||||
state-of-the-art AI models.
|
||||
|
||||
> All our digital communication flows through Zulip… We have three deep
|
||||
> learning channels, each with twenty active topics a day. No other chat system
|
||||
> could support that.
|
||||
>
|
||||
> — John Dean, co-founder and CEO of WindBorne
|
||||
|
||||
<figure class="markdown-image-with-caption">
|
||||
<img src="/static/images/landing-page/case-studies/WindBorne-constellation.png" alt="Atlas, the largest balloon constellation in the world">
|
||||
<figcaption class="markdown-image-caption">WindBorne Atlas, the largest balloon constellation in the world</figcaption>
|
||||
</figure>
|
||||
|
||||
## “We were addicted to Slack”
|
||||
|
||||
When WindBorne co-founders started the company in 2019, Slack was the obvious
|
||||
choice for their team chat. The team had met as Stanford undergrads, launching
|
||||
high-altitude balloons with the [SSI](https://www.stanfordssi.org/) engineering
|
||||
student group. “All the WindBorne cofounders were addicted to SSI's Slack — we
|
||||
loved it,” says John Dean, WindBorne's co-founder and CEO.
|
||||
|
||||
The delight didn't last. The company's 12-person team was trying to use chat for
|
||||
serious technical discussions, and Slack's user experience didn't feel so great
|
||||
for that purpose. “With overlapping conversations, there was no way to make it
|
||||
work. Slack threads are trying to solve a real problem, but solving it in a bad
|
||||
way,” says John.
|
||||
|
||||
“Over 2019 and 2020, Slack got worse and worse,” John recalls. “I was using it
|
||||
in Firefox on Linux, and things would just hang.” When Slack had outages, the
|
||||
entire team's work would be disrupted for hours.
|
||||
|
||||
## “Oh my god, this is awesome”
|
||||
|
||||
When John discovered Zulip, its topic-based threading felt like the right
|
||||
solution to Slack's messiness. After giving the app a try [in the Zulip
|
||||
development community](https://chat.zulip.org/?show_try_zulip_modal), WindBorne
|
||||
opted to host their own Zulip instance. (Never again will they have to rely on
|
||||
an external vendor to manage their critical communication infrastructure.)
|
||||
|
||||
“After a couple of days, I thought: `Oh my god, this is awesome. How on earth
|
||||
would you *not* use Zulip?'” John says. “It was so much easier to communicate.”
|
||||
|
||||
> How on earth would you not use Zulip?
|
||||
>
|
||||
> — John Dean, co-founder and CEO of WindBorne
|
||||
|
||||
Zulip's threading model was transformative, but John also appreciated other
|
||||
touches. “[Zulip linkifiers](https://zulip.com/help/add-a-custom-linkifier) are
|
||||
amazing,” John says. In WindBorne's Zulip, “W-” followed by a balloon's ID
|
||||
number auto-links to that balloon's mission page, and “/live” goes to a live
|
||||
map of balloon locations.
|
||||
|
||||
WindBorne's Head of Global Launch Operations Nathan Kaplan experienced a similar
|
||||
revelation when he joined the company in 2023. “My previous company used Slack,
|
||||
and they required threads for everything. It was a complete mess,” Nathan says.
|
||||
“Zulip took some getting used to, but after two weeks, it was so much better
|
||||
than anything I'd used before.”
|
||||
|
||||
> I love the application, and couldn't dream of going back to anything else.
|
||||
> Slack and Discord just pale in comparison.
|
||||
>
|
||||
> — Nathan Kaplan, Head of Global Launch Operations
|
||||
|
||||
## Communication hub for coordinating dozens of contractors worldwide
|
||||
|
||||
<div class="text-image-in-row">
|
||||
<p class="text-image-in-row-text">
|
||||
Nathan travels around the world to manage WindBorne's balloon
|
||||
launch sites — he's onboarded dozens of international contractors
|
||||
who run WindBorne's launch operations.
|
||||
<br/><br/>
|
||||
Nathan designed a streamlined experience for coordinating contractors, with Zulip as the hub.
|
||||
<br/><br/>
|
||||
“80 to 90 percent of the work a contractor does happens within their launch
|
||||
support channel on Zulip,” Nathan explains. “A big “aha” moment for them is
|
||||
knowing what they need to launch based on messages in the “launch planning”
|
||||
topic from the last few days, without having to do a bunch of scrolling.”
|
||||
</p>
|
||||
<figure>
|
||||
<!-- Set custom width to reduce image height so that it doesn't overflow text. -->
|
||||
<img
|
||||
class="text-image-in-row-image windborne-alaska-image"
|
||||
src="/static/images/landing-page/case-studies/Alaska-balloon.jpg"
|
||||
alt="Balloon launch in Alaska"
|
||||
>
|
||||
<figcaption class="markdown-image-caption">Balloon launch in Alaska</figcaption>
|
||||
</figure>
|
||||
</div>
|
||||
|
||||
> Zulip organizes ideas in such a clean and simple way. You get easy
|
||||
> readability over months, not just hours like in other apps.
|
||||
>
|
||||
> — Nathan Kaplan, Head of Global Launch Operations
|
||||
|
||||
Zulip also serves as a rapid prototyping platform to try out and refine
|
||||
workflows before implementing them in WindBorne's dedicated launch management
|
||||
product. Last year, Nathan used Zulip to develop a workflow for uploading photos
|
||||
of balloon sensor bags. Only once requirements were clear did the team kick off
|
||||
a major engineering project to build uploads into the launch management app.
|
||||
|
||||
> Zulip offers us so much more than anything else really could — especially for
|
||||
> the contractor onboarding experience, and how we manage the entire team.
|
||||
>
|
||||
> — Nathan Kaplan, Head of Global Launch Operations
|
||||
|
||||
## The perfect platform for LLM bots
|
||||
|
||||
Zulip is a communal playground for WindBorne's team to try out new ideas. Using
|
||||
Zulip's [bot API](https://zulip.com/api/running-bots), they built bots that
|
||||
provide daily conversation summaries, post pull request reviews, and (more
|
||||
whimsically) generate images of landscapes with balloons.
|
||||
|
||||
Zulip has been perfect for managing context for LLM bots: “If you integrate an
|
||||
LLM bot into Slack, you can't manage its context window — off-topic messages can
|
||||
poison the context,” John explains. “With Zulip, you can always just start a new
|
||||
topic, and move messages around as needed.” John even uses a personal Zulip
|
||||
instance as a note-taking app with integrated LLMs.
|
||||
|
||||
The team can experiment freely together without disrupting anyone's work: it's
|
||||
easy to [mute](https://zulip.com/help/mute-a-topic) bot conversations you aren't
|
||||
interested in. WindBorne
|
||||
[allows](https://zulip.com/help/restrict-message-editing-and-deletion#configure-message-deletion-permissions)
|
||||
any employee to delete messages to clear out experiments that didn't work out.
|
||||
(Server administrators can review the activity log to make sure this permission
|
||||
is not abused.)
|
||||
|
||||
> Zulip allows me to build the culture I want.
|
||||
>
|
||||
> — John Dean, co-founder and CEO of WindBorne
|
||||
86
templates/corporate/communities.html
Normal file
86
templates/corporate/communities.html
Normal file
@@ -0,0 +1,86 @@
|
||||
{% extends "zerver/portico.html" %}
|
||||
{% set entrypoint = "communities" %}
|
||||
|
||||
{% set PAGE_TITLE = "Open communities directory | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Zulip communities that are open to the public, and
|
||||
have opted in to be listed." %}
|
||||
|
||||
|
||||
{% block hello_page_container %} hello-main{% endblock %}
|
||||
|
||||
{% block portico_content %}
|
||||
|
||||
{% include 'zerver/marketing_nav.html' %}
|
||||
|
||||
<div class="portico-landing integrations communities">
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content">
|
||||
|
||||
<div class="integration-main-text">
|
||||
<header>
|
||||
<h1 class="portico-page-heading">
|
||||
{% trans %}Open communities directory{% endtrans %}
|
||||
</h1>
|
||||
<p class="portico-page-subheading">
|
||||
These Zulip communities are open to the public, and have
|
||||
<a href="/help/communities-directory">opted in to be listed</a>.
|
||||
</p>
|
||||
</header>
|
||||
</div>
|
||||
|
||||
<div class="integration-categories-dropdown">
|
||||
<div class="integration-toggle-categories-dropdown">
|
||||
<h3 class="dropdown-category-label">{% trans %}Filter by category{% endtrans %}</h3>
|
||||
<i class="fa fa-angle-down" aria-hidden="true"></i>
|
||||
</div>
|
||||
<div class="dropdown-list">
|
||||
<a href="#all" class="realm-category selected" data-category="all">
|
||||
{% trans %}All{% endtrans %}
|
||||
</a>
|
||||
{% for org_type in org_types.keys() %}
|
||||
<a href="#{{ org_type }}" class="realm-category" data-category="{{ org_type }}">
|
||||
{{ org_types[org_type]["name"] }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="catalog">
|
||||
<div class="integration-categories-sidebar">
|
||||
<h3>{% trans %}Categories{% endtrans %}</h3>
|
||||
<a href="#all" data-category="all" class="realm-category selected">
|
||||
{% trans %}All{% endtrans %}
|
||||
</a>
|
||||
{% for org_type in org_types.keys() %}
|
||||
<a href="#{{ org_type }}" data-category="{{ org_type }}" class="realm-category">
|
||||
{{ org_types[org_type]["name"] }}
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="eligible_realms">
|
||||
{% for eligible_realm in eligible_realms %}
|
||||
<a class="eligible_realm" data-org-type="{{ eligible_realm.org_type_key }}" href="{{ eligible_realm.realm_url }}">
|
||||
<img class="eligible_realm_logo" src="{{ eligible_realm.logo_url }}" alt="{{ eligible_realm.name }} logo"/>
|
||||
<div class="eligible_realm_details">
|
||||
<h3 class="eligible_realm_name">{{ eligible_realm.name }}</h3>
|
||||
<h4 class="eligible_realm_description">
|
||||
{{ eligible_realm.description }}
|
||||
</h4>
|
||||
</div>
|
||||
</a>
|
||||
{% endfor %}
|
||||
<hr />
|
||||
<div class="eligible_realm_end_notice">
|
||||
<p>Learn how Zulip can be a <a href="/for/communities/">home for your community</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div> <!-- .inner-content -->
|
||||
</div> <!-- .padded-content -->
|
||||
</div> <!-- .main -->
|
||||
</div> <!-- .portico-landing -->
|
||||
|
||||
{% endblock %}
|
||||
130
templates/corporate/compare-education.html
Normal file
130
templates/corporate/compare-education.html
Normal file
@@ -0,0 +1,130 @@
|
||||
<div class="zulip-plans-comparison education-features-comparison">
|
||||
<div class="text-header">
|
||||
<div class="text-content">
|
||||
<h1 class="for-education-plans-heading">Zulip: The most complete communication hub for your class.</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- comparison-table-top is important to observe sticky table header -->
|
||||
<div class="comparison-table-top"></div>
|
||||
<table class="comparison-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="comparison-table-feature">
|
||||
<span class="label-features">Feature</span>
|
||||
</th>
|
||||
<th class="zulip-cell"><span class="label-zulip">Zulip</span></th>
|
||||
<th class="competitor-cell">Slack</th>
|
||||
<th class="competitor-cell">Discord</th>
|
||||
<th class="competitor-cell">Piazza</th>
|
||||
<th class="competitor-cell">Campus<wbr/>Wire</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Rich, modern chat</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Apps for every platform</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Self-hosting option for full control over data</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Dedicated account</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Topic-based threading</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Resolve topics/questions</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Move topics/questions</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Native LaTeX support</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Built-in spoilers</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Emoji reactions</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">@-mention groups</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature">Scales to 10,000s of users</td>
|
||||
<td class="zulip-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-positive"><i class="icon icon-check"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
<td class="competitor-cell comparison-value-negative"><i class="icon icon-x"></i></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="comparison-table-feature"># supported languages</td>
|
||||
<td class="zulip-cell comparison-value-positive number">23 <span class="bottom-border"></span></td>
|
||||
<td class="competitor-cell comparison-value-positive number">13</td>
|
||||
<td class="competitor-cell comparison-value-positive number">30</td>
|
||||
<td class="competitor-cell comparison-value-warning number one">1</td>
|
||||
<td class="competitor-cell comparison-value-warning number one">1</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
1728
templates/corporate/comparison_table_integrated.html
Normal file
1728
templates/corporate/comparison_table_integrated.html
Normal file
File diff suppressed because it is too large
Load Diff
60
templates/corporate/development-community.html
Normal file
60
templates/corporate/development-community.html
Normal file
@@ -0,0 +1,60 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Development community | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Join the Zulip development community to contribute,
|
||||
ask questions, or provide feedback to the creators of Zulip. Everyone is
|
||||
welcome!" %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page">
|
||||
<div class="hero bg-pycon">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">{% trans %}The Zulip development community{% endtrans %}</h1>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Join today! The buttons below provide customized channel subscriptions.
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="https://chat.zulip.org/join/t5crtoe62bpcxyisiyglmtvb/" class="button">
|
||||
{{ _('Join as a user') }}
|
||||
</a>
|
||||
<a href="https://chat.zulip.org/join/wnhv3jzm6afa4raenedanfno/" class="button">
|
||||
{{ _('Join as a self-hoster') }}
|
||||
</a>
|
||||
<a href="https://chat.zulip.org/join/npzwak7vpmaknrhxthna3c7p/" class="button">
|
||||
{{ _('Join as a contributor') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/development-community.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-end">
|
||||
<div class="bottom-register-buttons extra_margin_before_footer">
|
||||
<h1>
|
||||
Join today!
|
||||
</h1>
|
||||
<div class="hero-buttons center">
|
||||
<a href="https://chat.zulip.org/join/t5crtoe62bpcxyisiyglmtvb/" class="button">
|
||||
{{ _('Join as a user') }}
|
||||
</a>
|
||||
<a href="https://chat.zulip.org/join/wnhv3jzm6afa4raenedanfno/" class="button">
|
||||
{{ _('Join as a self-hoster') }}
|
||||
</a>
|
||||
<a href="https://chat.zulip.org/join/npzwak7vpmaknrhxthna3c7p/" class="button">
|
||||
{{ _('Join as a contributor') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
321
templates/corporate/development-community.md
Normal file
321
templates/corporate/development-community.md
Normal file
@@ -0,0 +1,321 @@
|
||||
The primary communication forum for the Zulip community is the Zulip
|
||||
server hosted at [chat.zulip.org](https://chat.zulip.org/):
|
||||
|
||||
- **Users** and **administrators** of Zulip organizations stop by to
|
||||
ask questions, offer feedback, and participate in product design
|
||||
discussions.
|
||||
- **Contributors to the project**, including the **core Zulip
|
||||
development team**, discuss ongoing and future projects, brainstorm
|
||||
ideas, and generally help each other out.
|
||||
|
||||
Everyone is welcome to [sign up](https://chat.zulip.org/) and
|
||||
participate — we love hearing from our users! Public channels in the
|
||||
community receive thousands of messages a week. We recommend signing
|
||||
up using the special invite links for
|
||||
[users](https://chat.zulip.org/join/t5crtoe62bpcxyisiyglmtvb/),
|
||||
[self-hosters](https://chat.zulip.org/join/wnhv3jzm6afa4raenedanfno/)
|
||||
and
|
||||
[contributors](https://chat.zulip.org/join/npzwak7vpmaknrhxthna3c7p/)
|
||||
to get a curated list of initial channel subscriptions.
|
||||
|
||||
To get help in real time, you will have the best luck finding core
|
||||
developers during daylight hours in North America (roughly between
|
||||
15:00 UTC and 1:00 UTC), but the sun never sets on the Zulip
|
||||
community. Most questions get a reply within minutes to a few hours.
|
||||
|
||||
Before posting your first message, please read the [community
|
||||
norms](#community-norms) section below in its entirety. It explains how to
|
||||
engage with the Zulip community.
|
||||
|
||||
You can also [read conversations](https://chat.zulip.org/) in the community
|
||||
without creating an account. If you are evaluating using Zulip for your
|
||||
organization, check out these [tips](https://chat.zulip.org/?show_try_zulip_modal)
|
||||
for exploring the product in action in the development community.
|
||||
|
||||
<br/>
|
||||
# Community norms
|
||||
|
||||
## How we communicate
|
||||
|
||||
- Use **informal language**; there’s no need for titles like “Sir” or “Madam”.
|
||||
- Use **[gender-neutral
|
||||
language](https://en.wikipedia.org/wiki/Gender-neutral_language)**. For
|
||||
example:
|
||||
- **Good**: Does anyone need a review on **their** PR?
|
||||
- **Not good**: Does anyone need a review on **his** PR?
|
||||
- Aim to **communicate professionally**, using full sentences with correct spelling
|
||||
and grammar.
|
||||
- **Do not post AI-generated messages** -- we want to read your own genuine
|
||||
expression of your thoughts. It's fine to use whatever tools you like for help
|
||||
with spelling, grammar, or translation.
|
||||
- Follow the community **[code of
|
||||
conduct](https://zulip.readthedocs.io/en/latest/code-of-conduct.html)**.
|
||||
|
||||
Read the [guide on how we
|
||||
communicate](https://zulip.readthedocs.io/en/latest/contributing/how-we-communicate.html)
|
||||
to learn more.
|
||||
|
||||
## How to ask for help
|
||||
|
||||
- Formulate a **clear question**, which includes an appropriate amount of context
|
||||
and a specific request for help. Link to **relevant references** (e.g., GitHub
|
||||
issues, Zulip's documentation, etc.).
|
||||
- When relevant, include the **full traceback** in a [code
|
||||
block](/help/code-blocks) (not a screenshot).
|
||||
- If working on a code contribution, **try to solve your own problem first**,
|
||||
including reading through relevant documentation and code. Identify and
|
||||
describe the precise point on which you feel stuck.
|
||||
|
||||
Moderators read every public channel, and make sure that questions are
|
||||
addressed. To avoid disrupting work in the community:
|
||||
|
||||
- **Never ask the same question in multiple places**.
|
||||
- If you are new to the community, **default to never using @-mentions**.
|
||||
Unnecessary mentions make it harder for Zulip's maintainers to see and respond
|
||||
to urgent messages. You can use Zulip's [silent
|
||||
mentions](https://zulip.com/help/mention-a-user-or-group#silently-mention-a-user)
|
||||
to refer to a user without notifying them.
|
||||
|
||||
## How to give feedback
|
||||
|
||||
If you have ideas for how to make Zulip better, we’d love to hear from you!
|
||||
Learn how to [report
|
||||
bugs](https://zulip.readthedocs.io/en/latest/contributing/reporting-bugs.html),
|
||||
[suggest features and
|
||||
improvements](https://zulip.readthedocs.io/en/latest/contributing/suggesting-features.html),
|
||||
and [share your
|
||||
experience](https://zulip.readthedocs.io/en/latest/contributing/suggesting-features.html#evaluation-and-onboarding-feedback)
|
||||
with Zulip.
|
||||
|
||||
## Where to post
|
||||
|
||||
- **Ask questions in channels**, rather than DMing core contributors. You’ll get
|
||||
answers faster since more people can help, and others will be able to benefit
|
||||
from the discussion.
|
||||
- **Start a [new topic](/help/introduction-to-topics)** unless you’re replying
|
||||
to an existing conversation.
|
||||
- If you like, **introduce yourself** in the [#new members
|
||||
channel](https://chat.zulip.org/#narrow/channel/95-new-members), using your
|
||||
name as the topic. Tells us what brings you to the community!
|
||||
- **Test messages** should only be sent to the [#test
|
||||
here](https://chat.zulip.org/#narrow/channel/7-test-here) channel, or as DMs
|
||||
to yourself.
|
||||
|
||||
The section below gives a detailed overview of the channels in the Zulip
|
||||
community — take a look there to learn more.
|
||||
|
||||
<br/>
|
||||
# Where do I send my message?
|
||||
|
||||
This section describes popular public channels on chat.zulip.org. Kick
|
||||
off the discussion by starting a [new topic](/help/introduction-to-topics)
|
||||
in the appropriate channel! Don’t stress too much about picking the
|
||||
right place if you’re not sure; anyone in the community can edit a
|
||||
topic name, and [moderators](/help/user-roles) can [move a
|
||||
topic to a different channel](/help/move-content-to-another-channel).
|
||||
|
||||
## Channels for everyone
|
||||
|
||||
- [#feedback](https://chat.zulip.org/#narrow/channel/137-feedback) is
|
||||
for posting feedback on Zulip, including feature requests, suggestions for
|
||||
improvements to the UI or existing features, or anything else! We also
|
||||
appreciate hearing about how Zulip is used in your organization.
|
||||
- [#integrations](https://chat.zulip.org/#narrow/channel/127-integrations)
|
||||
is for bug reports or questions about integrations.
|
||||
- [#issues](https://chat.zulip.org/#narrow/channel/9-issues) is for reporting
|
||||
bugs (or possible bugs) in the Zulip web app or server implementation.
|
||||
- [#mobile](https://chat.zulip.org/#narrow/channel/48-mobile),
|
||||
[#desktop](https://chat.zulip.org/#narrow/channel/16-desktop), and
|
||||
[#zulip-terminal](https://chat.zulip.org/#narrow/channel/206-zulip-terminal)
|
||||
are the best places to post bug reports or questions about Zulip's apps. Note
|
||||
that [#desktop](https://chat.zulip.org/#narrow/channel/16-desktop) should only
|
||||
be used for issues specific to the desktop app, which shares most of its UI
|
||||
and implementation with the web app.
|
||||
- Everyone is welcome to introduce themselves in [#new
|
||||
members](https://chat.zulip.org/#narrow/channel/95-new-members). Posting
|
||||
here with your name as the topic is a great option if you’re
|
||||
uncertain where to start a conversation.
|
||||
- [#test here](https://chat.zulip.org/#narrow/channel/7-test-here) is
|
||||
for sending test messages without inconveniencing other users :). We
|
||||
recommend muting this channel when not using it.
|
||||
|
||||
## Channels for Zulip users and administrators
|
||||
|
||||
- [#user questions](https://chat.zulip.org/#narrow/channel/138-user-questions) is
|
||||
for questions about how to configure your Zulip organization, and accomplish
|
||||
your goals with Zulip. You can also refer to the [Zulip help center](/help)
|
||||
for detailed documentation.
|
||||
- [#production help](https://chat.zulip.org/#narrow/channel/31-production-help) is
|
||||
for all questions related to [self-hosting
|
||||
Zulip](/self-hosting/).
|
||||
- [#zulip
|
||||
cloud](https://chat.zulip.org/#narrow/channel/387-zulip-cloud) is for
|
||||
all conversations about the [Zulip Cloud](https://zulip.com/plans/)
|
||||
service.
|
||||
|
||||
## Channels for code contributors
|
||||
|
||||
### All codebases
|
||||
|
||||
- [#git help](https://chat.zulip.org/#narrow/channel/44-git-help) is
|
||||
for help with using Git.
|
||||
- [#code review](https://chat.zulip.org/#narrow/channel/91-code-review)
|
||||
is for getting feedback on your work. We encourage all developers to
|
||||
comment on work posted here, even if you’re new to the Zulip
|
||||
project; reviewing other PRs is a great way to develop experience,
|
||||
and even just manually testing a proposed new feature and posting
|
||||
feedback is super helpful. Note that GitHub is our primary system
|
||||
for managing code reviews.
|
||||
- [#api design](https://chat.zulip.org/#narrow/channel/378-api-design)
|
||||
is a low-traffic channel for discussing and coordinating changes to
|
||||
the [Zulip API](https://zulip.com/api/rest), with all stakeholders
|
||||
present.
|
||||
- [#documentation](https://chat.zulip.org/#narrow/channel/19-documentation)
|
||||
is the right place for general conversations about work on
|
||||
documentation (including design discussions, questions, updates on a
|
||||
project, or anything else).
|
||||
|
||||
### Server and web app
|
||||
|
||||
- [#development help](https://chat.zulip.org/#narrow/channel/49-development-help)
|
||||
is for asking for help with any Zulip server/web app development work.
|
||||
- [#provision help](https://chat.zulip.org/#narrow/channel/21-provision-help)
|
||||
is for help specifically on setting up the server/web app development
|
||||
environment. [#tools](https://chat.zulip.org/#narrow/channel/18-tools)
|
||||
is other conversations about the server/web app developer tooling.
|
||||
- [#backend](https://chat.zulip.org/#narrow/channel/3-backend) and
|
||||
[#frontend](https://chat.zulip.org/#narrow/channel/6-frontend) are
|
||||
the right place for general conversations about work on the Zulip
|
||||
server and web app respectively (including design discussions,
|
||||
questions, updates on a project, or anything else).
|
||||
- [#design](https://chat.zulip.org/#narrow/channel/101-design) is the
|
||||
place to discuss the detailed UI and UX design of a change you're
|
||||
working on, meaning how it looks and how it behaves as seen by the
|
||||
user. (Technical discussions, including how the code itself is
|
||||
designed, go in one of the other channels above.)
|
||||
- [#automated
|
||||
testing](https://chat.zulip.org/#narrow/channel/43-automated-testing)
|
||||
is primarily used for automated notifications about [CI
|
||||
failures](https://zulip.readthedocs.io/en/latest/testing/continuous-integration.html),
|
||||
but is also a good place to discuss projects to improve Zulip’s
|
||||
automated testing infrastructure.
|
||||
|
||||
### Mobile app
|
||||
|
||||
- [#mobile-dev-help](https://chat.zulip.org/#narrow/channel/516-mobile-dev-help)
|
||||
is for asking for help with any development work on the Zulip mobile app.
|
||||
- [#mobile-team](https://chat.zulip.org/#narrow/channel/243-mobile-team)
|
||||
is the right place for general conversations about work on the
|
||||
mobile app (including technical design discussions, questions,
|
||||
updates on a project, or anything else).
|
||||
- [#mobile-design](https://chat.zulip.org/#narrow/channel/530-mobile-design)
|
||||
is the place to discuss the detailed UI and UX design of a change
|
||||
you're working on, meaning how it looks and how it behaves as seen
|
||||
by the user. (Technical discussions, including how the code itself
|
||||
is designed, go in one of the other channels above.)
|
||||
- [#mobile](https://chat.zulip.org/#narrow/channel/48-mobile) is
|
||||
primarily for user feedback and issue reports, not work on the code.
|
||||
|
||||
### Desktop and terminal apps
|
||||
|
||||
- [#desktop](https://chat.zulip.org/#narrow/channel/16-desktop) and
|
||||
[#zulip-terminal](https://chat.zulip.org/#narrow/channel/206-zulip-terminal)
|
||||
are for discussing work on the Zulip desktop and terminal apps
|
||||
respectively.
|
||||
|
||||
## Channels for translators
|
||||
- [#translation](https://chat.zulip.org/#narrow/channel/58-translation)
|
||||
is for discussing [Zulip’s
|
||||
translations](https://zulip.readthedocs.io/en/latest/translating/translating.html).
|
||||
- Some languages have channels named like
|
||||
[#translation/fr](https://chat.zulip.org/#narrow/channel/371-translation.2Ffr)
|
||||
and
|
||||
[#translation/zh_tw](https://chat.zulip.org/#narrow/channel/377-translation.2Fzh_tw)
|
||||
to coordinate translation work for that language.
|
||||
|
||||
## Channels for anyone spending time in the community
|
||||
- [#announce](https://chat.zulip.org/#narrow/channel/1-announce) is our
|
||||
low-traffic channel for project announcements (releases, etc.).
|
||||
- [#checkins](https://chat.zulip.org/#narrow/channel/65-checkins) is
|
||||
for progress updates on what you’re working on and its status;
|
||||
usually folks post with their name as the topic. Everyone is welcome
|
||||
to participate!
|
||||
- [#design](https://chat.zulip.org/#narrow/channel/101-design) and
|
||||
[#mobile-design](https://chat.zulip.org/#narrow/channel/530-mobile-design)
|
||||
are where we discuss UI and feature design and collect feedback on
|
||||
potential design changes. We love feedback, so take a look at the
|
||||
active discussions and don’t hesitate to speak up!
|
||||
<br><p>These "design" channels are primarily intended for discussing
|
||||
changes the community is actively working on. For starting a topic
|
||||
to propose a new design change, the best place is
|
||||
[#feedback](https://chat.zulip.org/#narrow/channel/137-feedback) or
|
||||
[#mobile](https://chat.zulip.org/#narrow/channel/48-mobile).</p>
|
||||
- [#discussions](https://chat.zulip.org/#narrow/channel/277-discussions)
|
||||
is where we do fun community conversations like “Ask Me Anything”
|
||||
Q&A sessions with project members.
|
||||
- [#documentation](https://chat.zulip.org/#narrow/channel/19-documentation)
|
||||
and
|
||||
[#api documentation](https://chat.zulip.org/#narrow/channel/412-api-documentation)
|
||||
are where we discuss improving Zulip’s user, sysadmin, API, and
|
||||
developer documentation.
|
||||
- [#general](https://chat.zulip.org/#narrow/channel/2-general) is for
|
||||
all topics of general interest.
|
||||
- [#learning](https://chat.zulip.org/#narrow/channel/92-learning) is
|
||||
for posting great learning resources one comes across.
|
||||
- [#off topic](https://chat.zulip.org/#narrow/channel/97-off-topic) is
|
||||
is for occasional conversations not related to Zulip, usually things
|
||||
of general interest to open-source communities.
|
||||
|
||||
You can always find the description for the channel you’re reading at
|
||||
the top of the Zulip app.
|
||||
|
||||
<br/>
|
||||
# Anything else to keep in mind?
|
||||
|
||||
## Don’t try to read *everything*
|
||||
|
||||
Keeping up with **everything** happening in the Zulip project is both
|
||||
difficult and rarely a useful goal. To make the best use of your time,
|
||||
we highly recommend that you unsubscribe from channels that you aren’t
|
||||
interested in, mute channels that are only of occasional interest, and
|
||||
make use of [Zulip’s skimming features](/help/reading-strategies),
|
||||
like Recent conversations, to spend your time on topics that interest
|
||||
you.
|
||||
|
||||
## Searching for past conversations
|
||||
|
||||
To look for previous threads about something, we recommend using the
|
||||
following [search filters](/help/search-for-messages#search-filters):
|
||||
`streams:public <your keyword(s)>`.
|
||||
|
||||
This will search the full history of all public channels for `<your
|
||||
keyword(s)>`, including messages sent before you joined and messages
|
||||
on public channels you’re not subscribed to.
|
||||
|
||||
## Linking to GitHub issues and pull requests
|
||||
|
||||
We've set up [custom linkifiers](/help/add-a-custom-linkifier)
|
||||
so that it's easy to link to issues and pull requests in Zulip
|
||||
project repositories when composing a message or starting a
|
||||
[new topic](/help/introduction-to-topics). Here are examples for linking
|
||||
to issue 1234 in the main Zulip project repositories:
|
||||
|
||||
- [Server and web app][server-web-repository]: `#1234`
|
||||
- [Flutter mobile client][flutter-repository]: `#F1234`
|
||||
- [Terminal client][terminal-repository]: `#T1234`
|
||||
- [Desktop client][desktop-repository]: `#D1234`
|
||||
|
||||
## New features are tested here
|
||||
|
||||
We [continuously test out new features or ideas][release-lifecycle] on
|
||||
chat.zulip.org before rolling them out to Zulip Cloud or including
|
||||
them in a Zulip Server release (or deciding not to!). Please report in
|
||||
[#issues](https://chat.zulip.org/#narrow/channel/9-issues) anything you
|
||||
notice that seems broken! It’s likely you’ve found a bug in an upcoming
|
||||
feature.
|
||||
|
||||
[release-lifecycle]: https://zulip.readthedocs.io/en/latest/overview/release-lifecycle.html
|
||||
[server-web-repository]: https://github.com/zulip/zulip
|
||||
[flutter-repository]: https://github.com/zulip/zulip-flutter
|
||||
[terminal-repository]: https://github.com/zulip/zulip-terminal
|
||||
[desktop-repository]: https://github.com/zulip/zulip-desktop
|
||||
31
templates/corporate/features.html
Normal file
31
templates/corporate/features.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
{% set entrypoint = "plans-page" %}
|
||||
|
||||
{% set PAGE_TITLE = "Features | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "From highly configurable notifications, to powerful
|
||||
formatting and flexible administration, Zulip has you covered." %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% include 'zerver/marketing_nav.html' %}
|
||||
|
||||
<div class="portico-pricing features-page showing-cloud">
|
||||
<div class="body-bg">
|
||||
<div class="body-bg__layer"></div>
|
||||
</div>
|
||||
|
||||
<h1>Organized team chat solution</h1>
|
||||
<div class="h1-subheader">
|
||||
From small teams to organizations with thousands of users, Zulip has you
|
||||
covered. See <a href="/plans/">plans and pricing</a>.
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
{% include "corporate/comparison_table_integrated.html" %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include 'zerver/footer.html' %}
|
||||
{% endblock %}
|
||||
600
templates/corporate/for/business.html
Normal file
600
templates/corporate/for/business.html
Normal file
@@ -0,0 +1,600 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Zulip for business" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Zulip offers efficient communication for your
|
||||
business. Learn how organized team chat will make your team more productive." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing plans why-page solutions-page for-companies">
|
||||
<div class="hero bg-companies">
|
||||
<div class="bg-dimmer"></div>
|
||||
<h1 class="center">Efficient communication for your business.</h1>
|
||||
<p>Learn how organized team chat will <br/>make your team more productive.</p>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/request-demo/" class="button">
|
||||
{{ _('Get a demo') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-intro">
|
||||
<h1 class="center">Communication efficiency represents <br /> a massive opportunity.</h1>
|
||||
<p>
|
||||
Communication consumes a <a href="https://blog.rescuetime.com/slack-and-email-cost/">huge fraction of time</a> for managers and knowledge workers, and the workplace chat revolution has done nothing to reduce communication load.
|
||||
</p>
|
||||
<div class="intro_quote">
|
||||
<blockquote>
|
||||
Ironically, for some, email has now become the place for well-thought-out communications while workplace [chat] software has been inundated by thoughtless meme and emoji sharing.
|
||||
<div class="author">
|
||||
— “<a href="https://www.vox.com/recode/2019/5/1/18511575/productivity-slack-google-microsoft-facebook">The productivity pit: how Slack is ruining work</a>” by <a href="https://www.vox.com/recode"><em>Recode</em> (Vox)</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
<p>Worse, chat communication on Slack or Microsoft Teams is disruptive, chaotic, and ephemeral.</p>
|
||||
<div class="intro_quote">
|
||||
<blockquote>
|
||||
The [chat] software goes from helping you work to making it impossible to get work done.
|
||||
<div class="author">
|
||||
— “<a href="https://www.vox.com/recode/2019/5/1/18511575/productivity-slack-google-microsoft-facebook">The productivity pit: how Slack is ruining work</a>” by <a href="https://www.vox.com/recode"><em>Recode</em> (Vox)</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
<p>Zulip’s unique topic-based threading combines the best of email and chat to finally make efficient communication possible.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Use topics to organize the discussion
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Like email threads, <a href="/help/introduction-to-topics">Zulip topics</a> create a separate space for each discussion, so different conversations will never get in each other’s way.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Save time by reading the topics you care
|
||||
about, and skimming or skipping the rest.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
See each message in context — no more scrolling up and down through dozens of messages to track down the topic of conversation.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Important messages won’t be missed, no matter what else is happening, and whether the thread is old or new.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
In fact now it seems strange to me to just fire off messages in Slack with no subject – that's chaos, madness. The genius of subject lines is that you can quickly and easily catch up on the messages you missed in your off-hours... This feature alone saves me hours a week.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.theregister.com/2021/07/28/zulip_open_source_chat_collaboration_software/">Zulip review in <em>The Register</em></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/organized-conversations.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/software-engineer.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Focus work without disruptions
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Maintain focus, pay attention in meetings,
|
||||
or work from another time zone. You can
|
||||
always reply in context even if you've
|
||||
been away from the conversation for hours
|
||||
or days.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Busy leaders and experts can participate on their
|
||||
own time, without incessant @-mentions
|
||||
clamoring for their attention.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Let others know whether you're around with <a
|
||||
href="/help/status-and-availability#statuses">emoji
|
||||
statuses</a> and <a href="/help/status-and-availability#availability">availability</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Zulip’s threading model makes it so much easier to
|
||||
manage my team. As a leader, in just a few minutes I can
|
||||
get an overview over what's going on and see where my
|
||||
attention is needed.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Gaute Lund, co-founder and owner of iDrift AS
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/idrift/"
|
||||
target="_blank" rel="noopener noreferrer" >Learn more about how the iDrift AS company uses Zulip
|
||||
↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/software-engineer.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Chat as a knowledge repository
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With conversations organized by topic, you
|
||||
can review old discussions to
|
||||
understand past work, explanations, and decisions.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/link-to-a-message-or-conversation#link-to-zulip-from-anywhere">Link
|
||||
to a Zulip conversation</a> from emails,
|
||||
docs, issue trackers, code comments, or anywhere else.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Topics make it easy to find the right conversation with Zulip's <a href="/help/search-for-messages">powerful full-text search</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Topic auto-complete lets you know when your idea or question has been discussed in the past.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Keep discussions organized by <a href="/help/rename-a-topic">moving</a> or <a href="/help/move-content-to-another-topic">splitting</a> topics when conversations digress.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Coupled with a culture of using Zulip in an organized
|
||||
way, it’s difficult to overstate the impact it has on
|
||||
knowledge management... It is the essence of good UX
|
||||
design.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Max McCrea, co-founder of Monadical
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="https://monadical.com/posts/how-to-make-remote-work-part-two-zulip.html"
|
||||
target="_blank" rel="noopener noreferrer">Learn more on the Monadical blog
|
||||
↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/knowledge-repository.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/integrations_with_border.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Effective workflows with integrations
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Native integrations for GitHub, Jira,
|
||||
PagerDuty, Sentry
|
||||
and <a href="/integrations/">hundreds of
|
||||
other tools</a> can initiate new topics,
|
||||
creating lightweight discussion spaces for
|
||||
each issue.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Bots can also use a dedicated topic to avoid
|
||||
crowding out conversations.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Use topics to manage support workflows, answer questions, and collaborate to investigate issues. <a href="/help/resolve-a-topic">Mark the topic ✓ resolved</a> when done!
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/add-a-custom-linkifier">Customize
|
||||
Zulip’s markup with linkifiers</a>, so that
|
||||
“JIRA-1234” and “ZD-1234” automatically
|
||||
link to issues or tickets in the tools you use.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Connect to thousands of other products
|
||||
using <a href="https://zapier.com/apps/zulip/integrations">Zapier</a>.
|
||||
Integrations written for Slack can post
|
||||
into Zulip via
|
||||
the <a href="https://zulip.com/integrations/slack_incoming">Slack
|
||||
compatible webhook</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Build your own integrations with Zulip’s
|
||||
easy-to-use <a href="/api/">RESTful
|
||||
API</a>, <a href="/api/installation-instructions">client
|
||||
bindings</a>, <a href="https://zulip.readthedocs.io/en/latest/webhooks/incoming-webhooks-overview.html">incoming
|
||||
webhooks</a>, <a href="/help/outgoing-webhooks">outgoing
|
||||
webhooks</a>
|
||||
and <a href="/help/running-bots">interactive
|
||||
bot framework</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/integrations_with_border.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Powerful formatting
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/code-blocks">Zulip code blocks</a>
|
||||
come with syntax highlighting for over 250 languages, and integrated <a href="/help/code-blocks#code-playgrounds">code playgrounds.</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content"><a href="/help/format-your-message-using-markdown#latex">Type LaTeX</a> directly into your Zulip message, and see it beautifully rendered.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Enjoy inline image, video and website previews.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
If you made a mistake, no worries! You
|
||||
can <a href="/help/edit-a-message">edit your
|
||||
message</a>, or move it to a
|
||||
different <a href="/help/move-content-to-another-topic">topic</a>
|
||||
or <a href="/help/move-content-to-another-channel">channel</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Zulip’s unique threading saves me well over an hour a day in working with our distributed team of engineers and PMs across 7+ time zones. We tried Slack, Mattermost, and other team chat products that claim to support threading, and nothing handles synchronous and asynchronous communication so intuitively.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Jacinda Shelly, CTO, <a href="https://www.doctorondemand.com/">Doctor on Demand</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/message-formatting-top.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/message-formatting-bottom.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Interactive messaging
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Start a <a href="/help/start-a-call">video
|
||||
call</a> with the click of a button, or
|
||||
make plans for later without worrying
|
||||
about time zones
|
||||
using <a href="/help/format-your-message-using-markdown#global-times">global times</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Use <a href="/help/emoji-reactions">emoji
|
||||
reactions</a> for lightweight
|
||||
interactions. Have fun
|
||||
with <a href="/help/custom-emoji">custom
|
||||
emoji</a> and gather feedback
|
||||
with <a href="/help/create-a-poll">polls</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Share files or images with <a href="/help/share-and-upload-files">drag-and-drop uploads</a>.</div></li>
|
||||
<li><div class="list-content">Enjoy animated GIFs with Zulip's <a href="/help/animated-gifs">native integration</a>.</div></li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
The software must be as simple as possible. That’s why
|
||||
we love Zulip.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Erik Dittert, Head of IT at GUT contact
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/gut-contact/"
|
||||
target="_blank" rel="noopener noreferrer" >Learn more about how GUT contact uses Zulip
|
||||
↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/message-formatting-bottom.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Flexible administration and permissions
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Restrict sign-up by email domain, use a
|
||||
single sign-on solution, or send
|
||||
invitations by
|
||||
email. <a href="https://zulip.readthedocs.io/en/latest/production/authentication-methods.html">Supported
|
||||
authentication providers</a> include LDAP,
|
||||
SAML, OIDC, Google, GitHub, GitLab, Apple,
|
||||
and more.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Automatically subscribe users to channels <a href="/help/set-default-channels-for-new-users">when they join</a>, subscribe a <a href="/help/user-groups">group of users</a>, or copy membership from another channel. Add users to the right channels for their team and role with <a href="/help/invite-new-users#create-a-reusable-invitation-link">custom invitation links</a>.</div></li>
|
||||
<li>
|
||||
<div class="list-content">Manage your organization with
|
||||
<a href="/help/manage-permissions">fine-grained
|
||||
permission settings</a> you can assign
|
||||
to <a href="/help/user-roles">user
|
||||
roles</a>, <a href="/help/user-groups">user
|
||||
groups</a>,
|
||||
and <a href="/help/introduction-to-users">individual
|
||||
users</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Customize <a href="/help/channel-permissions">viewing</a>
|
||||
and <a href="/help/channel-posting-policy">posting</a>
|
||||
permissions for channels
|
||||
and <a href="/help/restrict-direct-messages">direct
|
||||
messages</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Add partners, vendors and temporary contractors as <a href="/help/guest-users">guest users</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Use Zulip as your employee directory. Sync names, <a href="/help/user-roles">roles</a>, avatars, and <a href="/help/custom-profile-fields">custom profile fields</a> from LDAP or SAML.</div></li>
|
||||
<li>
|
||||
<div class="list-content">Manage compliance with flexible <a
|
||||
href="/help/message-retention-policy">message retention
|
||||
policies</a>
|
||||
and <a href="/help/export-your-organization#compliance-export">custom
|
||||
data exports</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img class="mirror-image" alt="" src="{{ static('images/landing-page/education/privacy.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Enterprise grade security, reliability and control
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip Cloud is built with <a href="/policies/privacy">privacy</a> and <a href="/security/">security</a> in mind, and is used by some of the most security-conscious organizations in the world.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Zulip is <a href="https://github.com/zulip">100% open-source software</a>, with no "open core" catch. We work hard to make it <a href="https://zulip.readthedocs.io/en/latest/production/install.html">easy to set up</a>, <a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups">back up</a>, and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade.html">maintain</a> a self-hosted Zulip installation, where you have full control of your data.</div></li>
|
||||
<li><div class="list-content">Move your data with our high quality <a href="/help/export-your-organization">export</a> and <a href="https://zulip.readthedocs.io/en/latest/production/export-and-import.html">import</a> tools; you are never locked into a proprietary tool.</div></li>
|
||||
<li><div class="list-content">Zulip is built for scale and works reliably for organizations with thousands of users online at once with <a href="https://zulip.readthedocs.io/en/stable/production/requirements.html#scalability">modest hardware</a>.</div></li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip has by far the <a href="/team/">most active open-source
|
||||
development community</a> of any team chat
|
||||
software. The paid team provides
|
||||
leadership, expertise and support for the
|
||||
project in addition to operating the Zulip
|
||||
Cloud service.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip is sustainably funded and designed
|
||||
for maintainability to ensure that we can
|
||||
serve our customers for years to come.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Customize Zulip with your organization’s branding.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img class="mirror-image" alt="" src="{{ static('images/landing-page/education/privacy.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
When and how you want it
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With <a href="/apps/">apps for every
|
||||
platform</a>, you can check Zulip at your computer or on your
|
||||
phone. Zulip works great in a browser, so no download is
|
||||
required.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Zulip alerts you about timely messages with <a href="/help/channel-notifications">fully customizable</a> mobile, email and desktop notifications.</div></li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Mention <a href="/help/mention-a-user-or-group">users</a>, <a href="/help/user-groups">groups
|
||||
of users</a>
|
||||
or <a href="/help/dm-mention-alert-notifications#wildcard-mentions">everyone</a>
|
||||
when you need their attention.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Use Zulip in your language of choice, with translations into <a href="https://hosted.weblate.org/projects/zulip/">23 languages</a>.</div></li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
I love the application, and couldn't dream of going back
|
||||
to anything else. Slack and Discord just pale in
|
||||
comparison.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Nathan Kaplan, Head of Global Launch Operations
|
||||
at WindBorne
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/windborne/"
|
||||
target="_blank" rel="noopener noreferrer">Learn more about how WindBorne uses Zulip
|
||||
↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img class="mirror-image" alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-end">
|
||||
<div class="description">
|
||||
<h1>
|
||||
Make the move today
|
||||
</h1>
|
||||
<p>Getting started or moving from another platform is easy! Import your existing organization from <a href="/help/import-from-slack">Slack</a>, <a href="/help/import-from-mattermost">Mattermost</a>, or <a href="/help/import-from-rocketchat">Rocket.Chat</a>.</p>
|
||||
|
||||
<p>To get more insight into how Zulip can help your organization, read how the <a href="/case-studies/idrift/">iDrift AS</a> company, the <a href="/case-studies/gut-contact/">GUT contact</a> support agency, the <a href="/case-studies/end-point/">End Point Dev</a> software consultancy, and the startups <a href="/case-studies/semsee/">Semsee</a> and <a href="/case-studies/atolio/">Atolio</a> are using Zulip.</p>
|
||||
|
||||
<p>If you have any questions, please contact us at <a href="mailto:sales@zulip.com">sales@zulip.com</a>. You can also drop by our <a href="/development-community/">friendly development community at chat.zulip.org</a> to ask for help or suggest improvements!</p>
|
||||
|
||||
<div class="intro_quote">
|
||||
<blockquote>
|
||||
Zulip is everything Slack is, but it's smarter and more powerful.
|
||||
<div class="author">
|
||||
— <a href="https://www.theregister.com/2021/07/28/zulip_open_source_chat_collaboration_software/">Zulip review in <em>The Register</em></a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portico-pricing showing-cloud">
|
||||
{% include "corporate/pricing_model.html" %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
76
templates/corporate/for/communities.html
Normal file
76
templates/corporate/for/communities.html
Normal file
@@ -0,0 +1,76 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Zulip for communities" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Zulip is designed with communities in mind, including
|
||||
open-source projects, research collaborations, and volunteer organizations.
|
||||
Reach out for a sponsorship!" %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<h1 class="center">Zulip for communities</h1>
|
||||
<p>
|
||||
Volunteer organizations • Professional communities
|
||||
• Local groups • Support groups
|
||||
• Creator communities • Hobby groups
|
||||
• Alumni communities • Friends and family
|
||||
<br />
|
||||
</p>
|
||||
<div class="hero-text">
|
||||
Learn how the <a href="/case-studies/recurse-center/">Recurse
|
||||
Center</a>, <a href="/case-studies/rust/">Rust language</a>,
|
||||
<a href="/case-studies/asciidoctor/">Asciidoctor</a>, and <a
|
||||
href="/case-studies/lean/">Lean math </a>
|
||||
communities are using Zulip.
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/for/communities.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom-register-buttons extra_margin_before_footer">
|
||||
<div class="bottom-text-large">
|
||||
<p>
|
||||
See Zulip in action in the <a
|
||||
href="https://chat.zulip.org/?show_try_zulip_modal">Zulip
|
||||
development community</a>, or in other open communities that
|
||||
have <a href="/help/communities-directory">opted in</a> to be
|
||||
listed in our
|
||||
<a href="/communities/">directory</a>. Please contact <a
|
||||
href="mailto:sales@zulip.com">sales@zulip.com</a> with any
|
||||
questions.
|
||||
</p>
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
256
templates/corporate/for/communities.md
Normal file
256
templates/corporate/for/communities.md
Normal file
@@ -0,0 +1,256 @@
|
||||
Zulip connects communities of all kinds by making it easy to chat real-time or
|
||||
async. Why are communities choosing Zulip over Discord, WhatsApp, Slack,
|
||||
Facebook, and other apps you might consider? Zulip provides:
|
||||
|
||||
- A platform that helps [community members to
|
||||
connect](#encourage-all-community-members-to-connect-real-time-or-async) and
|
||||
[communities to grow](#grow-your-community).
|
||||
- A comprehensive [moderation
|
||||
toolkit](#a-moderation-toolkit-that-offers-everything-you-need).
|
||||
- Control over [how to sign up](#as-public-as-you-want-it-to-be), and a [public
|
||||
access option](#as-public-as-you-want-it-to-be).
|
||||
- [An open-source platform](#open-source-platform-where-your-data-is-yours),
|
||||
where your data is yours.
|
||||
- [A free version, discounted pricing, and full
|
||||
sponsorships](#free-version-discounted-pricing-and-full-sponsorships-available).
|
||||
|
||||
> The core of the Recurse Center is the community, and the core of our online
|
||||
> community is Zulip… Switching to Zulip has turned out to be one of the best
|
||||
> decisions we’ve made, and it’s impossible to imagine RC today without it. No
|
||||
> other tool has a user experience that scales to a community of our size.
|
||||
>
|
||||
> — Nick Bergson-Shilcock, founder and CEO, [Recurse
|
||||
> Center](https://www.recurse.com/); [learn how the Recurse Center uses
|
||||
> Zulip](/case-studies/recurse-center/)
|
||||
|
||||
If you're considering Zulip for [an open-source project](/for/open-source/) or
|
||||
[research collaboration](/for/research), check out our dedicated guides.
|
||||
|
||||
## Encourage all community members to connect, real-time or async
|
||||
|
||||
When people are online at the same time, a lightweight real-time chat experience
|
||||
encourages active participation, and makes interactions feel more personal.
|
||||
|
||||

|
||||
|
||||
But community participants are often online only for a short while each day, or
|
||||
they drop by every week or two to check on what's happening. A forum-style
|
||||
experience makes it easier for them to participate async.
|
||||
|
||||
<div class="text-image-in-row">
|
||||
<p class="text-image-in-row-text">
|
||||
With conversations organized by topic, Zulip combines the best of both worlds.
|
||||
You get seamless real-time communication, with a chronological feed of messages
|
||||
in each conversation, typing notifications, presence indicators, status emoji
|
||||
— everything you might expect from a modern chat experience.
|
||||
<br/><br/>
|
||||
At the same time, community members can read one conversation at a time, so
|
||||
it's easy to circle back to a topic hours later, the next day, or next week.
|
||||
</p>
|
||||
<img class="text-image-in-row-image" src="/static/images/landing-page/research/streams_and_topics_day.png" alt="Illustration of channels and topics list in Zulip">
|
||||
</div>
|
||||
|
||||
> When we made the switch to [@zulip](https://twitter.com/zulip) a few months
|
||||
> ago for chat, never in my wildest dreams did I imagine it was going to become
|
||||
> the beating heart of the community, and so quickly. It's a game changer.
|
||||
> 🧑💻🗨️👩💻
|
||||
|
||||
> — Dan Allen (@mojavelinux), [June 29,
|
||||
2021](https://twitter.com/mojavelinux/status/1409702273400201217)
|
||||
|
||||
## A moderation toolkit that offers everything you need
|
||||
|
||||
Zulip's [moderation toolkit](/help/moderating-open-organizations) lets you:
|
||||
|
||||
- Skim the [combined message feed](/help/combined-feed) or [browse
|
||||
conversations](/help/recent-conversations) to find where moderator attention
|
||||
is needed.
|
||||
- Keep discussions organized by [moving](/help/move-content-to-another-channel)
|
||||
conversations, or [splitting](/help/move-content-to-another-topic) them when
|
||||
they digress.
|
||||
- Address bad behavior, for example by
|
||||
[banning](/help/deactivate-or-reactivate-a-user) the offender and
|
||||
[deleting](/help/delete-a-message) their messages.
|
||||
- Fight spam in an open community, for example by [prohibiting disposable email
|
||||
addresses](/help/restrict-account-creation#dont-allow-disposable-domains).
|
||||
- [Restrict permissions](/help/restrict-permissions-of-new-members) for new
|
||||
users.
|
||||
|
||||
Community members can [mute](/help/mute-a-user) anyone who's bothering them.
|
||||
|
||||
### Delegate moderation responsibilities
|
||||
|
||||
Permissions in Zulip can be granted to any combination of
|
||||
[roles](/help/user-roles), [groups](/help/user-groups), and individual
|
||||
[users](/help/introduction-to-users), so trusted community members can help
|
||||
moderate. In larger communities, different people can
|
||||
[administer](/help/configure-who-can-administer-a-channel) different channels.
|
||||
|
||||
## Grow your community
|
||||
|
||||
### Lots of activity, but no chaos
|
||||
|
||||
On Zulip, dozens of discussions can happen in parallel,
|
||||
without getting in each other's way: Zulip's
|
||||
[channels](/help/introduction-to-channels) and
|
||||
[topics](/help/introduction-to-topics) create dedicated spaces for each
|
||||
conversation.
|
||||
|
||||
Participants can ask a question or kick off a new discussion without having to worry
|
||||
about interrupting.
|
||||
|
||||
> Zulip helped the FHIR community grow from a tiny group of dreamers to 500
|
||||
> active users sending 6000 messages per month, all driving the creation of
|
||||
> better healthcare standards. Zulip’s topic-based threading helps us manage
|
||||
> simultaneous discussions with clarity, ensuring the right people can pay
|
||||
> attention to the right messages. This makes our large-group discussion far
|
||||
> more manageable than what we’ve experienced with Skype and Slack.
|
||||
|
||||
> — Grahame Grieve, founder, FHIR health care standards body
|
||||
|
||||
### Occasional participants welcome
|
||||
|
||||
Community members often have just a bit of time to participate, and folks
|
||||
with the deepest expertise might also be the most busy. To stay connected with your
|
||||
group, they need to quickly discover conversations that are interesting to them
|
||||
when they drop by.
|
||||
|
||||
With traditional chat tools like Discord or WhatsApp, occasional participants
|
||||
usually skim just the last few messages. If those messages don't spark interest,
|
||||
they'll bounce for the day, and eventually stop coming by altogether.
|
||||
|
||||
Zulip's list of [recent conversations](/help/recent-conversations) offers a
|
||||
quick overview of what's been happening in your community. It's easy to scan the
|
||||
list of topics to find which ones you want to dive into.
|
||||
|
||||
> I had never engaged with the Changelog podcast community in Slack because I
|
||||
> always got too overwhelmed with the linear flow of conversations. Topic based
|
||||
> systems are such a fresh breath of air.
|
||||
|
||||
> — [Siddhartha Golu](https://www.siddharthagolu.com/),
|
||||
> [Changelog](https://changelog.com/podcast) community member
|
||||
|
||||
### Many ways to participate
|
||||
|
||||
You can use Zulip from the browser, a [desktop app](/apps), and Android and iOS
|
||||
mobile devices. If you prefer a [Terminal
|
||||
app](https://github.com/zulip/zulip-terminal#readme) or just want to use it
|
||||
[from your email](/help/using-zulip-via-email), you can do that too.
|
||||
|
||||
Zulip's apps offer lots of ways to customize your experience, including [dark
|
||||
and light themes](/help/dark-theme), flexible [font size](/help/font-size) and
|
||||
[line spacing](/help/line-spacing), configurable [notification
|
||||
options](/help/channel-notifications), and much more. There are convenient
|
||||
[keyboard shortcuts](/help/keyboard-shortcuts) for all the common actions.
|
||||
|
||||
Zulip's UI is translated into over two dozen [languages](/help/change-your-language).
|
||||
|
||||
## As public as you want it to be
|
||||
|
||||
Your community can require an invitation to join, or you can [allow anyone to
|
||||
create an
|
||||
account](/help/restrict-account-creation#set-whether-invitations-are-required-to-join).
|
||||
You can use:
|
||||
|
||||
- [Private channels](/help/channel-permissions#private-channels) for
|
||||
conversations only some community members should have access to (e.g.,
|
||||
discussions among organizers).
|
||||
- [Public channels](/help/channel-permissions#public-channels) for
|
||||
conversations all community members can see.
|
||||
- [Web-public channels](/help/channel-permissions#web-public-channels) for
|
||||
discussions anyone on the internet should be able to read without logging in.
|
||||
Posting always requires log in.
|
||||
|
||||
## Open-source platform, where your data is yours
|
||||
|
||||
Zulip is [100% open-source software](https://github.com/zulip), so you always
|
||||
know what you're running. There are no ads, and we [don't sell your
|
||||
data](https://zulip.com/policies/privacy#how-we-share-your-personal-data), or
|
||||
[feed it to AI
|
||||
models](https://blog.zulip.com/2024/05/23/self-hosting-keeps-your-private-data-out-of-ai-models/).
|
||||
|
||||
If you're looking for a simple, reliable SaaS solution, it only takes
|
||||
a minute to [sign up for Zulip Cloud](https://zulip.com/new/). It's
|
||||
professionally operated and is always up to date with the latest
|
||||
features.
|
||||
|
||||
For full control over your data, follow our simple [installation
|
||||
instructions](https://zulip.readthedocs.io/en/stable/production/install.html) to
|
||||
host Zulip yourself. If you like, you can develop [custom
|
||||
integrations](https://zulip.readthedocs.io/en/latest/webhooks/incoming-webhooks-overview.html)
|
||||
and [features](https://zulip.readthedocs.io/en/stable/production/modify.html). If
|
||||
your needs change, you can always move [from self-hosting to Zulip
|
||||
Cloud](/help/move-to-zulip-cloud) or [the other
|
||||
way](https://zulip.readthedocs.io/en/stable/production/export-and-import.html#import-into-a-new-zulip-server).
|
||||
|
||||
> We just moved the Lichess team (~100 persons) to <a
|
||||
> href="https://twitter.com/zulip">@zulip</a>, and I'm loving it. The topics
|
||||
> in particular make it vastly superior to slack & discord, when it comes to
|
||||
> dealing with many conversations. Zulip is also open-source!
|
||||
|
||||
> — <a href="https://twitter.com/ornicar">Thibault D (@ornicar)</a>
|
||||
|
||||
## Free version, discounted pricing, and full sponsorships available
|
||||
|
||||
We sponsor over 1,500 organizations, and most non-business uses of Zulip are
|
||||
eligible for discounted pricing or full sponsorship.
|
||||
|
||||
- **Zulip Cloud:** Many communities that are working towards the public good are
|
||||
eligible for a fully sponsored [Zulip Cloud Standard plan](/plans/#cloud).
|
||||
Other community groups pay a highly discounted rate, or use [Zulip Cloud
|
||||
Free](/plans/#cloud). [Learn
|
||||
more.](/help/zulip-cloud-billing#free-and-discounted-zulip-cloud-standard)
|
||||
|
||||
- **Self-hosting**: Communities and personal organizations (clubs,
|
||||
groups of friends, volunteer groups, etc.) are eligible for our
|
||||
[Community plan](/help/self-hosted-billing#free-community-plan) for
|
||||
self-hosted organizations.
|
||||
|
||||
## Other apps you might consider
|
||||
|
||||
We’ve talked to hundreds of people about their experiences with
|
||||
community chat. Here are some reasons why folks choose Zulip over
|
||||
other apps you might consider for hosting your community.
|
||||
|
||||
> Zulip makes all my Slack and Discord communities feel tedious by comparison.
|
||||
>
|
||||
> — AJ Kerrigan, [Changelog](https://changelog.com/podcast) community member
|
||||
|
||||
### Group chat apps (WhatsApp, Telegram, Signal, Messenger, etc.)
|
||||
|
||||
Group chat apps can be convenient for small or low-activity groups,
|
||||
but managing an active community quickly becomes unwieldy. Having more
|
||||
than one conversation at a time in a single group chat feels chaotic,
|
||||
and membership management is a big pain if you try to solve that by
|
||||
using several group chats.
|
||||
|
||||
### Discord
|
||||
|
||||
In Discord, only the latest messages are easy to read and reply
|
||||
to. Many less frequent participants will miss much of what's
|
||||
happening in an active community.
|
||||
|
||||
You're also subjecting community members to intrusive in-app
|
||||
advertising, even if they purchase Discord's paid plans.
|
||||
|
||||
### Slack
|
||||
|
||||
Like Discord, Slack doesn't work well for less frequent participants in an
|
||||
active community. Additionally, on Slack's free plan, messages are hidden after
|
||||
90 days, and are permanently deleted after a year. Slack's paid plans are
|
||||
generally unaffordable for community use.
|
||||
|
||||
### Facebook
|
||||
|
||||
On Facebook, your relationship with your community is mediated by
|
||||
algorithms: even replies to a user's own post are by default resorted
|
||||
and partially hidden from them. From Meta's perspective, advertisers
|
||||
are the customers, and your attention is the product being sold.
|
||||
|
||||
> I highly recommend Zulip to other communities… Slack is a no-go for many due
|
||||
> to not being FLOSS, and I’m concerned about vendor lock-in if they were to
|
||||
> stop being so generous. Slack’s threading model is much worse than Zulip’s
|
||||
> IMO. The channels/topics flow is an incredibly intuitive way to keep track of
|
||||
> everything that is going on.
|
||||
>
|
||||
> — RJ Ryan, Mixxx Developer
|
||||
405
templates/corporate/for/education.html
Normal file
405
templates/corporate/for/education.html
Normal file
@@ -0,0 +1,405 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Zulip for education" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Make Zulip the communication hub for your class.
|
||||
Online, in-person, and anything in between. Free for most classes!" %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Teach a course with Zulip.</h1>
|
||||
<p>Online, in-person, and anything in between. <br/><a href="#feature-pricing">Free</a> for most classes!</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn how <a href="/case-studies/tum/">Technical University of Munich</a>,
|
||||
<br /><a href="/case-studies/ucsd/">University of California San Diego</a>,
|
||||
<br />and <a href="/case-studies/recurse-center/">Recurse Center</a> are using Zulip.
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="#feature-pricing" class="button">
|
||||
{{ _('Education pricing') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-intro">
|
||||
<h1 class="center"> Make Zulip the communication hub for your class. </h1>
|
||||
<p>
|
||||
Zulip is the <a href="/why-zulip/">organized team chat</a> app that is ideal for both live and asynchronous conversations. Post lecture notes and announcements, answer students’ questions, and coordinate with teaching staff all in one place.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Use topics to organize the discussion
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/introduction-to-topics">Zulip topics</a> create a separate space for each discussion.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content"> Questions and answers are easy to find, so each question is only asked once.</div></li>
|
||||
<li><div class="list-content">Refer to relevant points by <a href="/help/link-to-a-message-or-conversation">linking to a message or a topic.</a></div></li>
|
||||
<li><div class="list-content">Keep discussions orderly by <a href="/help/rename-a-topic">moving</a> or <a href="/help/move-content-to-another-topic">splitting</a> topics when conversations digress.</div></li>
|
||||
<li><div><a href="/help/resolve-a-topic">Mark the topic ✓ resolved</a> when done!</div></li>
|
||||
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Zulip has the best user experience of all the chat apps I’ve tried. With the discussion organized by topic within each channel, Zulip is the only app that makes hundreds of conversations manageable.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://ciip.in.tum.de/people/lasser.html">Tobias Lasser</a>, lecturer at the Technical University of Munich Department of Informatics
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/tum/" target="_blank">Learn more about how TUM uses Zulip ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image topics-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/streams_and_topics_day.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/education/message_formatting_day_1.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/education/message_formatting_day_2.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Powerful formatting
|
||||
</h1>
|
||||
<ul>
|
||||
<li><div class="list-content"><a href="/help/format-your-message-using-markdown#latex">Type LaTeX</a> directly into your Zulip message, and see it beautifully rendered.</div></li>
|
||||
<li><div class="list-content">Structure your points with bulleted and numbered <a href="/help/format-your-message-using-markdown#lists">lists</a>.</div></li>
|
||||
<li><div class="list-content"><a href="/help/code-blocks">Zulip code blocks</a> come with syntax highlighting for over 250 languages, and integrated <a href="/help/code-blocks#code-playgrounds">code playgrounds.</a></div></li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
[Zulip] is far more efficient than using the communication tools in Canvas, and the mobile app is great… Plus there is fantastic support for Markdown, code blocks, images and videos, etc.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.capterra.com/p/197945/Zulip/#Capterra___6617015">Ryan S., Associate Professor</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/education/message_formatting_day_1.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/education/message_formatting_day_2.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Interactive messaging
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Use <a href="/help/emoji-reactions">emoji
|
||||
reactions</a> for lightweight
|
||||
interactions. Have fun
|
||||
with <a href="/help/custom-emoji">custom
|
||||
emoji</a> and gather feedback
|
||||
with <a href="/help/create-a-poll">polls</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Hide answers behind <a href="/help/format-your-message-using-markdown#spoilers">spoilers</a>, letting students think before they read.</div></li>
|
||||
<li><div class="list-content">Share lecture notes and reading materials with <a href="/help/share-and-upload-files">drag-and-drop file uploads</a>.</div></li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Participants across six continents signed up for my graduate-level classes when I decided to open them up to the world during the pandemic. Zulip became a central hub for asynchronous Q&A and posting Zoom links for lectures, whiteboard PDFs, and announcements. Zulip’s topics, and the ability to change the topic of someone else's message, has made it much easier for me to keep things coherent. It’s super easy to discuss technical material using the TeX integration, and spoilers are a great way to answer questions about homework without depriving students of a chance to keep thinking about the problem on their own.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://kskedlaya.org/">Kiran S. Kedlaya</a>, Professor of Mathematics at University of California San Diego
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/ucsd/" target="_blank">Learn more about how UCSD uses Zulip ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="message-screenshot message-starred">
|
||||
<img alt="" src="{{ static('images/landing-page/education/interactive_messaging_day_1.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/education/interactive_messaging_day_2.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/education/interactive_messaging_day_3.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Flexible administration and moderation
|
||||
</h1>
|
||||
<ul>
|
||||
<li><div class="list-content">Zulip offers dozens of features for <a href="/help/moderating-open-organizations">moderating discussions.</a></div></li>
|
||||
<li>
|
||||
<div class="list-content">Assign permissions to course staff with <a
|
||||
href="/help/manage-permissions">fine-grained settings</a> for <a
|
||||
href="/help/user-roles">user roles</a>, <a
|
||||
href="/help/user-groups">user groups</a> (like TAs), and <a
|
||||
href="/help/introduction-to-users">individual
|
||||
users</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Make an announcement channel where only course staff <a href="/help/channel-posting-policy">can post messages</a>.</div></li>
|
||||
<li><div class="list-content">Quickly add staff and students to the right channels. Automatically subscribe users <a href="/help/set-default-channels-for-new-users">when they join</a>, subscribe a <a href="/help/user-groups">group of users</a>, or copy membership from another channel.</div></li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
I think Zulip is a great tool, much better than Slack… We can find messages from five years ago — it’s very convenient.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Miguel Pagano, professor at the National University of Córdoba
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/university-of-cordoba/" target="_blank">Learn more about how the National University of Córdoba uses Zulip ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Maintain student privacy
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip Cloud is built with <a href="/policies/privacy">privacy</a> and <a href="/security/">security</a> in mind. We will never sell data or ads.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Zulip is <a href="https://github.com/zulip">100% open source</a>. We work hard to make it <a href="https://zulip.readthedocs.io/en/latest/production/install.html">easy to set up</a> and run a self-hosted Zulip installation, where you have full control of the data.</div></li>
|
||||
<li><div class="list-content">Email addresses <a href="/help/configure-email-visibility">can be hidden</a>, and students <a href="/help/status-and-availability#disable-updating-availability">don’t have to share</a> when they are online.</div></li>
|
||||
<li><div class="list-content">Students can <a href="/help/mute-a-user">mute</a> anyone they'd rather not interact with.</div></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/privacy.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Never miss a beat
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With <a href="/apps/">apps for every platform</a>, you can check Zulip at your computer or on your phone.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip alerts you about timely messages with
|
||||
<a href="/help/channel-notifications">fully customizable</a> mobile, email and desktop notifications.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Mention <a href="/help/mention-a-user-or-group">users</a>, <a href="/help/user-groups">groups of users</a> or <a href="/help/dm-mention-alert-notifications#wildcard-mentions">everyone</a> when you need their attention.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Use Zulip in your language of choice, with translations into <a href="https://hosted.weblate.org/projects/zulip/">23 languages</a>.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Zulip works reliably for organizations with thousands of users online at once.</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
We are a public university that offers free education to
|
||||
33,000 students across 13 cities in Brazil. We started
|
||||
using Zulip in early 2020, and it works perfectly for
|
||||
our needs. Zulip’s interface is simple and intuitive.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Rafael Cordeiro, head of IT at <a href="https://www.utfpr.edu.br/">UTFPR</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-end education-feature-end">
|
||||
<div class="feature-pricing" id="feature-pricing">
|
||||
<h1 class="for-education-plans-heading"> Zulip Cloud for Education plans </h1>
|
||||
<div class="for-education-pricing-model">
|
||||
<div class="padded-content">
|
||||
<div class="pricing-container">
|
||||
<div class="price-box" id="for-education-free-price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Free</h2>
|
||||
<div class="description">
|
||||
Recommended for a typical class.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>All features on this page</li>
|
||||
<li>10,000 messages of search history</li>
|
||||
<li>File storage up to 5 GB total</li>
|
||||
<li><a href="/features/">Complete</a> team chat solution</li>
|
||||
<li><a href="/integrations/">Hundreds of integrations</a></li>
|
||||
<li>Advanced <a href="/help/user-roles">roles</a> and <a href="/help/manage-permissions">permissions</a></li>
|
||||
<li><a href="/help/guest-users">Guest</a> accounts</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content free-text">
|
||||
<div class="pricing-details">
|
||||
Free
|
||||
</div>
|
||||
<a href="/new/" class="button green">
|
||||
Create organization
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Standard for Education</h2>
|
||||
<div class="description">
|
||||
For large classes and departments.
|
||||
</div>
|
||||
<hr />
|
||||
<ul class="feature-list">
|
||||
<li>Unlimited search history</li>
|
||||
<li>File storage up to 5 GB per user</li>
|
||||
<li><a href="/help/message-retention-policy">Message retention policies</a></li>
|
||||
<li>Brand Zulip with your logo</li>
|
||||
<li>Priority commercial support</li>
|
||||
<li><a href="/help/public-access-option">Public access option</a></li>
|
||||
<li>Additional legal agreements</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="standard-price-box">
|
||||
<p>Education (for-profit)</p>
|
||||
<div class="price">1</div>
|
||||
<div class="details">
|
||||
<span class="pricing-period">per user per month</span>
|
||||
<br />
|
||||
with annual billing discount
|
||||
<br />
|
||||
$1.20/month billed monthly
|
||||
</div>
|
||||
</div>
|
||||
<div class="standard-price-box">
|
||||
<p>Education (non-profit)</p>
|
||||
<div class="price">0<span class="price-cents">.67</span></div>
|
||||
<div class="details">
|
||||
<span class="pricing-period">per user per month</span>
|
||||
<br />
|
||||
with annual billing discount
|
||||
<br />
|
||||
$0.80/month billed monthly
|
||||
</div>
|
||||
</div>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button green standard-register-button">
|
||||
Request education pricing
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p class="price-asterisk hero-fine-print">
|
||||
<a href="/help/zulip-cloud-billing#education-pricing">Learn
|
||||
more</a> about education pricing, or contact <a
|
||||
href="mailto:sales@zulip.com">sales@zulip.com</a> with any
|
||||
questions.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p class="hero-fine-print">
|
||||
Learn about using Zulip
|
||||
for <a href="/for/events/">conferences</a> and
|
||||
<a href="/for/research/">research communities</a>. If you have any
|
||||
questions or feedback, please contact us
|
||||
at <a href="mailto:sales@zulip.com">sales@zulip.com</a>. You
|
||||
can also drop by
|
||||
our <a href="/development-community/">friendly development
|
||||
community at chat.zulip.org</a> to ask for help or suggest
|
||||
improvements!
|
||||
</p>
|
||||
|
||||
{% include "corporate/compare-education.html" %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
313
templates/corporate/for/events.html
Normal file
313
templates/corporate/for/events.html
Normal file
@@ -0,0 +1,313 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Zulip for events and conferences" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Make Zulip the communication hub for your
|
||||
conference, workshop, hackathon, or other event. In-person, online, and anything
|
||||
in between." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page">
|
||||
<div class="hero bg-events">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Zulip for conferences and events</h1>
|
||||
<p>Conferences, workshops, hackathons. In-person, online, and anything in between.
|
||||
<br/><a href="/plans/">Zulip Cloud Standard</a> is free for
|
||||
academic conferences and most other non-profit events!
|
||||
</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn how the <a href="/case-studies/recurse-center/">Recurse Center</a> is using Zulip.
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-intro">
|
||||
<h1 class="center"> Make Zulip the communication hub for your event. </h1>
|
||||
<p>
|
||||
Zulip is the <a href="/why-zulip/">organized team chat</a> app that is ideal for both live and asynchronous conversations. Post presentations and announcements, host Q&A sessions, and coordinate among organizers.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Use topics to organize the discussion
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/introduction-to-topics">Zulip
|
||||
topics</a> create a separate space for
|
||||
each discussion or question.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Make your event more inclusive by lowering the barriers
|
||||
for participants to ask questions, share ideas, and learn from experts.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Take time to think. Discussions work great
|
||||
in real time or async, and conversations
|
||||
evolve into collaborations.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Discussions at conferences often happen in small groups — most
|
||||
people are not able to participate because they are not present,
|
||||
or are too intimidated to join. In the conferences we organized
|
||||
with Zulip, questions or ideas were spread openly. Anybody could
|
||||
get a chance to contribute, and to benefit from new ideas and
|
||||
opportunities for collaboration.
|
||||
<br/> <br/>
|
||||
Zulip turned out to be a great asset that we plan to keep even
|
||||
when we go back to face-to-face events.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://perso.univ-rennes1.fr/christophe.ritzenthaler/">Christophe Ritzenthaler</a>, <cite>Executive Director of <a href="https://www.cimpa.info/">CIMPA</a>
|
||||
and Professor at Rennes 1 University</cite>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image topics-image">
|
||||
<img alt="" src="{{ static('images/landing-page/events/streams_and_topics_day.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="message-screenshot message-starred">
|
||||
<img alt="" src="{{ static('images/landing-page/events/your_communication_hub_day_1.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/events/your_communication_hub_day_2.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Your communication hub
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Share the agenda and presentations with
|
||||
<a href="/help/share-and-upload-files">drag-and-drop file uploads</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Use <a href="/help/emoji-reactions">emoji reactions</a> for lightweight interactions. Have fun with <a href="/help/custom-emoji">custom emoji</a>, or get feedback with a <a href="/help/create-a-poll">poll</a>.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Announce the schedule without worrying about time zones using <a href="/help/format-your-message-using-markdown#global-times">global times</a>.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Make a <a href="/help/start-a-call">video call</a> with the click of a button.</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">Use Zulip in your language of choice, with translations into <a href="https://hosted.weblate.org/projects/zulip/">23 languages</a>.</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
The fact that the chat serves as a repository of the scientific /
|
||||
academic exchanges is a big unanticipated bonus. Participants tend
|
||||
to log in after the event, sometimes repeatedly, to consult the
|
||||
messages and get in touch with others.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Marianne Mandl, <a href="https://conference-service.com/">COMS | Conference Management Software</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="message-screenshot message-starred">
|
||||
<img alt="" src="{{ static('images/landing-page/events/your_communication_hub_day_1.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/events/your_communication_hub_day_2.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Lasting knowledge repository
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Make the Q&A a permanent resource for participants.
|
||||
</div>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/link-to-a-message-or-conversation#link-to-zulip-from-anywhere">Permanently link</a>
|
||||
to a Zulip conversation or a message in context
|
||||
from emails, talk slides, or on the website
|
||||
for your event.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Information is at your fingertips with Zulip’s <a href="/help/search-for-messages">powerful full-text search</a>.</div></li>
|
||||
<li><div class="list-content"><a href="https://github.com/zulip/zulip-archive">Publish</a> discussions on the web, or move your data with our high quality <a href="/help/export-your-organization">export</a> and <a href="https://zulip.readthedocs.io/en/latest/production/export-and-import.html">import</a> tools.</div></li>
|
||||
<li><div class="list-content">Zulip is <a href="https://github.com/zulip">100% free and open-source software</a>, so you are never locked into a proprietary tool.</div></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/knowledge-repository.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/events/message_formatting_day.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Powerful formatting
|
||||
</h1>
|
||||
<ul>
|
||||
<li><div class="list-content"><a href="/help/format-your-message-using-markdown#latex">Type LaTeX</a> directly into your Zulip message, and see it beautifully rendered.</div></li>
|
||||
<li><div class="list-content"><a href="/help/code-blocks">Zulip code blocks</a> come with syntax highlighting for over 250 languages, and integrated <a href="/help/code-blocks#code-playgrounds">code playgrounds.</a></div></li>
|
||||
<li><div class="list-content">Structure your ideas with bulleted and numbered <a href="/help/format-your-message-using-markdown#lists">lists</a>.</div></li>
|
||||
<li><div class="list-content">If you made a mistake, no worries! You can <a href="/help/edit-a-message">edit your message</a>, or move it to a different <a href="/help/move-content-to-another-topic">topic</a> or <a href="/help/move-content-to-another-channel">channel</a>.</div></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/events/message_formatting_day.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Set everything up ahead of time
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With <a href="/help/invite-new-users">multi-use invite links</a>, there’s no need to create individual Zulip invitations.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Signing up for Zulip is quick and easy. Participants can make an account, or <a href="/help/logging-in">log in</a> with Google, Apple, etc.</div></li>
|
||||
<li><div class="list-content">Automatically subscribe members to channels <a href="/help/set-default-channels-for-new-users">when they join</a>, subscribe a <a href="/help/user-groups">group of users</a>, or copy membership from another channel.</div></li>
|
||||
<li><div class="list-content">Make an announcement channel where only organizers <a href="/help/channel-posting-policy">can post messages</a>. Use <a href="/help/channel-permissions#private-channels">private channels</a> to plan the event.</div></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Never miss a beat
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With <a href="/apps/">apps for every
|
||||
platform</a>, check Zulip at your computer or on your
|
||||
phone. Zulip works great in a browser, so no download is
|
||||
required.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Zulip alerts participants about timely messages with <a href="/help/channel-notifications">fully customizable</a> mobile, email and desktop notifications.</div></li>
|
||||
<li><div class="list-content">Mention <a href="/help/mention-a-user-or-group">users</a>, <a href="/help/user-groups">groups of users</a> or <a href="/help/dm-mention-alert-notifications#wildcard-mentions">everyone</a> when you need their attention.</div></li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip works reliably for organizations
|
||||
with thousands of users online at once.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-end">
|
||||
<div class="bottom-register-buttons">
|
||||
<h1>
|
||||
<a href="/plans/">Zulip Cloud Standard</a> is free for academic conferences and
|
||||
most other non-profit events!
|
||||
</h1>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p>
|
||||
Learn about using Zulip for <a href="/for/education/">teaching</a>
|
||||
and <a href="/for/research/">research communities</a>. If you have any
|
||||
questions, please contact us
|
||||
at <a href="mailto:sales@zulip.com">sales@zulip.com</a>. You can also drop by
|
||||
our <a href="/development-community/">friendly development community at
|
||||
chat.zulip.org</a> to ask for help or suggest improvements!
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
755
templates/corporate/for/open-source.html
Normal file
755
templates/corporate/for/open-source.html
Normal file
@@ -0,0 +1,755 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Zulip for open-source projects" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Grow your community with thoughtful and inclusive
|
||||
discussion, using the organized team chat app that is ideal for both live
|
||||
and asynchronous conversations." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page">
|
||||
<div class="hero bg-pycon">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Zulip for open source projects</h1>
|
||||
<p>
|
||||
Grow your community with thoughtful and inclusive discussion.
|
||||
<br/><a href="/plans/">Zulip Cloud Standard</a> is free for open-source
|
||||
projects!
|
||||
</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn how the <a href="/case-studies/rust/">Rust language</a>,
|
||||
<a href="/case-studies/lean/">Lean theorem prover</a>,
|
||||
<a href="/case-studies/asciidoctor/">Asciidoctor</a>, <a
|
||||
href="/case-studies/rush-stack/">Rush Stack</a>, and <a
|
||||
href="/case-studies/mixxx/">Mixxx</a> communities are
|
||||
using Zulip.
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-intro">
|
||||
<h1 class="center"> Make Zulip the communication hub for your open-source community. </h1>
|
||||
<p>
|
||||
Zulip is the <a href="/why-zulip/">organized team chat</a> app that is ideal for both
|
||||
live and asynchronous conversations. Discuss issues, pull requests
|
||||
and feature ideas, engage with users, answer questions, and
|
||||
onboard new contributors.
|
||||
</p>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Rust development would not be moving at the pace that it has been without Zulip.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.rust-lang.org/governance/teams/lang">Rust Language team</a>
|
||||
co-lead <a href="https://joshtriplett.org/">Josh Triplett</a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/rust/"
|
||||
target="_blank">How the Rust language community uses Zulip ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Use topics to organize the discussion
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Like email threads,
|
||||
<a href="/help/introduction-to-topics">Zulip topics</a>
|
||||
create a separate space for each discussion, so
|
||||
different conversations will never get in each
|
||||
other’s way.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Find active conversations, or see what happened while you were away,
|
||||
with the <a href="/help/recent-conversations">Recent conversations</a>
|
||||
view. Read the topics you care about, and skip the rest.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Keep discussions orderly
|
||||
by <a href="/help/rename-a-topic">moving</a>
|
||||
or <a href="/help/move-content-to-another-topic">splitting</a>
|
||||
topics when conversations digress.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
We just moved the Lichess team (~100 persons) to <a href="https://twitter.com/zulip">@zulip</a>, and I'm loving it. The topics in particular make it vastly superior to slack & discord, when it comes to dealing with many conversations.<br />Zulip is also open-source!
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://twitter.com/ornicar">Thibault D (@ornicar)</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image topics-image">
|
||||
<img alt="" src="{{ static('images/landing-page/open_source/streams_and_topics_day.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/knowledge-repository.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Lasting knowledge repository
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Maintain access to your organization's entire
|
||||
message history with free <a href="/plans/">Zulip
|
||||
Cloud Standard</a> hosting. Information is at your
|
||||
fingertips with Zulip's <a
|
||||
href="/help/search-for-messages">powerful full-text
|
||||
search</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/link-to-a-message-or-conversation#link-to-zulip-from-anywhere">Permanently link</a>
|
||||
to a Zulip conversation or a message in context
|
||||
from your issue tracker, forum, or anywhere else.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With the <a href="/help/public-access-option">public
|
||||
access option</a>, anyone can view, browse, and
|
||||
search your organization's public content — no
|
||||
account required.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Conversations are organized by topic, so you can
|
||||
review old discussions to understand past work,
|
||||
explanations, and decisions.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
The core of the Recurse Center is the community, and the
|
||||
core of our online community is Zulip… Switching to
|
||||
Zulip has turned out to be one of the best decisions
|
||||
we’ve made, and it’s impossible to imagine RC today
|
||||
without it. No other tool has a user experience that
|
||||
scales to a community of our size.
|
||||
</blockquote>
|
||||
<div class="author">— Nick Bergson-Shilcock, founder and CEO,
|
||||
<a href="https://www.recurse.com/">Recurse Center</a></div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/recurse-center/"
|
||||
target="_blank">How the Recurse Center
|
||||
community uses Zulip ↗</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/knowledge-repository.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Build inclusive communities
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Conversations in Zulip can
|
||||
continue for hours or days, enabling effective
|
||||
discussions between community members around the
|
||||
world.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Core contributors can answer a question when they
|
||||
have a few minutes, without digging through dozens
|
||||
of messages.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Part-time participants <a href="/help/finding-a-conversation-to-read">
|
||||
quickly zero in</a> on the conversations they care
|
||||
about. This is not possible with other chat tools
|
||||
like Slack or Discord.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Topics provide a safe space to ask a question without
|
||||
interrupting other conversations.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip offers dozens of features
|
||||
for <a href="/help/moderating-open-organizations">
|
||||
moderating discussions</a>. Members can
|
||||
also <a href="/help/mute-a-user">mute</a> anyone
|
||||
they'd rather not interact with.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Check out <a href="/for/communities/">Zulip for
|
||||
communities</a>
|
||||
to learn more about how Zulip facilitates
|
||||
contributor engagement and inclusion.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
When we made the switch to <a href="https://twitter.com/zulip">@zulip</a> a few months ago for chat, never in my wildest dreams did I imagine it was going to become the beating heart of the community, and so quickly. It's a game changer. 🧑💻🗨️👩💻
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Dan Allen (@mojavelinux), <a href="https://twitter.com/mojavelinux/status/1409702273400201217">June 29, 2021</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/open_source/build_inclusive_communities.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/software-engineer.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Open ecosystem
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip is <a href="https://github.com/zulip">100%
|
||||
open-source software</a>, with no "open core"
|
||||
catch. We work hard to make it <a href="https://zulip.readthedocs.io/en/latest/production/install.html">easy to set up</a>,
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups">backup</a>,
|
||||
and <a href="https://zulip.readthedocs.io/en/stable/production/upgrade.html">maintain</a>
|
||||
a self-hosted Zulip installation, where you
|
||||
have full control of your data.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Our high quality <a href="/help/export-your-organization">export</a>
|
||||
and <a href="https://zulip.readthedocs.io/en/latest/production/export-and-import.html">import</a>
|
||||
tools ensure that you can always move from
|
||||
<a href="/plans/">Zulip Cloud</a> hosting to your
|
||||
own servers. There is no lock-in.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip's <a href="https://chat.zulip.org/api/rest">open API</a>
|
||||
is shared by the official web/desktop, mobile, and terminal
|
||||
clients, with a <a href="https://chat.zulip.org/api/changelog">complete
|
||||
API changelog</a> and
|
||||
<a href="https://zulip.readthedocs.io/en/latest/overview/release-lifecycle.html#compatibility-and-upgrading">
|
||||
backwards-compatibility policy</a> designed to support
|
||||
developers of third-party clients.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip supports mirroring channels with
|
||||
<a href="/integrations/irc">IRC</a>,
|
||||
<a href="/integrations/slack">Slack</a>, and
|
||||
<a href="/integrations/matrix">Matrix</a>, and
|
||||
you can connect to other modern chat protocols using
|
||||
<a href="https://github.com/42wim/matterbridge">Matterbridge</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
The Lean community switched from Gitter to Zulip in early 2018,
|
||||
and never looked back. Zulip’s model of conversations labeled with topics has been
|
||||
essential for organising research work and simultaneously
|
||||
onboarding newcomers as our community scaled. My experience with
|
||||
both the app and the website is extremely positive!
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.imperial.ac.uk/people/k.buzzard">Kevin Buzzard</a>, Professor of Pure Mathematics at <a href="https://www.imperial.ac.uk/">Imperial College London</a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/lean/"
|
||||
target="_blank">How the Lean prover
|
||||
community uses Zulip ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/software-engineer.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Powerful formatting
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/code-blocks">Zulip code blocks</a> come with
|
||||
syntax highlighting for over 250 languages, ability to
|
||||
<a href="/help/code-blocks#default-code-block-language">set a default language</a>,
|
||||
and integrated <a href="/help/code-blocks#code-playgrounds">code playgrounds.</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/format-your-message-using-markdown#latex">Type LaTeX</a>
|
||||
directly into your Zulip message, and see it beautifully rendered.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Enjoy inline image, video and website previews.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
If you made a mistake, no worries! You
|
||||
can <a href="/help/edit-a-message">edit your
|
||||
message</a>, or move it to a
|
||||
different <a href="/help/move-content-to-another-topic">topic</a>
|
||||
or <a href="/help/move-content-to-another-channel">channel</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
At rust-lang, at Ferrous Systems, and now at Near,
|
||||
Zulip is absolutely invaluable for making technical
|
||||
discussion work!
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://github.com/matklad/">Aleksey Kladov</a>,
|
||||
Senior software engineer, NEAR Protocol
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/message-formatting-top.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/message-formatting-bottom.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Interactive messaging
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Start a <a href="/help/start-a-call">video
|
||||
call</a> with the click of a button, or
|
||||
plan events without worrying
|
||||
about time zones
|
||||
using
|
||||
<a
|
||||
href="/help/format-your-message-using-markdown#global-times">global times</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Use <a href="/help/emoji-reactions">emoji
|
||||
reactions</a> for lightweight
|
||||
interactions. Have fun
|
||||
with <a href="/help/custom-emoji">custom
|
||||
emoji</a> and gather feedback
|
||||
with <a href="/help/create-a-poll">polls</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Share files or images with <a href="/help/share-and-upload-files">drag-and-drop
|
||||
uploads</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Enjoy animated GIFs with Zulip's <a href="/help/animated-gifs">native integration</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Wikimedia uses Zulip for its participation in open
|
||||
source mentoring programs. Zulip’s threaded discussions
|
||||
help busy organization administrators and mentors stay
|
||||
in close communication with students during all phases
|
||||
of the programs.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Srishti Sethi, Developer Advocate, <a href="https://wikimediafoundation.org/">Wikimedia Foundation</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/message-formatting-bottom.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Effective workflows with integrations
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Use topics to manage support workflows, answer
|
||||
questions, and collaborate to investigate issues.
|
||||
<a href="/help/resolve-a-topic">Mark the topic ✓
|
||||
resolved</a> when done!
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/add-a-custom-linkifier">Customize
|
||||
Zulip’s markup with linkifiers</a>, so that
|
||||
“TRAC-1234” and “#1234” automatically
|
||||
link to issues or tickets in the tools you use.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Native integrations for GitHub, Jira, Twitter, Sentry
|
||||
and <a href="/integrations/">hundreds of
|
||||
other tools</a> can initiate new topics,
|
||||
creating lightweight discussion spaces for
|
||||
each issue.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Bots can also use a dedicated topic to avoid
|
||||
crowding out conversations.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Connect to thousands of tools
|
||||
using <a href="https://zapier.com/apps/zulip/integrations">Zapier</a>.
|
||||
Integrations written for Slack can post
|
||||
into Zulip via
|
||||
the <a href="/integrations/slack_incoming">Slack
|
||||
compatible webhook</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Build your own integrations with Zulip’s
|
||||
easy-to-use <a href="/api/">RESTful
|
||||
API</a>, <a href="/api/installation-instructions">client
|
||||
bindings</a>, <a href="https://zulip.readthedocs.io/en/latest/webhooks/incoming-webhooks-overview.html">incoming
|
||||
webhooks</a>, <a href="/help/outgoing-webhooks">outgoing
|
||||
webhooks</a>
|
||||
and <a href="/help/running-bots">interactive
|
||||
bot framework</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/companies/integrations_with_border.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Flexible administration and moderation
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Invite new members with <a href="/help/invite-new-users">multi-use invite links</a>,
|
||||
or make your community open for anyone to
|
||||
<a href="/help/restrict-account-creation#set-whether-invitations-are-required-to-join">join without an invitation</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Allow (or require) users to authenticate with
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">
|
||||
single sign-on options</a> like
|
||||
<a href="/help/configure-authentication-methods">GitHub or GitLab</a>,
|
||||
instead of with a username and password.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Automatically subscribe members to
|
||||
channels <a href="/help/set-default-channels-for-new-users">when
|
||||
they join.</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Manage your community with <a
|
||||
href="/help/manage-permissions">fine-grained
|
||||
permission settings</a> you can assign to <a
|
||||
href="/help/user-roles">user roles</a>,
|
||||
<a href="/help/user-groups">user groups</a>, and <a
|
||||
href="/help/introduction-to-users">individual users</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
When and how you want it
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With <a href="/apps/">apps for every
|
||||
platform</a>, you can check Zulip at your computer or on your
|
||||
phone. Zulip works great in a browser, so no download is
|
||||
required.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Zulip alerts you about timely messages with <a href="/help/channel-notifications">fully customizable</a> mobile, email and desktop notifications.</div></li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Mention <a href="/help/mention-a-user-or-group">users</a>, <a href="/help/user-groups">groups
|
||||
of users</a>
|
||||
or <a href="/help/dm-mention-alert-notifications#wildcard-mentions">everyone</a>
|
||||
when you need their attention.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Use Zulip in your language of choice, with translations into
|
||||
<a href="https://hosted.weblate.org/projects/zulip/">23 languages</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip is built for scale and works reliably for open organizations
|
||||
with 10,000s of users, with
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/requirements.html#scalability">
|
||||
modest hardware</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img class="mirror-image" alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
The Zulip threading model is <i>fantastic</i> and
|
||||
<i>game-changing</i>, and you are doing your community a
|
||||
disservice if you choose Slack or Discord over Zulip.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://github.com/jni">Juan
|
||||
Nunez-Iglesias</a>, <a href="https://napari.org/">napari
|
||||
project</a> co-founder and
|
||||
<a href="https://scikit-image.org/">scikit-image</a>
|
||||
core developer
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Make the move today
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
The Zulip core developers have decades of combined
|
||||
experience leading and growing open source
|
||||
communities, and we love helping other communities
|
||||
reach their potential.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Getting started or moving
|
||||
from another platform is easy! Import your existing
|
||||
organization from <a href="/help/import-from-slack">
|
||||
Slack</a>, <a href="/help/import-from-mattermost">
|
||||
Mattermost</a>, or <a href="/help/import-from-rocketchat">
|
||||
Rocket.Chat</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
See how <a href="/communities/">other open
|
||||
communities</a> are using Zulip, and learn about <a
|
||||
href="/help/moderating-open-organizations">best
|
||||
practices</a> for moderating an open Zulip
|
||||
organization.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
If you have any questions,
|
||||
please contact us at <a href="mailto:sales@zulip.com">
|
||||
sales@zulip.com</a>. You can also drop by our
|
||||
<a href="/development-community/">friendly development
|
||||
community at chat.zulip.org</a> to ask for help or
|
||||
suggest improvements!
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
The Zulip threading model is <i>fantastic</i> and
|
||||
<i>game-changing</i>, and you are doing your community a
|
||||
disservice if you choose Slack or Discord over Zulip.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://github.com/jni">Juan
|
||||
Nunez-Iglesias</a>, <a href="https://napari.org/">napari
|
||||
project</a> co-founder and
|
||||
<a href="https://scikit-image.org/">scikit-image</a>
|
||||
core developer
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="bottom-register-buttons extra_margin_before_footer">
|
||||
<h1>
|
||||
<a href="/plans/">Zulip Cloud Standard</a> is free for open-source projects!
|
||||
</h1>
|
||||
<p class="call-to-action-subhead">Join the hundreds of open-source projects we sponsor.</p>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
477
templates/corporate/for/research.html
Normal file
477
templates/corporate/for/research.html
Normal file
@@ -0,0 +1,477 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Zulip for researchers and academics" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Make Zulip the communication hub for your research
|
||||
group, department or scientific field. Organized team chat ideal for both
|
||||
live and asynchronous conversations." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page">
|
||||
<div class="hero bg-education">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Zulip for research</h1>
|
||||
<p>
|
||||
Chat for your project, research group, department or scientific
|
||||
field. <br/><a href="/plans/">Zulip Cloud Standard</a> is free for academic
|
||||
research!
|
||||
</p>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
Learn how the <a href="/case-studies/lean/">Lean theorem prover
|
||||
community</a> is using Zulip.
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-intro">
|
||||
<h1 class="center"> Make Zulip the communication hub for your research community. </h1>
|
||||
<p>
|
||||
Zulip is the <a href="/why-zulip/">organized team chat</a> app that is ideal for both live and asynchronous conversations. Coordinate with collaborators, post questions and ideas, and learn from others in your field.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Use topics to organize the discussion
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/introduction-to-topics">Zulip
|
||||
topics</a> create a separate space for each
|
||||
discussion.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Find active conversations, or see what happened while you were away,
|
||||
with the <a href="/help/recent-conversations">Recent conversations</a> view.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Keep discussions orderly
|
||||
by <a href="/help/rename-a-topic">moving</a>
|
||||
or <a href="/help/move-content-to-another-topic">splitting</a>
|
||||
topics when conversations digress.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Check out <a href="/for/communities/">Zulip for communities</a>
|
||||
to learn how Zulip empowers welcoming communities by making it
|
||||
easy to participate on your own time.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
The Lean community switched from Gitter to Zulip in early 2018,
|
||||
and never looked back. Zulip’s model of conversations labeled with topics has been
|
||||
essential for organising research work and simultaneously
|
||||
onboarding newcomers as our community scaled. My experience with
|
||||
both the app and the website is extremely positive!
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.imperial.ac.uk/people/k.buzzard">Kevin Buzzard</a>,
|
||||
Professor of Pure Mathematics at
|
||||
<a href="https://www.imperial.ac.uk/">Imperial College London</a>
|
||||
</div>
|
||||
</div>
|
||||
<a class="case-study-link" href="/case-studies/lean/"
|
||||
target="_blank">How the Lean prover
|
||||
community uses Zulip ↗</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image topics-image">
|
||||
<img alt="" src="{{ static('images/landing-page/research/streams_and_topics_day.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/knowledge-repository.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Lasting knowledge repository
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Maintain access to your organization's entire
|
||||
message history with free <a href="/plans/">Zulip
|
||||
Cloud Standard</a> hosting. Information is at your
|
||||
fingertips with Zulip's <a
|
||||
href="/help/search-for-messages">powerful full-text
|
||||
search</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/link-to-a-message-or-conversation#link-to-zulip-from-anywhere">Permanently link</a>
|
||||
to a Zulip conversation or a message in context
|
||||
from emails, notes, talk slides, or anywhere else.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With the <a href="/help/public-access-option">public
|
||||
access option</a>, anyone can view, browse, and
|
||||
search your organization's public content — no
|
||||
account required.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip is <a href="https://github.com/zulip">100%
|
||||
free and open-source software</a>, so you are never
|
||||
locked into a proprietary tool. You can move your
|
||||
data with our high quality <a
|
||||
href="/help/export-your-organization">export</a> and
|
||||
<a
|
||||
href="https://zulip.readthedocs.io/en/latest/production/export-and-import.html">import</a>
|
||||
tools.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Zulip has been a game changer for our group’s collaboration. It combines the immediacy of chat with the structure of email, allowing complex projects and parallel discussions to stay organized without chaos. We no longer lose context between meetings; every idea, file, and decision is easy to find and build on.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.capterra.com/p/197945/Zulip/#Capterra___7038289">Cole B., Associate Professor of Pediatrics</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/knowledge-repository.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Powerful formatting
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/format-your-message-using-markdown#latex">Type LaTeX</a>
|
||||
directly into your Zulip message, and see it beautifully rendered.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
<a href="/help/code-blocks">Zulip code blocks</a>
|
||||
come with syntax highlighting for over 250 languages, and integrated
|
||||
<a href="/help/code-blocks#code-playgrounds">code playgrounds.</a>
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Structure your points with bulleted and numbered <a href="/help/format-your-message-using-markdown#lists">lists</a>.</div></li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
If you made a mistake, no worries! You
|
||||
can <a href="/help/edit-a-message">edit your
|
||||
message</a>, or move it to a
|
||||
different <a href="/help/move-content-to-another-topic">topic</a>
|
||||
or <a href="/help/move-content-to-another-channel">channel</a>.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
Several research communities I’m a part of use Zulip very effectively. Great for math/code, very well structured and keeps up with hundreds of users (across many countries/nationalities).
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.reddit.com/r/AskAcademia/comments/1kvp1cc/comment/mucgbwy/">u/techowl8 on Reddit</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/events/message_formatting_day.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/research/interactive_messaging_day_1.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/research/interactive_messaging_day_2.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Interactive messaging
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Start a <a href="/help/start-a-call">video
|
||||
call</a> with the click of a button, or
|
||||
make plans for later without worrying
|
||||
about time zones
|
||||
using <a href="/help/format-your-message-using-markdown#global-times">global
|
||||
times</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Use <a href="/help/emoji-reactions">emoji
|
||||
reactions</a> for lightweight
|
||||
interactions. Have fun
|
||||
with <a href="/help/custom-emoji">custom
|
||||
emoji</a> and gather feedback
|
||||
with <a href="/help/create-a-poll">polls</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Share papers, presentations or images with <a href="/help/share-and-upload-files">drag-and-drop file uploads</a>.</div></li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
For more than a year, Zulip has been the cornerstone of our online
|
||||
Category Theory community. We greatly appreciate the seamless
|
||||
integration of Latex in every message as well as being able to get
|
||||
sidetracked (which, let's face it, happens a lot with
|
||||
mathematicians) without compromising an entire conversation: we
|
||||
can simply create a new topic for every tangent! Moreover, the
|
||||
flexible channels-and-topics system greatly helps us navigate
|
||||
through the constant influx of messages, as it is simple to tell
|
||||
if a message is relevant to one's interests.
|
||||
<br />
|
||||
<br />
|
||||
All in all, Zulip
|
||||
enabled us to create an unprecedentedly extensive, active and
|
||||
vibrant community for all category theory enthusiasts out there.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a
|
||||
href="https://www8.cs.fau.de/people/stelios/">Stelios
|
||||
Tsampas</a>, postdoctoral researcher at <a href="https://www.fau.eu/">FAU</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/research/interactive_messaging_day_1.png') }}" />
|
||||
</div>
|
||||
<div class="message-screenshot">
|
||||
<img alt="" src="{{ static('images/landing-page/research/interactive_messaging_day_2.png') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Flexible administration and moderation
|
||||
</h1>
|
||||
<ul>
|
||||
<li><div class="list-content">Invite new members with <a href="/help/invite-new-users">multi-use invite links</a>, or allow anyone to <a href="/help/restrict-account-creation#set-whether-invitations-are-required-to-join">join without an invitation</a>.</div></li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Automatically subscribe members to
|
||||
channels <a href="/help/set-default-channels-for-new-users">when
|
||||
they join.</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Manage your community with <a
|
||||
href="/help/manage-permissions">fine-grained
|
||||
permission settings</a> you can assign to <a
|
||||
href="/help/user-roles">user roles</a>,
|
||||
<a href="/help/user-groups">user groups</a>, and <a
|
||||
href="/help/introduction-to-users">individual users</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip offers dozens of features
|
||||
for <a href="/help/moderating-open-organizations">moderating
|
||||
discussions</a>. Members can
|
||||
also <a href="/help/mute-a-user">mute</a> anyone they'd rather
|
||||
not interact with.
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
I have used Zulip for 7 years and whenever I have to use another platform it always results in frustration… The organization and storage of messages has enhanced the productivity of myself and colleagues for years.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://www.capterra.com/p/197945/Zulip/#Capterra___6648868">Christina P., Assistant Professor</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
When and how you want it
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
With <a href="/apps/">apps for every
|
||||
platform</a>, you can check Zulip at your computer or on your
|
||||
phone. Zulip works great in a browser, so no download is
|
||||
required.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Zulip alerts you about timely messages with <a href="/help/channel-notifications">fully customizable</a> mobile, email and desktop notifications.</div></li>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Mention <a href="/help/mention-a-user-or-group">users</a>, <a href="/help/user-groups">groups
|
||||
of users</a>
|
||||
or <a href="/help/dm-mention-alert-notifications#wildcard-mentions">everyone</a>
|
||||
when you need their attention.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Use Zulip in your language of choice, with translations into <a href="https://hosted.weblate.org/projects/zulip/">23 languages</a>.</div></li>
|
||||
</ul>
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
As a research consortium spread across 14 locations in
|
||||
Germany, we use Zulip to communicate with each other in
|
||||
a low-threshold manner, without the overhead of email.
|
||||
Even with more than 200 users across different
|
||||
institutions, Zulip’s model of topic-labeled
|
||||
conversations makes it easy for our team members to keep
|
||||
up-to-date on what's relevant, and work productively
|
||||
together.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— Christina Schüttler, IT department Team Lead, University
|
||||
Hospital Erlangen
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-image">
|
||||
<img alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Make the move today
|
||||
</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="list-content">
|
||||
Zulip's founder is a former MIT PhD student, and we love
|
||||
helping academics succeed. Learn about using Zulip
|
||||
for <a href="/for/education/">teaching</a> and
|
||||
<a href="/for/events/">conferences</a>.
|
||||
</div>
|
||||
</li>
|
||||
<li><div class="list-content">Getting started or moving from another platform is easy! Import your existing organization from <a href="/help/import-from-slack">Slack</a>, <a href="/help/import-from-mattermost">Mattermost</a>, or <a href="/help/import-from-rocketchat">Rocket.Chat</a>.</div></li>
|
||||
<li><div class="list-content">If you have any questions, please contact us at <a href="mailto:sales@zulip.com">sales@zulip.com</a>. You can also drop by our <a href="/development-community/">friendly development community at chat.zulip.org</a> to ask for help or suggest improvements!</div></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-image">
|
||||
<div class="quote">
|
||||
<div class="quote-with-attribution">
|
||||
<blockquote>
|
||||
I have to use Slack for some other research groups
|
||||
I collaborate with, but my own graduate students
|
||||
voted to switch to Zulip a few years ago and it's
|
||||
just vastly better.
|
||||
</blockquote>
|
||||
<div class="author">
|
||||
— <a href="https://cs.stanford.edu/~keithw/">Keith Winstein</a>, Assistant Professor of Computer Science at <a href="https://www.stanford.edu/">Stanford University</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-end">
|
||||
<div class="bottom-register-buttons extra_margin_before_footer">
|
||||
<h1>
|
||||
<a href="/plans/">Zulip Cloud Standard</a> is free for
|
||||
academic research!
|
||||
</h1>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/accounts/go/?next=/sponsorship/" class="button">
|
||||
{{ _('Request sponsorship') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
37
templates/corporate/for/use-cases.html
Normal file
37
templates/corporate/for/use-cases.html
Normal file
@@ -0,0 +1,37 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Use cases and customer stories | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how our customers are using Zulip." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing plans why-page solutions-page for-companies">
|
||||
<div class="hero bg-companies">
|
||||
<div class="bg-dimmer"></div>
|
||||
<h1 class="center">Use cases and customer stories</h1>
|
||||
<p>Learn how our customers are using Zulip.</p>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/plans/" class="button">
|
||||
{{ _('View pricing') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/for/use-cases.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endblock %}
|
||||
34
templates/corporate/for/use-cases.md
Normal file
34
templates/corporate/for/use-cases.md
Normal file
@@ -0,0 +1,34 @@
|
||||
## Use cases
|
||||
|
||||
* [Business](/for/business/)
|
||||
* [Education](/for/education/)
|
||||
* [Research](/for/research/)
|
||||
* [Events and conferences](/for/events/)
|
||||
* [Open source projects](/for/open-source/)
|
||||
* [Communities](/for/communities/)
|
||||
|
||||
## Customer stories
|
||||
|
||||
### Business
|
||||
|
||||
* [iDrift AS company](/case-studies/idrift/)
|
||||
* [GUT contact support agency](/case-studies/gut-contact/)
|
||||
* [End Point Dev software consultancy](/case-studies/end-point/)
|
||||
* [WindBorne startup](/case-studies/windborne/)
|
||||
* [Semsee InsurTech startup](/case-studies/semsee/)
|
||||
* [Atolio startup](/case-studies/atolio/)
|
||||
|
||||
### Education and research
|
||||
|
||||
* [Technical University of Munich](/case-studies/tum/)
|
||||
* [University of California San Diego](/case-studies/ucsd/)
|
||||
* [National University of Córdoba](/case-studies/university-of-cordoba/)
|
||||
* [Lean theorem prover community](/case-studies/lean/)
|
||||
|
||||
### Open source and communities
|
||||
|
||||
* [Asciidoctor open-source community](/case-studies/asciidoctor/)
|
||||
* [Rust language community](/case-studies/rust/)
|
||||
* [Recurse Center](/case-studies/recurse-center/)
|
||||
* [Rush Stack](/case-studies/rush-stack/)
|
||||
* [Mixxx open-source community](/case-studies/mixxx/)
|
||||
306
templates/corporate/hello.html
Normal file
306
templates/corporate/hello.html
Normal file
@@ -0,0 +1,306 @@
|
||||
{% extends "zerver/base.html" %}
|
||||
{% set entrypoint = "landing-page-hello" %}
|
||||
|
||||
{% set PAGE_TITLE = "Zulip — organized team chat" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Zulip is an organized team chat app for distributed
|
||||
teams of all sizes." %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
{% include 'zerver/marketing_nav.html' %}
|
||||
<div class="portico-hello-page">
|
||||
<div class='body-bg'>
|
||||
<div class='body-bg__layer'></div>
|
||||
</div>
|
||||
<div class="screen-1">
|
||||
<h1>Organized chat for distributed teams</h1>
|
||||
<div class='appshot-1'>
|
||||
<picture>
|
||||
<!-- dark theme is only with webp images, since webp support was at the same time or earlier than prefers-color-scheme https://caniuse.com/?search=prefers-color-scheme https://caniuse.com/webp -->
|
||||
<source class='appshot-1__img'
|
||||
type="image/webp"
|
||||
srcset="{{ static('images/landing-page/hello/generated/screen-1-dark-2x.webp') }}"
|
||||
media="(min-width: 941px) and (prefers-color-scheme: dark)"/>
|
||||
<source class='appshot-1__img'
|
||||
type="image/webp"
|
||||
srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-dark-2x.webp') }}"
|
||||
media="(max-width: 940px) and (prefers-color-scheme: dark)"/>
|
||||
<source width="1095" height="496" class='appshot-1__img'
|
||||
type="image/webp"
|
||||
srcset="{{ static('images/landing-page/hello/generated/screen-1-2x.webp') }}"
|
||||
media="(min-width: 941px)"/>
|
||||
<source class='appshot-1__img'
|
||||
type="image/webp"
|
||||
srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-2x.webp') }}"
|
||||
media="(max-width: 940px)"/>
|
||||
<source class='appshot-1__img'
|
||||
srcset="{{ static('images/landing-page/hello/generated/screen-1-mobile-2x.jpg') }}"
|
||||
media="(max-width: 940px)"/>
|
||||
<img alt="" width="1095" height="496" class='appshot-1__img' src="{{ static('images/landing-page/hello/generated/screen-1-2x.jpg') }}"/>
|
||||
</picture>
|
||||
<div class="cta-buttons">
|
||||
<a href="{{ 'https://chat.zulip.org' if not development_environment}}/?show_try_zulip_modal">
|
||||
See how we use Zulip
|
||||
<div class="cta-desc">No account needed</div>
|
||||
</a>
|
||||
<a href="/new/">
|
||||
Create an organization
|
||||
<div class="cta-desc">Anonymously if you like</div>
|
||||
</a>
|
||||
<a href="/request-demo/">
|
||||
Contact sales
|
||||
<div class="cta-desc">Talk to a helpful human</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="client-logos">
|
||||
<div class='client-logos-div client-logos__logo_pilot'></div>
|
||||
<div class='client-logos-div client-logos__logo_linux_foundation'></div>
|
||||
<div class='client-logos-div client-logos__logo_tum'></div>
|
||||
<div class='client-logos-div client-logos__logo_wikimedia'></div>
|
||||
<div class='client-logos-div client-logos__logo_rust'></div>
|
||||
<div class='client-logos-div client-logos__logo_dr_on_demand'></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="screen-2">
|
||||
<div class="screen-2__container">
|
||||
<div>
|
||||
<h2 class="screen-2__header">Designed for async conversations.</h2>
|
||||
<div class="screen-2__subtitle">Here's what it looks like in action.</div>
|
||||
</div>
|
||||
<div class="screen-2__tabs">
|
||||
<input type="radio" id="screen-2__tab1" name="screen-2__tabs-radio" class="screen-2__tab-input" checked />
|
||||
<input type="radio" id="screen-2__tab2" name="screen-2__tabs-radio" class="screen-2__tab-input" />
|
||||
<input type="radio" id="screen-2__tab3" name="screen-2__tabs-radio" class="screen-2__tab-input" />
|
||||
<input type="radio" id="screen-2__tab4" name="screen-2__tabs-radio" class="screen-2__tab-input" />
|
||||
<input type="radio" id="screen-2__tab5" name="screen-2__tabs-radio" class="screen-2__tab-input" />
|
||||
<ul>
|
||||
<li>
|
||||
<label for="screen-2__tab1">
|
||||
Get an overview of conversations with unread messages in your inbox.
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label for="screen-2__tab2">
|
||||
Focus on one conversation at a time, no matter how many others are happening.
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label for="screen-2__tab3">
|
||||
Reply to each conversation in context.
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label for="screen-2__tab4">
|
||||
Conversations continue seamlessly over time.
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label for="screen-2__tab5">
|
||||
Start a new conversation by giving it a brief topic.
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="screen-2__tabs-content">
|
||||
<div class="screen-2__tab-image">
|
||||
<picture>
|
||||
<source
|
||||
srcset="{{ static('images/landing-page/hello/generated/01-tab-cont-dark-2x.jpg') }}"
|
||||
media="(prefers-color-scheme: dark)" />
|
||||
<img alt="" src="{{ static('images/landing-page/hello/generated/01-tab-cont-2x.jpg') }}"/>
|
||||
</picture>
|
||||
</div>
|
||||
<div class="screen-2__tab-image">
|
||||
<picture>
|
||||
<source
|
||||
srcset="{{ static('images/landing-page/hello/generated/02-tab-cont-dark-2x.jpg') }}"
|
||||
media="(prefers-color-scheme: dark)" />
|
||||
<img alt="" src="{{ static('images/landing-page/hello/generated/02-tab-cont-2x.jpg') }}"/>
|
||||
</picture>
|
||||
</div>
|
||||
<div class="screen-2__tab-image">
|
||||
<picture>
|
||||
<source
|
||||
srcset="{{ static('images/landing-page/hello/generated/03-tab-cont-dark-2x.jpg') }}"
|
||||
media="(prefers-color-scheme: dark)" />
|
||||
<img alt="" src="{{ static('images/landing-page/hello/generated/03-tab-cont-2x.jpg') }}"/>
|
||||
</picture>
|
||||
</div>
|
||||
<div class="screen-2__tab-image">
|
||||
<picture>
|
||||
<source
|
||||
srcset="{{ static('images/landing-page/hello/generated/04-tab-cont-dark-2x.jpg') }}"
|
||||
media="(prefers-color-scheme: dark)" />
|
||||
<img alt="" src="{{ static('images/landing-page/hello/generated/04-tab-cont-2x.jpg') }}"/>
|
||||
</picture>
|
||||
</div>
|
||||
<div class="screen-2__tab-image">
|
||||
<picture>
|
||||
<source
|
||||
srcset="{{ static('images/landing-page/hello/generated/05-tab-cont-dark-2x.jpg') }}"
|
||||
media="(prefers-color-scheme: dark)" />
|
||||
<img alt="" src="{{ static('images/landing-page/hello/generated/05-tab-cont-2x.jpg') }}"/>
|
||||
</picture>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="screen-3">
|
||||
<div class="screen-3__container">
|
||||
<div class="screen-3__content">
|
||||
<h2 class="screen-3__header">Zulip empowers remote and flexible work.</h2>
|
||||
<div class="screen-3__subtitle">Check out these <a href="/case-studies/">case studies</a> to see the impact.</div>
|
||||
<div class='screen-3__quotes'>
|
||||
<a class="quote" href="/case-studies/atolio/">
|
||||
<div class="quote__text">
|
||||
<h4>Work better together</h4>
|
||||
The first-class threads in Zulip are <strong>absolutely critical to how we work</strong>. So many people on Hacker News talk about using Zulip — I'm so glad we joined them!
|
||||
</div>
|
||||
<div class="quote__source">
|
||||
<strong>David Lanstein</strong>, <i>co-founder and CEO of Atolio</i>
|
||||
</div>
|
||||
</a>
|
||||
<a class="quote" href="/case-studies/idrift/">
|
||||
<div class="quote__text">
|
||||
<h4>Empower leaders</h4>
|
||||
Using Zulip significantly <strong>increases the size of the team</strong> for which a manager can meaningfully know what’s going on.
|
||||
</div>
|
||||
<div class="quote__source">
|
||||
<strong>Gaute Lund</strong>, <i>co-founder of iDrift AS</i>
|
||||
</div>
|
||||
</a>
|
||||
<a class="quote" href="/case-studies/rust/">
|
||||
<div class="quote__text">
|
||||
<h4>Make decisions faster</h4>
|
||||
Some decisions that were blocked for months on
|
||||
GitHub were <strong>resolved within 24 hours</strong> on Zulip.
|
||||
</div>
|
||||
<div class="quote__source">
|
||||
<strong>Josh Triplett</strong>, <i>Rust Language team co-lead</i>
|
||||
</div>
|
||||
</a>
|
||||
<a class="quote" href="https://monadical.com/posts/how-to-make-remote-work-part-two-zulip.html">
|
||||
<div class="quote__text">
|
||||
<h4>Simplify knowledge management</h4>
|
||||
Using Zulip in a way that feels natural creates
|
||||
an <strong>organized repository</strong> of knowledge <i>as a
|
||||
side effect</i>.
|
||||
</div>
|
||||
<div class="quote__source">
|
||||
<strong>Max McCrea</strong>, <i>Co-founder of Monadical</i>
|
||||
</div>
|
||||
</a>
|
||||
<a class="quote" href="/case-studies/end-point/">
|
||||
<div class="quote__text">
|
||||
<h4>Organize 100s of workstreams</h4>
|
||||
Other apps like Slack would struggle with
|
||||
organizing the flow of information in a complex
|
||||
organization like ours. Zulip’s UI makes it easy
|
||||
to <strong>access all the information you need</strong>.
|
||||
</div>
|
||||
<div class="quote__source">
|
||||
<strong>Jon Jensen</strong>, <i>CTO of End Point
|
||||
Dev</i>
|
||||
</div>
|
||||
</a>
|
||||
<a class="quote" href="/case-studies/gut-contact/">
|
||||
<div class="quote__text">
|
||||
<h4>Communicate with efficiency</h4>
|
||||
I don’t like going back to Slack now. It’s just
|
||||
not as efficient a way to <strong>organize
|
||||
communication</strong>.
|
||||
</div>
|
||||
<div class="quote__source">
|
||||
<strong>James van Lommel</strong>, <i>Director of Engineering at Semsee</i>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="screen-4">
|
||||
<div class="screen-4__container">
|
||||
<div class="screen-4__content">
|
||||
<img alt="" class="switch-diagram mirror-image" loading="lazy" width="300"
|
||||
src="{{ static('images/landing-page/education/privacy.svg') }}"
|
||||
/>
|
||||
<div class="screen-4__desc">
|
||||
<h2 class="screen-4__header">You own your data</h2>
|
||||
<p>
|
||||
Escape corporate vendor lock-in. You can <a
|
||||
href="/self-hosting/">self-host</a> Zulip’s 100% <a
|
||||
href="https://github.com/zulip/zulip#readme">open-source</a>
|
||||
software for full data sovereignty, or start
|
||||
with a convenient <a href="/plans">cloud
|
||||
solution</a> and <a
|
||||
href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#import-into-a-new-zulip-server">move</a>
|
||||
any time.
|
||||
</p>
|
||||
<p>
|
||||
We make it easy to switch from <a
|
||||
href="/help/moving-from-slack">Slack</a>, <a
|
||||
href="/help/moving-from-teams">Teams</a> and <a
|
||||
href="/help/migrating-from-other-chat-tools">other
|
||||
tools</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="badges">
|
||||
<a class="badge-getapp" href="https://www.getapp.com/collaboration-software/web-collaboration/category-leaders">
|
||||
<img alt="" src="https://brand-assets.getapp.com/badge/05c62fe0-cb84-41bf-ae2d-cd0105373a2c.svg"/>
|
||||
</a>
|
||||
<a class="badge-capterra" href="https://www.capterra.com/p/197945/Zulip/">
|
||||
<img alt="" src="https://brand-assets.capterra.com/badge/d5bcfca3-94a5-496d-90f2-4ffc71c51eb7.svg"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="screen-5">
|
||||
<div class="screen-5__container">
|
||||
<h2 class="screen-5__header">Curious to learn more?</h2>
|
||||
<div class="screen-5__subtitle">Dive into our detailed guide for organizations like yours.</div>
|
||||
<div class="screen-5__cards">
|
||||
<a href="/for/business/" class="card">
|
||||
<div class="card__text">
|
||||
<h4 class="right-arrow-icon">Business</h4>
|
||||
Organizations from small businesses to enterprises communicate more efficiently.
|
||||
</div>
|
||||
</a>
|
||||
<a href="/for/research/" class="card">
|
||||
<div class="card__text">
|
||||
<h4 class="right-arrow-icon">Research</h4>
|
||||
For your group, lab, department or scientific field.
|
||||
</div>
|
||||
</a>
|
||||
<a href="/for/education/" class="card">
|
||||
<div class="card__text">
|
||||
<h4 class="right-arrow-icon">Education</h4>
|
||||
Communication hub for classes, in-person or online.
|
||||
</div>
|
||||
</a>
|
||||
<a href="/for/open-source/" class="card">
|
||||
<div class="card__text">
|
||||
<h4 class="right-arrow-icon">Open-source</h4>
|
||||
Grow and engage your community.
|
||||
</div>
|
||||
</a>
|
||||
<a href="/for/communities/" class="card">
|
||||
<div class="card__text">
|
||||
<h4 class="right-arrow-icon">Non-profits, Governments</h4>
|
||||
Free or highly-discounted plans are available for most non-business uses.
|
||||
</div>
|
||||
</a>
|
||||
<a href="/for/events/" class="card">
|
||||
<div class="card__text">
|
||||
<h4 class="right-arrow-icon">Events and conferences</h4>
|
||||
For organizers and attendees at your conference, workshop, or hackathon.
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include 'zerver/footer.html' %}
|
||||
{% endblock %}
|
||||
49
templates/corporate/history.html
Normal file
49
templates/corporate/history.html
Normal file
@@ -0,0 +1,49 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "History of the Zulip project" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Learn how Zulip grew from a small startup to become a
|
||||
foundation-stewarded project with the most active open-source development
|
||||
community of any team chat software." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page">
|
||||
<div class="hero bg-pycon">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">History of the Zulip project</h1>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="photo-description">
|
||||
Zulip at the PyCon Sprints in Portland, Oregon.
|
||||
Over seventy-five people sprinted during the four day event.
|
||||
</div>
|
||||
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/history.md') }}
|
||||
</div>
|
||||
|
||||
|
||||
<div class="inner-content history markdown">
|
||||
<div class="sponsors">
|
||||
<div class="sponsor-picture">
|
||||
<a href="https://seedfund.nsf.gov/">
|
||||
<img src="{{ static('images/landing-page/history/nsf-logo.png') }}" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
<div class="sponsor-picture">
|
||||
<a href="https://summerofcode.withgoogle.com/">
|
||||
<img src="{{ static('images/landing-page/history/gsoc-logo.png') }}" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
354
templates/corporate/history.md
Normal file
354
templates/corporate/history.md
Normal file
@@ -0,0 +1,354 @@
|
||||
## Startup inspired by MIT's messaging system
|
||||
|
||||
Zulip was originally created by Zulip, Inc., a small startup in Cambridge,
|
||||
Massachusetts. Zulip, Inc. was founded in August 2012 by the
|
||||
[MIT](https://www.mit.edu/) alumni team that previously created the
|
||||
[Ksplice](https://www.ksplice.com) software for live-patching a running Linux
|
||||
kernel. Zulip was inspired by the [BarnOwl](https://barnowl.mit.edu/) client
|
||||
for the [Zephyr](https://en.wikipedia.org/wiki/Zephyr_(protocol)) instant
|
||||
messaging protocol, and the incredible community that Zephyr supported at MIT.
|
||||
|
||||
## Early acquisition by Dropbox
|
||||
|
||||
Zulip, Inc. was acquired by [Dropbox](https://www.dropbox.com/) in
|
||||
early 2014, while the product was still in private beta, which put
|
||||
Zulip development on hold. However, because they loved Zulip's
|
||||
topic-based threading experience, Zulip's early customers [continued
|
||||
using Zulip all through that time](/case-studies/recurse-center/).
|
||||
|
||||
> We strongly prefer Zulip to other options for several reasons – its message
|
||||
> threading being a key one.
|
||||
>
|
||||
> — [Nick Bergson-Shilcock](https://github.com/nicholasbs), Recurse Center
|
||||
> [co-founder and CEO](https://www.recurse.com/team), September 2015
|
||||
|
||||
## Zulip released as open source!
|
||||
|
||||
In 2015, a year and a half after the acquisition, Dropbox generously decided to
|
||||
[release Zulip as open-source software](https://blogs.dropbox.com/tech/2015/09/open-sourcing-zulip-a-dropbox-hack-week-project/).
|
||||
|
||||
A group of Zulip's developers [and early
|
||||
users](https://www.recurse.com/blog/90-zulip-supporting-oss-at-the-recurse-center)
|
||||
spent Dropbox's Hack Week preparing Zulip's code base for release. The
|
||||
entire product, including the server, Android and iOS mobile apps, and
|
||||
desktop apps for Mac, Linux and Windows, was released [under the Apache
|
||||
2 license](https://github.com/zulip/zulip/blob/main/LICENSE) with
|
||||
complete version control history.
|
||||
|
||||
The Zulip community is incredibly grateful to both Dropbox and those
|
||||
enthusiastic early users for making the Zulip open source project possible.
|
||||
Dropbox has no ongoing relationship with the Zulip project.
|
||||
|
||||
## Zulip's second founding
|
||||
|
||||
At first, the [Zulip open-source project](https://github.com/zulip/zulip#readme)
|
||||
was maintained by the project's founder and leader [Tim
|
||||
Abbott](/team/#the-core-team) on nights and weekends. In the months following
|
||||
the open-source release, the project quickly gained contributors and users.
|
||||
|
||||
It soon became clear that guiding the contributor community in developing a
|
||||
world-class team chat product would require leadership from a dedicated team.
|
||||
Thus, in April 2016, Tim Abbott founded a [mission-driven](/values/) company,
|
||||
Kandra Labs, to steward and financially sustain Zulip’s development.
|
||||
Incorporating as a business has helped Zulip attract top talent, and has made
|
||||
Zulip eligible for [large innovation grants](https://seedfund.nsf.gov/) from the
|
||||
US National Science Foundation, which Kandra Labs was awarded in 2017 and 2018.
|
||||
|
||||
## Early days as an open-source company
|
||||
|
||||
In its early days, the Zulip community was focused on three main goals:
|
||||
|
||||
- Turning an innovative product (that had been in private beta when its
|
||||
development was put on hold) into a **polished application**, complete with
|
||||
enterprise-ready features like [single sign-on
|
||||
options](/help/configure-authentication-methods) and [hundreds of
|
||||
integrations](/integrations/).
|
||||
|
||||
- Making Zulip more **widely available**. In mid-2017, Kandra Labs
|
||||
launched two products: a hosted [Zulip Cloud](/plans/) service, and
|
||||
an enterprise support offering for [self-hosted](/self-hosting/)
|
||||
deployments. Zulip’s original customers were migrated from Dropbox’s
|
||||
servers to the new Zulip Cloud offering, fully preserving their chat
|
||||
history. Despite the acquisition by Dropbox, Zulip's customers have
|
||||
thus [enjoyed uninterrupted
|
||||
service](https://blog.zulip.com/2021/12/17/why-zulip-will-stand-the-test-of-time/)
|
||||
since 2013.
|
||||
|
||||
- **Building a vibrant community around the project**, with effort and
|
||||
care dedicated to making it [easy to get
|
||||
started](https://zulip.readthedocs.io/en/latest/overview/contributing.html)
|
||||
contributing to Zulip. The Zulip development community gathered at
|
||||
PyCon sprints [in
|
||||
2016](https://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy/),
|
||||
and led the largest PyCon sprint ever [in
|
||||
2017](https://us.pycon.org/2017/community/sprints/), with over 75
|
||||
developers contributing to Zulip over course of the 4-day event. By
|
||||
late 2016, [more than 150
|
||||
people](https://github.com/zulip/zulip/graphs/contributors) from all
|
||||
over the world had contributed almost 1000 pull requests to the
|
||||
software, and the Zulip project was moving faster than when the
|
||||
original startup employed 11 full-time engineers. Zulip also began
|
||||
mentoring [Google Summer of
|
||||
Code](https://developers.google.com/open-source/gsoc/) contributors
|
||||
in 2016, and continues to [mentor 15-20 outreach program
|
||||
participants](https://zulip.readthedocs.io/en/latest/outreach/overview.html)
|
||||
every year.
|
||||
|
||||
We are proud to have achieved those early goals for the
|
||||
project.
|
||||
|
||||
## Zulip continues to thrive
|
||||
|
||||
These days, we regularly hear from users that they prefer Zulip's user
|
||||
experience to that of team chat products produced by some of the
|
||||
world's largest companies. More than 1000 people have contributed a
|
||||
total of over 60,000 commits to the Zulip project, which has more than
|
||||
16 thousand stars on GitHub.
|
||||
|
||||
In 2020, Zulip experienced an extraordinary increase in usage as a result of
|
||||
the Covid-19 pandemic changing how people work. During this extremely difficult
|
||||
time, we found joy in hearing from users about how Zulip has helped them make
|
||||
[remote work](/for/business/), [research collaborations](/for/research/),
|
||||
[teaching](/for/education/), and [events and conferences](/for/events/)
|
||||
successful.
|
||||
|
||||
Starting August 2022, [Slack’s free plan change caused an
|
||||
exodus](https://blog.zulip.com/2022/08/26/why-slacks-free-plan-change-is-causing-an-exodus/)
|
||||
of open-source projects, researchers, and a wide variety of other
|
||||
negatively impacted communities to Zulip and other chat
|
||||
platforms. [Data imports](/help/import-from-slack) from Slack into
|
||||
Zulip Cloud increased an incredible 40x in the month after Slack’s
|
||||
[announcement](https://slack.com/blog/news/pricing-and-plan-updates).
|
||||
|
||||
In 2023, Zulip earned first place in [GetApp’s Collaboration Software Category
|
||||
Leaders
|
||||
report](https://www.getapp.com/collaboration-software/web-collaboration/category-leaders/).
|
||||
With over 100 reviews on Capterra, Zulip's 4.8 star rating beat out reviews for
|
||||
other team chat apps, earning Capterra's [Best Value
|
||||
badge](https://www.capterra.com/p/197945/Zulip/).
|
||||
|
||||
Since then, Zulip has continued to provide a user-respecting
|
||||
[alternative](https://blog.zulip.com/2024/11/04/choosing-a-team-chat-app/) to
|
||||
team chat apps developed by mega-corporations.
|
||||
|
||||
## The Zulip Foundation
|
||||
|
||||
In 2026, we [announced the
|
||||
creation](https://blog.zulip.com/2026/05/15/announcing-zulip-foundation/) of a
|
||||
nonprofit, independent
|
||||
Zulip Foundation, which became the new steward of the Zulip project. Kandra
|
||||
Labs is now fully owned by the Zulip Foundation, and remains committed to being
|
||||
a trustworthy, transparent vendor for all our customers.
|
||||
|
||||
The new structure provides stability, a renewed commitment to our
|
||||
[values](/values), and opportunities for charitable fundraising to support our
|
||||
mission.
|
||||
|
||||
## Press highlights
|
||||
|
||||
- June 2025: Zulip's head of product is interviewed about how we’ve built a
|
||||
welcoming open-source community around Zulip [on the Business of Open Source
|
||||
podcast](https://open.spotify.com/episode/3KMLGk4buv8zfDxTjVnChw).
|
||||
|
||||
- September 2024: An in-depth interview with Zulip’s head of product [on The
|
||||
Changelog podcast](https://changelog.com/podcast/607): *“We talk about Zulip’s
|
||||
origins, how it’s open source, the way it’s led, no VC funding, what makes it
|
||||
different/better, how you can self-host it or use their cloud, moving to
|
||||
Zulip, contributing and being a part of the community… all the things.”*
|
||||
|
||||
- June 2024: An in-depth [review of
|
||||
Zulip](https://www.hostingadvice.com/blog/emerging-open-source-team-chat-app-set-to-rival-slack/)
|
||||
is published on [HostingAdvice.com](https://www.hostingadvice.com/).
|
||||
|
||||
> An excellent solution for teams collaborating across different time zones.
|
||||
>
|
||||
> — [Zulip
|
||||
> review](https://www.hostingadvice.com/blog/emerging-open-source-team-chat-app-set-to-rival-slack/)
|
||||
> on *HostingAdvice.com*
|
||||
|
||||
- March 2023: A long-form [video
|
||||
interview](https://www.youtube.com/watch?v=cbj59mVwErg) with Zulip’s founder
|
||||
and project leader about Zulip’s history, our goals for the product and how we
|
||||
approach its design, Zulip’s engineering philosophy, and more produced by
|
||||
[FUTO](https://futo.org/).
|
||||
|
||||
- March 2022:
|
||||
[Deep-dive](https://opensource.com/article/22/3/open-source-chat-zulip) into
|
||||
how one open-source community uses Zulip published on
|
||||
[opensource.com](https://opensource.com/).
|
||||
|
||||
- June 2021: Zulip is covered in a [VentureBeat
|
||||
article](https://venturebeat.com/2021/06/18/cutting-slack-when-open-source-and-team-chat-tools-collide/)
|
||||
about open-source Slack alternatives.
|
||||
|
||||
- February 2021: TechRadar publishes a [Zulip overview and installation
|
||||
walkthrough](https://www.techradar.com/how-to/set-up-your-own-slack-like-chat-system-on-linux).
|
||||
|
||||
- July 2021: An in-depth [review of
|
||||
Zulip](https://www.theregister.com/2021/07/28/zulip_open_source_chat_collaboration_software/)
|
||||
is published in *[The Register](https://www.theregister.com)*.
|
||||
|
||||
> In fact now it seems strange to me to just fire off messages in Slack with no
|
||||
> subject – that's chaos, madness. The genius of subject lines is that you can
|
||||
> quickly and easily catch up on the messages you missed in your off-hours...
|
||||
> This feature alone saves me hours a week.
|
||||
>
|
||||
> — [Zulip
|
||||
> review](https://www.theregister.com/2021/07/28/zulip_open_source_chat_collaboration_software/)
|
||||
> in *The Register*
|
||||
|
||||
- [July
|
||||
2021](https://www.quantamagazine.org/lean-computer-program-confirms-peter-scholze-proof-20210728/)
|
||||
and [October
|
||||
2020](https://www.quantamagazine.org/building-the-mathematical-library-of-the-future-20201001/):
|
||||
Zulip earns mentions in Quanta Magazine articles about the [formalization of
|
||||
mathematics](/case-studies/lean/).
|
||||
|
||||
> Every day, dozens of like-minded mathematicians gather on an online forum
|
||||
> called Zulip to build what they believe is the future of their field.
|
||||
>
|
||||
> — *Quanta Magazine*, [“Building the Mathematical Library of the
|
||||
> Future”](https://www.quantamagazine.org/building-the-mathematical-library-of-the-future-20201001/)
|
||||
|
||||
- November 2020: An interview with Tim Abbott is [featured in Linux
|
||||
Format](https://linuxformat.com/archives?issue=269).
|
||||
|
||||
- September 2020: [TFiR](https://www.tfir.io/) publishes an [in-depth video
|
||||
interview](https://www.tfir.io/zulip-is-slack-for-busy-project-managers/) with
|
||||
Zulip founder and lead developer Tim Abbott.
|
||||
|
||||
- July 2017: Podcast [interview with Tim
|
||||
Abbott](https://www.pythonpodcast.com/zulip-chat-with-tim-abbott-episode-118/)
|
||||
is featured on the Python podcast
|
||||
[Podcast.__init__](https://www.pythonpodcast.com/about/).
|
||||
|
||||
## Major server releases and product announcements
|
||||
|
||||
- April 2026: [Zulip Server 12.0
|
||||
released](https://blog.zulip.com/2026/04/27/zulip-12-0-released/), with almost
|
||||
5500 new commits. 160 people contributed commits to Zulip since the 11.0
|
||||
release.
|
||||
|
||||
- August 2025: [Zulip Server 11.0
|
||||
released](https://blog.zulip.com/2025/08/13/zulip-11-0-released/), with over
|
||||
3300 new commits. 76 people contributed commits to Zulip since the 10.0
|
||||
release.
|
||||
|
||||
- June 2025: Zulip’s next-generation mobile app for Android and iOS, built on
|
||||
Flutter,
|
||||
[becomes](https://blog.zulip.com/2025/06/17/flutter-mobile-app-launched/) the
|
||||
official mobile app.
|
||||
|
||||
- March 2025: [Zulip Server 10.0
|
||||
released](https://blog.zulip.com/2025/03/20/zulip-10-0-released/), with over
|
||||
5200 new commits. 121 people contributed commits to Zulip since the 9.0
|
||||
release.
|
||||
|
||||
- March 2025: Zulip
|
||||
[announces](https://blog.zulip.com/2025/03/20/flexible-permissions-management/)
|
||||
a new flexible system for permissions management. Zulip users can now grant
|
||||
permissions across the app to any combination of roles, groups, and individual
|
||||
users.
|
||||
|
||||
- July 2024: [Zulip Server 9.0
|
||||
released](https://blog.zulip.com/2024/07/25/zulip-9-0-released/), with over
|
||||
5300 new commits. 124 people contributed commits to Zulip since the 8.0
|
||||
release.
|
||||
|
||||
- December 2023: [Zulip Server 8.0
|
||||
released](https://blog.zulip.com/2023/12/15/zulip-8-0-released/), with over
|
||||
4700 new commits. 116 people contributed commits to Zulip since the 7.0
|
||||
release. Zulip announces new [plans](/plans#self-hosted) for self-hosted
|
||||
customers.
|
||||
|
||||
- May 2023: [Zulip Server 7.0
|
||||
released](https://blog.zulip.com/2023/05/31/zulip-7-0-released/), with over
|
||||
3800 new commits. 107 people contributed commits to Zulip since the 6.0
|
||||
release.
|
||||
|
||||
- November 2022: [Zulip Server 6.0
|
||||
released](https://blog.zulip.com/2022/11/17/zulip-6-0-released/), with over
|
||||
3400 new commits. 118 people contributed commits to Zulip since the 5.0
|
||||
release.
|
||||
|
||||
- May 2022: Zulip
|
||||
[announces](https://blog.zulip.com/2022/05/05/public-access-option/) the
|
||||
general availability of a [public access option](/help/public-access-option).
|
||||
Open-source projects and other open communities can now offer one-click access
|
||||
(no login required!) to part or all of their Zulip chat.
|
||||
|
||||
- March 2022: [Zulip Server 5.0
|
||||
released](https://blog.zulip.com/2022/03/29/zulip-5-0-released/), with over
|
||||
7000 new commits. 157 people contributed commits to Zulip since the 4.0
|
||||
release.
|
||||
|
||||
- July 2021: In response to [interest from educators](/case-studies/ucsd/),
|
||||
Zulip
|
||||
[launches](https://blog.zulip.com/2021/07/26/zulip-for-education-launch/) a
|
||||
dedicated [Zulip for Education](/for/education/) offering.
|
||||
|
||||
> Zulip has the best user experience of all the chat apps I’ve tried. With the
|
||||
> discussion organized by topic within each channel, Zulip is the only app that
|
||||
> makes hundreds of conversations manageable.
|
||||
>
|
||||
> — [Tobias Lasser](https://ciip.in.tum.de/people/lasser.html), lecturer at the
|
||||
> Technical University of Munich Department of Informatics [[customer
|
||||
> story](/case-studies/tum/)]
|
||||
|
||||
- May 2021: [Zulip Server 4.0
|
||||
released](https://blog.zulip.com/2021/05/13/zulip-4-0-released/), with over 4300
|
||||
new commits by 137 contributors.
|
||||
|
||||
> This has been an unusually long release cycle, because I took a few months off
|
||||
> work on Zulip to welcome my new daughter Zoe. Coming back to work was a great
|
||||
> stress-test of Zulip’s asynchronous model: I received over 20,000 messages in
|
||||
> chat.zulip.org during my paternity leave. I really enjoyed reading everything
|
||||
> and replying to the hundreds of topics where I had something to contribute or
|
||||
> someone to thank. Systematically reading months of history would have been
|
||||
> impossible with any other tool!
|
||||
>
|
||||
> —Tim Abbott, Zulip founder and lead developer, [Zulip 4.0 release blog
|
||||
> post](https://blog.zulip.com/2021/05/13/zulip-4-0-released/)
|
||||
|
||||
- July 2020: [Zulip Server 3.0
|
||||
released](https://blog.zulip.com/2020/07/16/zulip-3-0-released/), with 4100
|
||||
new commits by 110 contributors.
|
||||
|
||||
- March 2019: [Zulip Server 2.1
|
||||
released](https://blog.zulip.com/2019/12/13/zulip-2-1-released/), with 3190
|
||||
new commits by 123 contributors.
|
||||
|
||||
- March 2019: [Zulip Server 2.0
|
||||
released](https://blog.zulip.com/2019/03/01/zulip-2-0-released/), with 1900
|
||||
new commits by 87 contributors.
|
||||
|
||||
- November 2018: [Zulip Server 1.9
|
||||
released](https://blog.zulip.com/2018/11/07/zulip-1-9-released/), with 3300
|
||||
new commits by 81 contributors.
|
||||
|
||||
- April 2018: [Zulip Server 1.8
|
||||
released](https://blog.zulip.com/2018/04/18/zulip-1-8-released/), with over
|
||||
3500 new commits by 131 contributors.
|
||||
|
||||
- October 2017: [Zulip Server 1.7
|
||||
released](https://blog.zulip.com/2017/10/25/zulip-server-1-7-released/), with 3675
|
||||
new commits by about 100 contributors.
|
||||
|
||||
- June 2017: [Zulip Server 1.6
|
||||
released](https://blog.zulip.com/2017/06/06/zulip-server-1-6-released/), with
|
||||
over 3100 new commits by more than 150 contributors.
|
||||
|
||||
## Support
|
||||
|
||||
- Zulip is on [GitHub Sponsors](https://github.com/sponsors/zulip),
|
||||
[Patreon](https://www.patreon.com/zulip), and [Open
|
||||
Collective](https://opencollective.com/zulip). Our [blog
|
||||
post](https://blog.zulip.com/2021/04/28/why-zulip-is-on-github-sponsors/)
|
||||
explains Zulip’s values-driven approach and why we ask for support.
|
||||
|
||||
- Kandra Labs has been supported by nearly $1M in <a
|
||||
href="https://seedfund.nsf.gov/">SBIR grants</a> from the US National Science
|
||||
Foundation.
|
||||
|
||||
- Zulip has benefited enormously from the work of over 100 contributors
|
||||
supported by [Google Summer of Code](https://summerofcode.withgoogle.com/).
|
||||
188
templates/corporate/jobs.html
Normal file
188
templates/corporate/jobs.html
Normal file
@@ -0,0 +1,188 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Jobs | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "We're hiring! Learn about our openings and how to
|
||||
apply." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing jobs why-page">
|
||||
<div class="hero bg-pycon drone">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Work with us</h1>
|
||||
<p>We're 100% open source, and we're hiring.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
<div class="open-positions">
|
||||
<h1 id="open-positions">Open positions</h1>
|
||||
<p>
|
||||
|
||||
To apply for an open position, please send your <b>resume</b>
|
||||
and a brief <b>cover letter</b> (which can be in the
|
||||
body of your email) to the email provided in the
|
||||
description for the opening. Your cover letter should
|
||||
explain what makes you excited about working at Zulip in
|
||||
the role you're applying for. Applications without a
|
||||
cover letter will not be considered.
|
||||
</p>
|
||||
<p>
|
||||
If you are an experienced
|
||||
engineer, and you believe that your background would be
|
||||
a great fit for Zulip, please email us at <a
|
||||
href="mailto:jobs+engineer@zulip.com">jobs+engineer@zulip.com</a>
|
||||
with your resume and cover letter even if you don't see
|
||||
an open role that looks like the right fit.
|
||||
</p>
|
||||
<p>
|
||||
<i>All openings are remote.</i>
|
||||
</p>
|
||||
<hr/>
|
||||
<h2 id="leader">Leadership team roles</h2>
|
||||
<p>
|
||||
<a href="/">Zulip</a> is an open-source team chat
|
||||
application designed for seamless remote and hybrid
|
||||
work. With conversations organized by topic, Zulip is <a
|
||||
href="/why-zulip">ideal</a> for both live and
|
||||
asynchronous communication. Zulip’s 100% open-source
|
||||
software is available as a <a href="/plans/#cloud">cloud
|
||||
service</a> or a
|
||||
<a href="/self-hosting">self-hosted solution</a>, and is
|
||||
used by thousands of organizations around the world.
|
||||
Zulip is a <a
|
||||
href="https://zulip.com/values/">values-focused</a>
|
||||
organization stewarded by the nonprofit <a
|
||||
href="https://blog.zulip.com/2026/05/15/announcing-zulip-foundation/">Zulip
|
||||
Foundation</a>.
|
||||
</p>
|
||||
<p>
|
||||
We are looking for experienced leaders familiar with Zulip
|
||||
with strengths in the following areas. A single candidate is
|
||||
not expected to cover all these areas.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>Technical</strong>: Technical leadership for a complex product (with web, desktop, and mobile apps) designed for reliability and maintainability.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Business</strong>: Business strategy and operations (finance, legal, payroll, etc.).
|
||||
</li>
|
||||
<li>
|
||||
<strong>Management</strong>: Thoughtfully managing a remote team.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Marketing</strong>: B2B marketing strategy and execution.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Sales</strong>: Inbound sales and partnership negotiations.
|
||||
</li>
|
||||
<li>
|
||||
<strong>Product</strong>: Managing a complex product that’s part of users’ daily workflows.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
We anticipate posting full job descriptions and
|
||||
starting to interview candidates in June or July of
|
||||
2026.
|
||||
</p>
|
||||
<p>
|
||||
<em>Email us at <a
|
||||
href="mailto:jobs+leader@zulip.com">jobs+leader@zulip.com</a>
|
||||
with your resume and cover letter if you're interested,
|
||||
and we’ll be in touch. Or learn more about <a
|
||||
href="https://zulip.com/jobs/#how-we-work">how we
|
||||
work</a>.</em>
|
||||
</p>
|
||||
<hr/>
|
||||
</div>
|
||||
<div class="how-we-work">
|
||||
<h1 id="how-we-work">
|
||||
How we work
|
||||
</h1>
|
||||
<p>
|
||||
<strong>Open source.</strong> The Zulip software is 100%
|
||||
free and open source. We're <a href="/team/">an
|
||||
open-source project</a> first, and we’re building an
|
||||
independent <a href="/values">sustainable business</a>
|
||||
as a means to support the project's growth and long-term
|
||||
future. We provide the same open-source code to our
|
||||
largest customers as to anyone with <code>git clone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Open project.</strong> The Zulip project is one where people
|
||||
really do show up through the Internet and start making real changes.
|
||||
That doesn’t happen by accident; it takes work and thoughtfulness. Most
|
||||
of us work remotely, and we discuss our code and our plans in public, in
|
||||
writing, primarily asynchronously, using Zulip and GitHub.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Inclusive community.</strong> The Zulip community is made up of a
|
||||
mixture of volunteers and professionals from all walks of life. Diversity is
|
||||
one of our strengths, and we strive to be a community that welcomes and
|
||||
supports people of all backgrounds and identities from anywhere in the world.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Globally distributed.</strong> Our company is
|
||||
headquartered in San Francisco, CA, but like our
|
||||
community, our ~15 person team works from around the
|
||||
world. We communicate primarily async, in the <a
|
||||
href="/development-community">Zulip development
|
||||
community</a> and <a href="https://github.com/zulip">on
|
||||
GitHub</a>. Our roles are open to all applicants without
|
||||
regard for location.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Maintainable software.</strong> Great
|
||||
software over time depends on a team’s shared
|
||||
understanding of a system and how to change it, as
|
||||
much as on the code itself. Beyond writing our
|
||||
code so it works today, we put equal effort into
|
||||
writing code, tests, comments, commit history,
|
||||
and <a href="https://zulip.readthedocs.io/en/latest/">documentation</a>
|
||||
clearly, to share with each other and future
|
||||
contributors our understanding of how and why it
|
||||
works, so we can build on it tomorrow.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="what-were-building">
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
<h1 id="what-were-building">
|
||||
What we're building
|
||||
</h1>
|
||||
<p>
|
||||
People working together need to communicate with their teammates, and they
|
||||
also need to tune out the conversation to get work done. Teams tired of
|
||||
wasting time in meetings move discussion to email; tired of waiting all
|
||||
day for email replies, move to a team chat like Slack or
|
||||
Microsoft Teams; and then
|
||||
team chat becomes an always-on meeting, leaving people constantly
|
||||
distracted, missing out on important conversations, or both.
|
||||
</p>
|
||||
<p>
|
||||
Zulip is reinventing chat so teams can accomplish more together. We've
|
||||
created a place where a conversation can shift seamlessly from the
|
||||
immediacy of chat to the reply-whenever efficiency of email, and back;
|
||||
where you can participate in the conversations that matter to you and
|
||||
efficiently tune out the rest, no matter whether you're there in real
|
||||
time, coming online after a morning hard at work, or returning from a
|
||||
vacation away from it.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
88
templates/corporate/partners.html
Normal file
88
templates/corporate/partners.html
Normal file
@@ -0,0 +1,88 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Partner program | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Zulip works with a variety of partners to deliver the
|
||||
product to customers, and integrate it with other tools in their workplace
|
||||
suite." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page partners-page">
|
||||
<div class="hero bg-pycon partners">
|
||||
<div class="bg-dimmer"></div>
|
||||
<h1 class="center">Partner program</h1>
|
||||
<p>Zulip works with a variety of partners to deliver the product,<br />
|
||||
and integrate it with other tools in the customer's workplace
|
||||
suite.
|
||||
</p>
|
||||
<div class="hero-buttons center">
|
||||
<a href="https://docs.google.com/forms/d/e/1FAIpQLScBoUMw8Nm2pWwh2RcNa_t_X-V9gXcuhAl-UVR_FxCReXHg4g/viewform?usp=sharing" class="button">
|
||||
Become a partner
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-grid">
|
||||
<div class="feature-row">
|
||||
<div class="feature-box">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Resellers
|
||||
</h1>
|
||||
<p>
|
||||
Help customers discover how Zulip can address their
|
||||
needs. Our partner onboarding kit helps you get started.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-box">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Value Added Resellers (VARs)
|
||||
</h1>
|
||||
<p>
|
||||
Support customer deployments. Build custom integrations
|
||||
with our <a href="/api">easy-to-use APIs</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-row">
|
||||
<div class="feature-box">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Managed Service Providers
|
||||
</h1>
|
||||
<p>
|
||||
Host and manage Zulip deployments, and customize Zulip's
|
||||
open-source software.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-box">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Hosting providers
|
||||
</h1>
|
||||
<p>
|
||||
Host Zulip's secure, easy to deploy software. Efficient
|
||||
multi-tenant hosting available.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-end">
|
||||
<div class="bottom-register-buttons extra_margin_before_footer">
|
||||
<div class="hero-buttons center">
|
||||
<a href="https://docs.google.com/forms/d/e/1FAIpQLScBoUMw8Nm2pWwh2RcNa_t_X-V9gXcuhAl-UVR_FxCReXHg4g/viewform?usp=sharing" class="button">
|
||||
Become a partner
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
223
templates/corporate/plans.html
Normal file
223
templates/corporate/plans.html
Normal file
@@ -0,0 +1,223 @@
|
||||
{% extends "zerver/base.html" %}
|
||||
{% set entrypoint = "plans-page" %}
|
||||
|
||||
{% set PAGE_TITLE = "Plans and pricing | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Sign up for a managed cloud solution, or self-host our 100\x25 open-source software. Get started for free." %}
|
||||
|
||||
|
||||
{% block content %}
|
||||
|
||||
{% if not is_self_hosted_realm %}
|
||||
{% include 'zerver/marketing_nav.html' %}
|
||||
{% endif %}
|
||||
|
||||
<div class="portico-pricing plans {% if is_self_hosted_realm %} showing-self-hosted {% else %} showing-cloud {% endif %}">
|
||||
<div class="body-bg">
|
||||
<div class="body-bg__layer"></div>
|
||||
</div>
|
||||
<div class="main">
|
||||
{% include "corporate/pricing_model.html" %}
|
||||
</div>
|
||||
|
||||
<!-- This is the subsection that displays with cloud plans. -->
|
||||
|
||||
<div class="additional-pricing-information cloud-additional-pricing">
|
||||
<div id="cloud-sponsorships" class="discounts-section">
|
||||
<header>
|
||||
<h2>Sponsorship and discounts</h2>
|
||||
<p>
|
||||
We sponsor over 1500 organizations.
|
||||
</p>
|
||||
</header>
|
||||
<div class="text-content">
|
||||
<div class="discounted-community-plan">
|
||||
<h3>Free Standard plan <a href="/help/zulip-cloud-billing#free-and-discounted-zulip-cloud-standard">eligibility</a>
|
||||
</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<span><a href="/for/open-source/">Open-source projects</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/for/research/">Research</a> in an academic setting</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Academic conferences and other non-profit <a href="/for/events/">events</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Most small non-profit organizations</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Most <a href="/for/communities/">communities</a> when the Free plan is not an option</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="discounted-business-plan">
|
||||
<h3>Special <a href="/help/zulip-cloud-billing#free-and-discounted-zulip-cloud-standard">discounted pricing</a></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<span><a href="/for/education/#feature-pricing">Education</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Organizations based in the developing world</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Most large non-profit organizations</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Many organizations with special circumstances that make regular pricing unaffordable</span>
|
||||
</li>
|
||||
</ul>
|
||||
<a href="{{ sponsorship_url }}" class="button sponsorship-button">Apply here</a>
|
||||
<p class="contact-note">
|
||||
Wondering if your organization will qualify, but not
|
||||
ready to request sponsorship yet? E-mail us at <a
|
||||
href="mailto:sales@zulip.com">sales@zulip.com</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="questions-section">
|
||||
<header>
|
||||
<h2>Other questions?</h2>
|
||||
<p>
|
||||
See our <a href="/help/zulip-cloud-billing">billing help page</a> for
|
||||
additional details.
|
||||
</p>
|
||||
</header>
|
||||
<div class="text-content">
|
||||
<ul>
|
||||
<li>
|
||||
<span><a href="/help/trying-out-zulip">How can I try out Zulip for free?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/help/zulip-cloud-or-self-hosting">How do I choose between Zulip Cloud and self-hosting?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/help/migrating-from-other-chat-tools">Can I import data from other chat tools?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/help/zulip-cloud-billing#temporary-users-and-guests">Are there discounts for guest users?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a
|
||||
href="/help/zulip-cloud-billing#how-does-having-10000-messages-of-search-history-on-zulip-cloud-free-work">How does limited search history on the Free plan work?</a></span>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
To discuss <b>enterprise pricing and services</b>, or for
|
||||
any other questions, contact
|
||||
<a href="mailto:sales@zulip.com">sales@zulip.com</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- This is the subsection that displays with self-hosted plans. -->
|
||||
|
||||
<div class="additional-pricing-information self-hosted-additional-pricing">
|
||||
<div id="self-hosted-sponsorships" class="discounts-section">
|
||||
<header>
|
||||
<h2>Sponsorship and discounts</h2>
|
||||
<p>
|
||||
Contact <a href="mailto:sales@zulip.com">sales@zulip.com</a>
|
||||
with any questions.
|
||||
</p>
|
||||
</header>
|
||||
<div class="text-content">
|
||||
<div class="discounted-community-plan">
|
||||
<h3>Community plan <a href="/help/self-hosted-billing#free-community-plan">eligibility</a></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<span><a href="/for/open-source/">Open-source projects</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/for/research/">Research</a> in an academic setting</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Academic conferences and other non-profit <a href="/for/events/">events</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Many <a href="/for/education/">education</a> and non-profit organizations</span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/for/communities/">Communities</a>
|
||||
and personal organizations (clubs, groups of
|
||||
friends, volunteer groups, etc.)</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="discounted-business-plan">
|
||||
<h3>Special <a href="/help/self-hosted-billing#paid-plan-discounts">discounted pricing</a></h3>
|
||||
<ul>
|
||||
<li>
|
||||
<span>Special <a href="/help/self-hosted-billing#education-pricing">education</a> and <a href="/help/self-hosted-billing#non-profit-pricing">non-profit</a> pricing</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Organizations based in the developing world</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Organizations where many users are not paid staff</span>
|
||||
</li>
|
||||
<li>
|
||||
<span>Many organizations with special circumstances that make regular pricing unaffordable</span>
|
||||
</li>
|
||||
</ul>
|
||||
{% if is_self_hosted_realm %}
|
||||
<a href="{{ sponsorship_url }}" class="button sponsorship-button">Apply here</a>
|
||||
{% else %}
|
||||
<a href="/help/self-hosted-billing#free-community-plan" class="button sponsorship-button">
|
||||
Log in to apply
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="questions-section">
|
||||
<header>
|
||||
<h2>Other questions?</h2>
|
||||
<p>
|
||||
See our <a href="/help/self-hosted-billing">billing help page</a> for
|
||||
additional details.
|
||||
</p>
|
||||
</header>
|
||||
<div class="text-content">
|
||||
<ul>
|
||||
<li>
|
||||
<span><a href="/help/trying-out-zulip">How can I try out Zulip for free?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/help/zulip-cloud-or-self-hosting">How do I choose between Zulip Cloud and self-hosting?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/help/self-hosted-billing#paid-plan-details-and-upgrades">How
|
||||
do I upgrade to a paid plan?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a
|
||||
href="/help/self-hosted-billing#free-community-plan">How do I apply for the Community plan?</a></span>
|
||||
</li>
|
||||
<li>
|
||||
<span><a href="/help/migrating-from-other-chat-tools">Can I import data from other chat tools?</a></span>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Contact <a href="mailto:sales@zulip.com">sales@zulip.com</a>
|
||||
with further questions or to discuss Enterprise pricing.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="feature-comparison-table">
|
||||
{% include "corporate/comparison_table_integrated.html" %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% if not is_self_hosted_realm %}
|
||||
{% include 'zerver/footer.html' %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
64
templates/corporate/policies/age-of-consent.md
Normal file
64
templates/corporate/policies/age-of-consent.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Age of consent by country
|
||||
|
||||
Our [Terms of Service](/policies/terms) state, in part:
|
||||
|
||||
> “if you are a child under the age of thirteen (13) or below the minimum age of
|
||||
> consent in your country, please do not attempt to register for or otherwise
|
||||
> use the Services or send us any personal information”
|
||||
|
||||
As a convenience, we provide a reference below of age of consent by country where it
|
||||
is higher than our minimal requirement of 13 years of age.
|
||||
|
||||
## Asia
|
||||
|
||||
* Hong Kong: 18
|
||||
* South Korea: 14
|
||||
* Vietnam: 16
|
||||
|
||||
## Caribbean
|
||||
|
||||
* Aruba: 16
|
||||
* Caribbean Netherlands: 16
|
||||
* Curaçao: 16
|
||||
* Sint Maarten: 16
|
||||
|
||||
## Europe
|
||||
|
||||
* Austria: 14
|
||||
* Bulgaria: 14
|
||||
* Croatia: 16
|
||||
* Cyprus: 14
|
||||
* Czech Republic: 15
|
||||
* France: 15
|
||||
* Germany: 16
|
||||
* Greece: 15
|
||||
* Hungary: 16
|
||||
* Ireland: 16
|
||||
* Italy: 14
|
||||
* Lithuania: 16
|
||||
* Luxembourg: 16
|
||||
* Netherlands: 16
|
||||
* Poland: 16
|
||||
* Portugal: 16
|
||||
* Romania: 16
|
||||
* Russia: 18
|
||||
* San Marino: 16
|
||||
* Serbia: 15
|
||||
* Slovakia: 16
|
||||
* Slovenia: 16
|
||||
* Spain: 14
|
||||
|
||||
## Pacific
|
||||
|
||||
* Australia: 16
|
||||
* Indonesia: 18
|
||||
* Malaysia: 18
|
||||
* Philippines: 18
|
||||
|
||||
## South America
|
||||
|
||||
* Brazil: 18
|
||||
* Chile: 14
|
||||
* Colombia: 14
|
||||
* Peru: 14
|
||||
* Venezuela: 14
|
||||
1
templates/corporate/policies/index.md
Symbolic link
1
templates/corporate/policies/index.md
Symbolic link
@@ -0,0 +1 @@
|
||||
sidebar_index.md
|
||||
1
templates/corporate/policies/missing.md
Normal file
1
templates/corporate/policies/missing.md
Normal file
@@ -0,0 +1 @@
|
||||
No such page.
|
||||
207
templates/corporate/policies/privacy-before-2022.md
Normal file
207
templates/corporate/policies/privacy-before-2022.md
Normal file
@@ -0,0 +1,207 @@
|
||||
# Privacy Policy (prior to 2022)
|
||||
|
||||
!!! warn ""
|
||||
Starting January 1, 2022, this policy is replaced by the updated
|
||||
[Privacy Policy](/policies/privacy).
|
||||
|
||||
As you use our services, we want you to be clear how we’re using
|
||||
information.
|
||||
|
||||
Our Privacy Policy explains:
|
||||
|
||||
* What information we collect and why we collect it.
|
||||
* How we use that information.
|
||||
|
||||
## Information we collect
|
||||
|
||||
We collect information to provide better services to all of our users.
|
||||
|
||||
We collect information in two ways:
|
||||
|
||||
* **Information you give us.** For example, many of our services
|
||||
require you to sign up for a Kandra Labs Zulip Account. When you do,
|
||||
we’ll ask for personal information, like your name, email address, or
|
||||
telephone number.
|
||||
|
||||
* **Information we get from your use of our services.** We may collect
|
||||
information about the services that you use and how you use them, like
|
||||
when you interact with our content. This information includes:
|
||||
|
||||
* **Device information.** We may collect device-specific
|
||||
information (such as your hardware model, operating system
|
||||
version, and unique device identifiers). Kandra Labs may associate
|
||||
your device identifiers with your Kandra Labs Zulip Account.
|
||||
* **Log information.** When you use our services or view content
|
||||
provided by Kandra Labs, we may automatically collect and store
|
||||
certain information in server logs. This may include:
|
||||
* details of how you used our service.
|
||||
* Internet protocol address.
|
||||
* device event information such as crashes, system activity,
|
||||
hardware settings, browser type, browser language, the date
|
||||
and time of your request and referral URL.
|
||||
* cookies that may uniquely identify your browser or your
|
||||
Kandra Labs Zulip Account.
|
||||
|
||||
* **Unique application numbers.** Certain services include a
|
||||
unique application number. This number and information about your
|
||||
installation (for example, the operating system type and
|
||||
application version number) may be sent to Kandra Labs when you
|
||||
install or uninstall that service or when that service
|
||||
periodically contacts our servers, such as for automatic
|
||||
updates.
|
||||
|
||||
* **Local storage.** We may collect and store information
|
||||
(including personal information) locally on your device using
|
||||
mechanisms such as browser web storage (including HTML 5) and
|
||||
application data caches.
|
||||
|
||||
* **Cookies and anonymous identifiers.** We use various
|
||||
technologies to collect and store information when you visit our
|
||||
Zulip service, and this may include sending one or more cookies or
|
||||
anonymous identifiers to your device. We may also use cookies and
|
||||
anonymous identifiers when you interact with services we offer to
|
||||
our partners, such as Zulip features that may appear on other
|
||||
sites.
|
||||
|
||||
## How we use information we collect
|
||||
|
||||
We use the information we collect from all of our services to provide,
|
||||
maintain, protect and improve them, to develop new ones, and to protect Kandra Labs
|
||||
and our users.
|
||||
|
||||
We may use the name you provide for your Kandra Labs Zulip Account across all of the
|
||||
services we offer that require an account. In addition, we may replace
|
||||
past names associated with your account so that you are represented
|
||||
consistently across all our services. We may show other users your publicly
|
||||
visible account information, such as your name.
|
||||
|
||||
When you contact Kandra Labs, we may keep a record of your communication to help
|
||||
solve any issues you might be facing. We may use your email address to inform
|
||||
you about our services, such as letting you know about upcoming changes or
|
||||
improvements.
|
||||
|
||||
We use information collected from cookies and other technologies to improve
|
||||
your user experience and the overall quality of our services.
|
||||
|
||||
We may combine personal information from one service with information,
|
||||
including personal information, from other Kandra Labs services.
|
||||
|
||||
Kandra Labs processes personal information on our servers in many countries
|
||||
around the world. We may process your personal information on a server located
|
||||
outside the country where you live.
|
||||
|
||||
|
||||
## Accessing and updating your personal information
|
||||
|
||||
Whenever you use our services, we aim to provide you with access to your
|
||||
personal information. If that information is wrong, we strive to give you ways
|
||||
to update it quickly or to delete it – unless we have to keep that information
|
||||
for legitimate business or legal purposes. When updating your personal
|
||||
information, we may ask you to verify your identity before we can act on your
|
||||
request.
|
||||
|
||||
We may reject requests that are unreasonably repetitive, require
|
||||
disproportionate technical effort (for example, developing a new system or
|
||||
fundamentally changing an existing practice), risk the privacy of others, or
|
||||
would be extremely impractical (for instance, requests concerning information
|
||||
residing on backup tapes).
|
||||
|
||||
Where we can provide information access and correction, we will do so for
|
||||
free, except where it would require a disproportionate effort. We aim to
|
||||
maintain our services in a manner that protects information from accidental or
|
||||
malicious destruction. Because of this, after you delete information from our
|
||||
services, we may not immediately delete residual copies from our active servers
|
||||
and may not remove information from our backup systems.
|
||||
|
||||
|
||||
## Information we share
|
||||
|
||||
We do not share personal information with companies, organizations and
|
||||
individuals outside of Kandra Labs unless one of the following circumstances
|
||||
apply:
|
||||
|
||||
|
||||
* **With your consent.** We will share personal information with
|
||||
companies, organizations or individuals outside of Kandra Labs when we
|
||||
have your consent to do so. We require opt-in consent for the sharing
|
||||
of any sensitive personal information.
|
||||
|
||||
* **With domain administrators.** If your Kandra Labs Zulip Account is
|
||||
managed for you by a domain administrator then your domain
|
||||
administrator and resellers who provide user support to your
|
||||
organization will have access to your account information (including
|
||||
your email and other data). Your domain administrator may be able to:
|
||||
|
||||
* view statistics regarding your account.
|
||||
* change your account password.
|
||||
* suspend or terminate your account access.
|
||||
* access or retain information stored as part of your account.
|
||||
* receive your account information in order to satisfy applicable
|
||||
law, regulation, legal process or enforceable governmental
|
||||
request.
|
||||
* restrict your ability to delete or edit information or settings.
|
||||
|
||||
Please refer to your domain administrator’s privacy policy for
|
||||
more information.
|
||||
|
||||
* **For external processing.** We provide personal information to our
|
||||
affiliates or other trusted businesses or persons to process it for
|
||||
us, based on our instructions and in compliance with our Privacy
|
||||
Policy.
|
||||
|
||||
* **For legal reasons.** We will share personal information with
|
||||
companies, organizations or individuals outside of Kandra Labs if we,
|
||||
in our sole discretion, determine that that access, use, preservation
|
||||
or disclosure of the information is necessary to:
|
||||
|
||||
* meet any applicable law, regulation, legal process or
|
||||
enforceable governmental request.
|
||||
|
||||
* enforce applicable Terms of Service, including investigation of
|
||||
potential violations.
|
||||
|
||||
* detect, prevent, or otherwise address fraud, security or
|
||||
technical issues.
|
||||
|
||||
* protect against harm to the rights, property or safety of Kandra
|
||||
Labs, our users or the public as required or permitted by law.
|
||||
|
||||
We may share aggregated, non-personally identifiable information publicly
|
||||
and with our partners. For example, we may share information publicly to show
|
||||
trends about the general use of our services.
|
||||
|
||||
We may share personal information in connection with an acquisition, merger,
|
||||
or sale of all or a substantial portion of our business, with or to another
|
||||
company. In any such event, you will receive notice if your data is transferred
|
||||
and becomes subject to a substantially different privacy policy.
|
||||
|
||||
## Application
|
||||
|
||||
Our Privacy Policy applies to all of the services offered by Kandra Labs, Inc.
|
||||
and its affiliates, including services offered on other sites, but excludes
|
||||
services that have separate privacy policies that do not incorporate this
|
||||
Privacy Policy.
|
||||
|
||||
Our Privacy Policy does not apply to services offered by other companies or
|
||||
individuals, sites that may include Zulip services, or other sites linked from
|
||||
our services. Our Privacy Policy does not cover the information practices of
|
||||
other companies and organizations who advertise our services, and who may use
|
||||
cookies, pixel tags and other technologies to serve and offer relevant ads.
|
||||
|
||||
## Data Protection Officer
|
||||
|
||||
To communicate with our Data Protection Officer, please email
|
||||
data-protection-officer@zulipchat.com.
|
||||
|
||||
## GDPR Compliance
|
||||
|
||||
See the article on [Zulip's GDPR compliance](/help/gdpr-compliance)
|
||||
for details on how Kandra Labs and Zulip comply with the General Data
|
||||
Protection Regulation.
|
||||
|
||||
## Changes
|
||||
|
||||
Our Privacy Policy may change from time to time. We will post the latest
|
||||
version of our privacy policy on this page.
|
||||
|
||||
Last modified: May 7, 2021
|
||||
619
templates/corporate/policies/privacy.md
Normal file
619
templates/corporate/policies/privacy.md
Normal file
@@ -0,0 +1,619 @@
|
||||
# Privacy Policy
|
||||
|
||||
**Effective date: January 1, 2022.** View [change history][changes-privacy].
|
||||
|
||||
[changes-privacy]: https://github.com/zulip/zulip/commits/main/templates/corporate/policies/privacy.md
|
||||
|
||||
At Kandra Labs, Inc. (“Zulip”), we take your privacy seriously. Please read this
|
||||
Privacy Policy to learn how we treat your personal data. **By using or accessing
|
||||
our Services in any manner, you acknowledge that you accept the practices and
|
||||
policies outlined below, and you hereby consent that we will collect, use and
|
||||
share your information as described in this Privacy Policy.**
|
||||
|
||||
Remember that your use of Zulip's Services is at all times subject to our [Terms
|
||||
of Service](/policies/terms), which incorporates this Privacy Policy.
|
||||
Any terms we use in this Policy without defining them have the definitions given
|
||||
to them in the Terms of Service.
|
||||
|
||||
You may print a copy of this Privacy Policy by clicking
|
||||
[here](javascript:window.print()).
|
||||
|
||||
## Summary of our Privacy Policy
|
||||
|
||||
We know, privacy policies are no fun. Here at Zulip, our goal is to help make
|
||||
team collaboration and communication easier for you. In the course of providing
|
||||
our Services, we will collect certain information about you, which is necessary
|
||||
for us to best achieve that goal. Our intent is to only collect the information
|
||||
we need to provide our Services to you. We will only share your data with third
|
||||
parties to help make our Services a reality. We will not sell your personal
|
||||
information to third parties.
|
||||
|
||||
## Privacy Policy Table of Contents
|
||||
|
||||
* [What this Privacy Policy Covers](#what-this-privacy-policy-covers)
|
||||
* [Personal Data](#personal-data)
|
||||
- [Categories of Personal Data We Collect](#categories-of-personal-data-we-collect)
|
||||
- [Categories of Sources of Personal Data](#categories-of-sources-of-personal-data)
|
||||
- [Our Commercial or Business Purposes for Collecting Personal Data](#our-commercial-or-business-purposes-for-collecting-personal-data)
|
||||
* [How We Share Your Personal Data](#how-we-share-your-personal-data)
|
||||
* [Tracking Tools and Opt-Out](#tracking-tools-and-opt-out)
|
||||
* [Data Security and Retention](#data-security-and-retention)
|
||||
* [Personal Data of Children](#personal-data-of-children)
|
||||
* [California Resident Rights](#california-resident-rights-under-ccpa)
|
||||
* [Other State Law Privacy Rights](#other-state-law-privacy-rights)
|
||||
* [European Union Data Subject Rights](#european-union-data-subject-rights)
|
||||
* [Changes to this Privacy Policy](#changes-to-this-privacy-policy)
|
||||
* [Contact Information](#contact-information)
|
||||
|
||||
## What this Privacy Policy Covers
|
||||
|
||||
This Privacy Policy covers how we treat Personal Data that we gather when you
|
||||
access or use our Services. “Personal Data” means any information that
|
||||
identifies or relates to a particular individual and also includes information
|
||||
referred to as “personally identifiable information” or “personal information”
|
||||
under applicable data privacy laws, rules or regulations. This Privacy Policy
|
||||
does not cover the practices of companies we don’t own or control, or people we
|
||||
don’t manage.
|
||||
|
||||
## Personal Data
|
||||
|
||||
### Categories of Personal Data We Collect
|
||||
|
||||
This chart details the categories of Personal Data that we may collect and may
|
||||
have collected from or about you over the past 12 months. Please note that many
|
||||
of these categories of Personal Data will only be collected if you choose to
|
||||
provide them to us:
|
||||
|
||||
| **Category of Personal Data** | **Examples of Personal Data We Collect** | **Categories of Third Parties With Whom We Share this Personal Data:** |
|
||||
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **Profile or Contact Data** | - Display name<br>- Email address<br>- Phone number<br>- Profile photo | - Service Providers<br>- Parties You Authorize, Access or Authenticate |
|
||||
| **Payment Data** | - Payment card type<br>- Payment card number <br>- Billing name, address, phone number, and email | - This information is directly processed by our Service Providers (specifically our payment processing partner, currently Stripe, Inc.). We do not process or store your entire payment card number. |
|
||||
| **Device/IP Data** | - IP address<br>- Host name<br>- Type of device/operating system/browser used to access the Services | - Service Providers<br>- Analytics Partners |
|
||||
| **Web Analytics** | - Web page interactions<br>- Referring webpage/source through which you accessed the Services<br>- Statistics associated with the interaction between device or browser and the Services | - Service Providers<br>- Analytics Partners |
|
||||
| **Social Network Data** | - Email address<br>- User name | - Service Providers |
|
||||
| **Geolocation Data** | - IP-address-based coarse location information | - Service Providers<br>- Analytics Partners |
|
||||
| **Other Identifying Information that You Voluntarily Choose to Provide** | - Identifying information in emails, letters, Zulip messages or support communications you send us<br>- Zulip messages, uploaded files, channel descriptions, and other content you provide using our Services (e.g., in a Zulip client) <br>- Values of custom profile fields configured by your Zulip Organization, where you might choose to enter your phone number, job title, birthday, or other biographical details. | - Service Providers<br>- Parties You Authorize, Access or Authenticate |
|
||||
| **Other Identifying Information that Another User Chooses to Provide to You** | - Messages or other content that other Zulip users may send you. <br>- Messages or content that any Zulip Organization Administrator of a Zulip community that you may join may provide about you. | - Service Providers<br>- Parties You Authorize, Access or Authenticate |
|
||||
|
||||
|
||||
|
||||
### Categories of Sources of Personal Data
|
||||
|
||||
We collect Personal Data about you from the following categories of sources:
|
||||
|
||||
- **You**
|
||||
- When you provide such information directly to us.
|
||||
- When you create an account or use our interactive tools and Services.
|
||||
- When you voluntarily provide information in free-form text
|
||||
boxes through the Services or through responses to surveys
|
||||
or questionnaires.
|
||||
- When you send us an email or otherwise contact us.
|
||||
- When you use the Services and such information is collected automatically.
|
||||
- Through Cookies (defined in the “Tracking Tools and Opt-Out”
|
||||
section below).
|
||||
- If you download a Zulip application such as our mobile and
|
||||
desktop apps, or interact with the Services over a network
|
||||
using a web browser or other client, we may receive and
|
||||
collect information about your device and your network
|
||||
connection (e.g., your IP address).
|
||||
- If you download a Zulip application such as our mobile and
|
||||
desktop apps, or interact with the Services over a network
|
||||
using a web browser or other client, we may receive and
|
||||
collect information transmitted from your computing device
|
||||
for the purpose of providing you the relevant Services, such
|
||||
as information regarding when you are logged on and
|
||||
available to receive updates or alert notices.
|
||||
- **Third Parties**
|
||||
- Vendors
|
||||
- We may use analytics providers to analyze how you interact
|
||||
and engage with the Services, or third parties may help us
|
||||
provide you with customer support.
|
||||
- When you submit Payment Data to our payment processing
|
||||
partner Stripe, Inc. (“Stripe”).
|
||||
- Social Networks
|
||||
- If you provide your social network account credentials to us
|
||||
or otherwise sign in to the Services through a third-party
|
||||
site or service, some content and/or information in those
|
||||
accounts may be transmitted into your account with us.
|
||||
- Zulip integrations
|
||||
- You or other Zulip users may connect an integration that
|
||||
sends data from a third-party service into Zulip.
|
||||
- Other Zulip users
|
||||
- Other Zulip users may send messages or otherwise upload content containing Personal Data.
|
||||
- Other Zulip users, such as Zulip Organization
|
||||
Administrators, may import data into the Services via
|
||||
Zulip’s API or data import tools.
|
||||
- Please note that if you upload Personal Data about any other
|
||||
Zulip User, the Rules of Use require that you acknowledge
|
||||
and represent that you have authority to provide such
|
||||
information on behalf of such user.
|
||||
|
||||
### Our Commercial or Business Purposes for Collecting Personal Data
|
||||
|
||||
- **Providing, Customizing and Improving the Services**
|
||||
- Creating and managing your account or other user profiles.
|
||||
- Processing orders or other transactions; billing.
|
||||
- Providing you with the products, services, or information you request.
|
||||
- Meeting or fulfilling the reason you provided the information to us.
|
||||
- Providing support and assistance for the Services.
|
||||
- Improving the Services, including testing, research, internal analytics,
|
||||
and product development.
|
||||
- Personalizing the Services, website content, and communications based on
|
||||
your preferences.
|
||||
- Doing fraud protection, security, abuse prevention, and debugging.
|
||||
- Carrying out other business purposes stated when collecting your Personal
|
||||
Data or as otherwise set forth in applicable data privacy laws, such as
|
||||
the California Consumer Privacy Act (the “CCPA”).
|
||||
|
||||
- **Marketing the Services**
|
||||
- Marketing and selling the Services.
|
||||
|
||||
- **Corresponding with You**
|
||||
- Responding to correspondence that we receive from you, contacting you when
|
||||
necessary or requested, and sending you information about Zulip or the
|
||||
Services.
|
||||
- Sending emails, mobile notifications, and other communications according
|
||||
to your preferences or that display content that we think will interest
|
||||
you.
|
||||
|
||||
- **Meeting Legal Requirements and Enforcing Legal Terms**
|
||||
- Fulfilling our legal obligations under applicable law, regulation, court
|
||||
order or other legal process, such as preventing, detecting and
|
||||
investigating security incidents and potentially illegal or prohibited
|
||||
activities.
|
||||
- Protecting the rights, property or safety of you, Zulip or another party.
|
||||
- Enforcing any agreements with you.
|
||||
- Responding to claims that any posting or other content violates
|
||||
third-party rights.
|
||||
- Resolving disputes.
|
||||
|
||||
We will not collect additional categories of Personal Data or use the Personal
|
||||
Data we collected for materially different, unrelated or incompatible purposes
|
||||
without providing you notice.
|
||||
|
||||
### How We Share Your Personal Data
|
||||
|
||||
We disclose your Personal Data to the categories of service providers and other
|
||||
parties listed in this section. We do not sell Personal Data.
|
||||
|
||||
- **Service Providers.** These parties help us provide the Services or perform
|
||||
business functions on our behalf. They include:
|
||||
- Hosting, technology and communications providers.
|
||||
- Analytics providers.
|
||||
- Security and fraud prevention consultants.
|
||||
- Support and customer service vendors.
|
||||
- Payment processors.
|
||||
- Our payment processing partner Stripe, Inc. (“Stripe”) collects your
|
||||
voluntarily-provided payment card information necessary to process
|
||||
your payment.
|
||||
- Please see Stripe’s terms of service and privacy policy for
|
||||
information on its use and storage of your Personal Data.
|
||||
|
||||
- **Parties You Authorize, Access or Authenticate.** These parties could
|
||||
include:
|
||||
- Other Zulip users. When you send a message to another Zulip user or
|
||||
otherwise provide data to Zulip, it may be shared with some or all other
|
||||
users in that Zulip Organization. Please note that some Zulip channels [may
|
||||
be accessible to the general
|
||||
public](/help/channel-permissions#web-public-channels), in addition to the
|
||||
channel’s current subscribers. For more information, please review our
|
||||
[Terms of Service](/policies/terms).
|
||||
- Zulip Organization Administrators may export all Zulip data for a Zulip
|
||||
Organization for archival/backup purposes, to import the data into a
|
||||
self-hosted Zulip server, or for any other purpose consistent with the
|
||||
Terms of Service. Please note that password hashes are not included in
|
||||
data exports.
|
||||
- Other parties that you may authorize, such as third-party Zulip clients or
|
||||
third-party services to which you provide Zulip credentials, such as your
|
||||
Zulip API key.
|
||||
|
||||
- **Analytics Partners.** These parties provide analytics on web traffic or
|
||||
usage of the Services. They include:
|
||||
- Companies that track how users found or were referred to the Services.
|
||||
- Companies that track how users interact with the Services.
|
||||
|
||||
- **Business Partners.** These parties may include:
|
||||
- Businesses that provide third-party services that you or your Zulip
|
||||
Organization have integrated with our Services.
|
||||
|
||||
### Legal Obligations
|
||||
|
||||
We may share any Personal Data that we collect with third parties in conjunction
|
||||
with any of the activities set forth under “Meeting Legal Requirements and
|
||||
Enforcing Legal Terms” in the “Our Commercial or Business Purposes for
|
||||
Collecting Personal Data” section above.
|
||||
|
||||
### Business Transfers
|
||||
|
||||
All of your Personal Data that we collect may be transferred to a third party if
|
||||
we undergo a merger, acquisition, bankruptcy or other transaction in which that
|
||||
third party assumes control of our business (in whole or in part). Should one of
|
||||
these events occur, we will make reasonable efforts to notify you before your
|
||||
information becomes subject to different privacy and security policies and
|
||||
practices.
|
||||
|
||||
### Data that is Not Personal Data
|
||||
|
||||
We may create aggregated, de-identified or anonymized data from the Personal
|
||||
Data we collect, including by removing information that makes the data
|
||||
personally identifiable to a particular user. We may use such aggregated,
|
||||
de-identified or anonymized data and share it with third parties for our lawful
|
||||
business purposes, including to analyze, build and improve the Services and
|
||||
promote our business, provided that we will not share such data in a manner that
|
||||
could identify you.
|
||||
|
||||
## Tracking Tools and Opt-Out
|
||||
|
||||
The Services use cookies and similar technologies to enable our servers to
|
||||
recognize your web browser, tell us how and when you visit and use our Services,
|
||||
analyze trends, learn about our user base and operate and improve our Services.
|
||||
Cookies are small pieces of data – usually text files – placed on your computer,
|
||||
tablet, phone or similar device when you use that device to access our Services.
|
||||
We may also supplement the information we collect from you with information
|
||||
received from third parties, including third parties that have placed their own
|
||||
cookies on your device(s). Please note that because of our use of cookies, the
|
||||
Services do not support the [“Do Not Track” setting](https://allaboutdnt.com/)
|
||||
available in some browsers. We use the following types of cookies:
|
||||
|
||||
- **Essential Cookies.** Essential cookies are required for providing you with
|
||||
features or services that you have requested. For example, certain cookies
|
||||
enable you to log into secure areas of our Services. Disabling these cookies
|
||||
may make certain features and services unavailable.
|
||||
|
||||
- **Performance/Analytical Cookies.** Performance/Analytical cookies allow us to
|
||||
understand how visitors use our Services. They do this by collecting
|
||||
information about the number of visitors to the Services, what pages visitors
|
||||
view on our Services and how long visitors are viewing pages on the Services.
|
||||
Performance/Analytical cookies also help us measure the performance of our
|
||||
advertising campaigns in order to help us improve our campaigns and the
|
||||
Services’ content for those who engage with our advertising. For example,
|
||||
Google LLC (“Google”) uses cookies in connection with its Google Analytics
|
||||
services. Google’s ability to use and share information collected by Google
|
||||
Analytics about your visits to the Services is subject to the Google Analytics
|
||||
Terms of Service and the Google Privacy Policy. You have the option to opt-out
|
||||
of Google’s use of cookies by visiting the Google advertising opt-out page at
|
||||
<https://www.google.com/privacy_ads.html> or the Google Analytics Opt-out
|
||||
Browser Add-on at <https://tools.google.com/dlpage/gaoptout/>.
|
||||
|
||||
You can decide whether or not to accept cookies through your internet browser’s
|
||||
settings. Most browsers have an option for turning off the cookie feature, which
|
||||
will prevent your browser from accepting new cookies, as well as (depending on
|
||||
the sophistication of your browser software) allow you to decide on acceptance
|
||||
of each new cookie in a variety of ways. You can also delete all cookies that
|
||||
are already on your device. If you do this, however, you may have to manually
|
||||
adjust some preferences every time you visit our website and some of the
|
||||
Services and functionalities may not work.
|
||||
|
||||
To explore what cookie settings are available to you, look in the “preferences”
|
||||
or “options” section of your browser’s menu. To find out more information about
|
||||
cookies, including information about how to manage and delete cookies, please
|
||||
visit <http://www.allaboutcookies.org/> or
|
||||
<https://ico.org.uk/for-the-public/online/cookies/> if you are located in the
|
||||
European Union.
|
||||
|
||||
## Data Security and Retention
|
||||
|
||||
We seek to protect your Personal Data from unauthorized access, use and
|
||||
disclosure using appropriate physical, technical, organizational and
|
||||
administrative security measures based on the type of Personal Data and how we
|
||||
are processing that data. You should also help protect your data by
|
||||
appropriately selecting and protecting your password and/or other sign-on
|
||||
mechanism; limiting access to your computer or device and browser; and signing
|
||||
off after you have finished accessing your account. Although we work to protect
|
||||
the security of your account and other data that we hold in our records, please
|
||||
be aware that no method of transmitting data over the internet or storing data
|
||||
is completely secure.
|
||||
|
||||
We retain Personal Data about you for as long as you have an open account with
|
||||
us or as otherwise necessary to provide you with our Services. In some cases we
|
||||
retain Personal Data for longer, if doing so is necessary to comply with our
|
||||
legal obligations, resolve disputes or collect fees owed, or is otherwise
|
||||
permitted or required by applicable law, rule or regulation. We may further
|
||||
retain information in an anonymous or aggregated form where that information
|
||||
would not identify you personally.
|
||||
|
||||
## Personal Data of Children
|
||||
|
||||
As noted in the Terms of Service, we do not knowingly collect or solicit
|
||||
personally identifiable information from children under thirteen (13) years of
|
||||
age and children below the [minimum age of consent in their
|
||||
country](/policies/age-of-consent); if you are a
|
||||
child under the age of thirteen (13) or below the minimum age of consent in your
|
||||
country, please do not attempt to register for or otherwise use the Services or
|
||||
send us any personal information. If we learn we have collected personal
|
||||
information from a child under thirteen (13) years of age or below the minimum
|
||||
age of consent in their country, we will delete that information as quickly as
|
||||
possible. If you believe that a child under the age of thirteen (13) or below
|
||||
the minimum age of consent in their country may have provided us personal
|
||||
information, please contact us at [privacy@zulip.com](mailto:privacy@zulip.com).
|
||||
|
||||
## California Resident Rights under CCPA
|
||||
|
||||
If you are a California resident, you have the rights set forth in this section.
|
||||
Please see the “Exercising Your Rights” section below for instructions regarding
|
||||
how to exercise these rights. Please note that we may process Personal Data of
|
||||
our customers’ end users or employees in connection with our provision of
|
||||
certain services to our customers. If we are processing your Personal Data as a
|
||||
service provider, you should contact the entity that collected your Personal
|
||||
Data in the first instance to address your rights with respect to such data.
|
||||
|
||||
If there are any conflicts between this section and any other
|
||||
provision of this Privacy Policy and you are a California resident,
|
||||
the portion that is more protective of Personal Data shall control to
|
||||
the extent of such conflict. If you have any questions about this
|
||||
section or whether any of the following rights apply to you, please
|
||||
contact us at [privacy@zulip.com](mailto:privacy@zulip.com).
|
||||
|
||||
### Access
|
||||
|
||||
You have the right to request certain information about our collection, use, and
|
||||
disclosure of your Personal Data over the past 12 months. In response, we will
|
||||
provide you with the following information:
|
||||
|
||||
- The categories of Personal Data that we have collected about you.
|
||||
- The categories of sources from which that Personal Data was collected.
|
||||
- The business or commercial purpose for collecting, using, or disclosing your
|
||||
Personal Data.
|
||||
- The categories of third parties with whom we have shared your Personal Data,
|
||||
along with a reminder that we do not sell Personal Data.
|
||||
- The specific pieces of Personal Data that we have collected about you.
|
||||
|
||||
### Deletion
|
||||
|
||||
You have the right to request that we delete the Personal Data that we have
|
||||
collected about you. Under the CCPA, this right is subject to certain
|
||||
exceptions: for example, we may need to retain your Personal Data to provide you
|
||||
with the Services or complete a transaction or other action you have requested.
|
||||
If your deletion request is subject to one of these exceptions, we may deny your
|
||||
deletion request. Please note that we will not be able to delete messages or
|
||||
other content that you have sent to another Zulip user. If you request deletion
|
||||
of your account, all such messages and content will be associated with a
|
||||
“Deleted User.” In addition, please note that anyone that you send messages or
|
||||
other content to (or who may otherwise have access to such messages or content
|
||||
through a Zulip Organization or channel) may have downloaded or copied such
|
||||
messages or content. Zulip will not be able to delete such downloaded or copied
|
||||
messages or content.
|
||||
|
||||
### Exercising Your Rights
|
||||
|
||||
To exercise the rights described above, you or your Authorized Agent (defined
|
||||
below) must send us a request that (1) provides sufficient information to allow
|
||||
us to verify that you are the person about whom we have collected Personal Data,
|
||||
which may include proof of ownership of the email address associated with your
|
||||
Zulip account, and (2) describes your request in sufficient detail to allow us
|
||||
to understand, evaluate and respond to it. Each request that meets both of these
|
||||
criteria will be considered a “Valid Request.” We may not respond to requests
|
||||
that do not meet these criteria. We will only use Personal Data provided in a
|
||||
Valid Request to verify your identity and complete your request. You do not need
|
||||
an account to submit a Valid Request. We will work to respond to your Valid
|
||||
Request within 45 days of receipt. We will not charge you a fee for making a
|
||||
Valid Request unless your Valid Request(s) is excessive, repetitive or
|
||||
manifestly unfounded. If we determine that your Valid Request warrants a fee, we
|
||||
will notify you of the fee and explain that decision before completing your
|
||||
request. You may submit a Valid Request using the following methods:
|
||||
|
||||
- Email us at: [privacy@zulip.com](mailto:privacy@zulip.com).
|
||||
- Complete this form on our website: <https://zulip.com/support>.
|
||||
|
||||
You may also authorize an agent (an “Authorized Agent”) to exercise your rights
|
||||
on your behalf. To do this, you must provide your Authorized Agent with written
|
||||
permission to exercise your rights on your behalf, and we may require you to
|
||||
confirm to us that you did so.
|
||||
|
||||
### Personal Data Sales Opt-Out and Opt-In
|
||||
|
||||
We will not sell your Personal Data, and have not done so over the last 12
|
||||
months.
|
||||
|
||||
### We Will Not Discriminate Against You for Exercising Your Rights Under the CCPA
|
||||
|
||||
We will not discriminate against you for exercising your rights under the CCPA.
|
||||
We will not deny you our goods or services, charge you different prices or
|
||||
rates, or provide you a lower quality of goods and services if you exercise your
|
||||
rights under the CCPA.
|
||||
|
||||
## Other State Law Privacy Rights
|
||||
|
||||
### California Resident Rights
|
||||
|
||||
Under California Civil Code Sections 1798.83-1798.84, California residents are
|
||||
entitled to contact us to prevent disclosure of Personal Data to third parties
|
||||
for such third parties’ direct marketing purposes In order to submit such a
|
||||
request, please contact us at [privacy@zulip.com](mailto:privacy@zulip.com).
|
||||
|
||||
Zulip does not disclose Personal Data to any third parties for the purpose of
|
||||
such parties’ direct marketing. However, please note that your Zulip display
|
||||
name, email address, avatar, and other profile information may be shared with
|
||||
other users within any Zulip Organization that you join. You can confirm or
|
||||
change these settings in your
|
||||
[profile](/accounts/go/?next=%23settings%2Fprofile), and [account and
|
||||
privacy](/accounts/go/?next=%23settings%2Faccount-and-privacy) settings.
|
||||
|
||||
### Nevada Resident Rights
|
||||
|
||||
As noted above, we do not sell Personal Data.
|
||||
|
||||
If you are a resident of Nevada, you have the right to opt-out of the
|
||||
sale of certain Personal Data to third parties who intend to license
|
||||
or sell that Personal Data. You can exercise this right by contacting
|
||||
us at [privacy@zulip.com](mailto:privacy@zulip.com) with the subject
|
||||
line “Nevada Do Not Sell Request” and providing us with your name and
|
||||
the email address associated with your account.
|
||||
|
||||
## European Union Data Subject Rights
|
||||
|
||||
### EU Residents
|
||||
|
||||
If you are a resident of the European Union (“EU”), United Kingdom,
|
||||
Lichtenstein, Norway or Iceland, you may have additional rights under the EU
|
||||
General Data Protection Regulation (the “GDPR”) with respect to your Personal
|
||||
Data, as outlined below.
|
||||
|
||||
For this section, we use the terms “Personal Data” and “processing” as they are
|
||||
defined in the GDPR, but “Personal Data” generally means information that can be
|
||||
used to individually identify a person, and “processing” generally covers
|
||||
actions that can be performed in connection with data such as collection, use,
|
||||
storage and disclosure. Zulip will be the controller of your Personal Data
|
||||
processed in connection with the Services.
|
||||
|
||||
If there are any conflicts between this section and any other
|
||||
provision of this Privacy Policy, the provision or portion that is
|
||||
more protective of Personal Data shall control to the extent of such
|
||||
conflict. If you have any questions about this section or whether any
|
||||
of the following applies to you, please contact us at
|
||||
[privacy@zulip.com](mailto:privacy@zulip.com). Note that we may also
|
||||
process Personal Data of our customers’ end users or employees in
|
||||
connection with our provision of certain services to customers, in
|
||||
which case we are the processor of Personal Data. If we are the
|
||||
processor of your Personal Data (i.e., not the controller), please
|
||||
contact the controller party in the first instance to address your
|
||||
rights with respect to such data.
|
||||
|
||||
### Personal Data We Collect
|
||||
|
||||
The “Categories of Personal Data We Collect” section above details the Personal
|
||||
Data that we collect from you.
|
||||
|
||||
### Personal Data Use and Processing Grounds
|
||||
|
||||
The “Our Commercial or Business Purposes for Collecting Personal Data” section
|
||||
above explains how we use your Personal Data.
|
||||
|
||||
We will only process your Personal Data if we have a lawful basis for doing so.
|
||||
Lawful bases for processing include consent, contractual necessity and our
|
||||
“legitimate interests” or the legitimate interest of others, as further
|
||||
described below.
|
||||
|
||||
- **Contractual Necessity**: We process the following categories of Personal
|
||||
Data as a matter of “contractual necessity”, meaning that we need to process
|
||||
the data in order to carry out our obligations under the Terms of Service,
|
||||
including providing the Services. When we process data due to contractual
|
||||
necessity, failure to process such Personal Data will result in your or other
|
||||
Zulip users’ inability to use some or all portions of the Services that
|
||||
require such data.
|
||||
- Profile or Contact Data
|
||||
- Payment Data
|
||||
- Other Identifying Information You Voluntarily Choose to Provide
|
||||
- Other Identifying Information Another User Chooses to Provide to You
|
||||
|
||||
- **Legitimate Interest**: We process the following categories of Personal Data
|
||||
when we believe it furthers the legitimate interest of us or third parties:
|
||||
- Device/IP Data
|
||||
- Web Analytics
|
||||
- Geolocation Data
|
||||
- Other Identifying Information Another User Chooses to Provide to You
|
||||
- We may also de-identify or anonymize Personal Data to further our
|
||||
legitimate interests. Examples of these legitimate interests include:
|
||||
- Providing, customizing and improving the Services
|
||||
- Marketing the Services
|
||||
- Corresponding with you
|
||||
- Meeting legal requirements and enforcing legal terms
|
||||
- Completing corporate transactions
|
||||
|
||||
- **Consent**: In some cases, we process Personal Data based on the consent you
|
||||
expressly grant to us at the time we collect such data. When we process
|
||||
Personal Data based on your consent, it will be expressly indicated to you at
|
||||
the point and time of collection. This information may include:
|
||||
- Social Network Data
|
||||
|
||||
- **Other Processing Grounds**: From time to time we may also need to process
|
||||
Personal Data to comply with a legal obligation, if it is necessary to protect
|
||||
the vital interests of you or other data subjects, or if it is necessary for a
|
||||
task carried out in the public interest.
|
||||
|
||||
### Sharing Personal Data
|
||||
|
||||
The “How We Share Your Personal Data” section above details how we share your
|
||||
Personal Data with third parties.
|
||||
|
||||
### EU and UK Data Subject Rights
|
||||
|
||||
You have certain rights with respect to your Personal Data, including
|
||||
those set forth below. For more information about these rights, or to
|
||||
submit a request, please email us at
|
||||
[privacy@zulip.com](mailto:privacy@zulip.com). Please note that in
|
||||
some circumstances, we may not be able to fully comply with your
|
||||
request, such as if it is frivolous or extremely impractical, if it
|
||||
jeopardizes the rights of others, or if it is not required by law, but
|
||||
in those circumstances, we will still respond to notify you of such a
|
||||
decision. In some cases, we may also need you to provide us with
|
||||
additional information, which may include Personal Data, if necessary
|
||||
to verify your identity and the nature of your request.
|
||||
|
||||
- **Access**: You can request more information about the Personal Data we hold
|
||||
about you and request a copy of such Personal Data. You can also access
|
||||
certain of your Personal Data by logging on to your account.
|
||||
- **Rectification**: If you believe that any Personal Data we are holding about
|
||||
you is incorrect or incomplete, you can request that we correct or supplement
|
||||
such data. You can also correct some of this information directly by logging
|
||||
on to your account in the Zulip web application.
|
||||
- **Erasure**: You can request that we erase some or all of your Personal Data
|
||||
from our systems. Please note that we will not be able to delete messages or
|
||||
other content that you have sent to another Zulip user. If you request
|
||||
deletion of your account, all such messages and content will be associated
|
||||
with a “Deleted User.” In addition, please note that anyone that you send
|
||||
messages or other content to (or who may otherwise have access to such
|
||||
messages or content through a Zulip Organization or channel), may have
|
||||
downloaded or copied such messages or content. Zulip will not be able to
|
||||
delete such downloaded or copied messages or content.
|
||||
- **Withdrawal of Consent**: If we are processing your Personal Data based on
|
||||
your consent (as indicated at the time of collection of such data), you have
|
||||
the right to withdraw your consent at any time. Please note, however, that if
|
||||
you exercise this right, you may have to then provide express consent on a
|
||||
case-by-case basis for the use or disclosure of certain of your Personal Data,
|
||||
if such use or disclosure is necessary to enable you to utilize some or all of
|
||||
our Services.
|
||||
- **Portability**: You can ask for a copy of your Personal Data in a
|
||||
machine-readable format. You can also request that we transmit the data to
|
||||
another controller where technically feasible.
|
||||
- **Objection**: You can contact us to let us know that you object to the
|
||||
further use or disclosure of your Personal Data for certain purposes, such as
|
||||
for direct marketing purposes.
|
||||
- **Restriction of Processing**: You can ask us to restrict further processing
|
||||
of your Personal Data.
|
||||
- **Right to File Complaint**: You have the right to lodge a complaint about
|
||||
Zulip's practices with respect to your Personal Data with the supervisory
|
||||
authority of your country or EU Member State. A list of Supervisory
|
||||
Authorities is available here:
|
||||
<https://edpb.europa.eu/about-edpb/board/members_en>.
|
||||
|
||||
### Transfers of Personal Data
|
||||
|
||||
The Services are hosted and operated in the United States (“U.S.”) through Zulip
|
||||
and its service providers, and if you do not reside in the U.S., laws in the
|
||||
U.S. may differ from the laws where you reside. By using the Services, you
|
||||
acknowledge that any Personal Data about you, regardless of whether provided by
|
||||
you or obtained from a third party, is being provided to Zulip in the U.S. and
|
||||
will be hosted on U.S. servers, and you authorize Zulip to transfer, store and
|
||||
process your information to and in the U.S., and possibly other countries.
|
||||
|
||||
## Changes to this Privacy Policy
|
||||
|
||||
We’re constantly trying to improve our Services, so we may need to change this
|
||||
Privacy Policy from time to time. When we do so, we will alert you to any such
|
||||
changes by placing a notice on the Zulip website, by sending you an email and/or
|
||||
by some other means. Please note that if you’ve opted not to receive legal
|
||||
notice emails from us (or you haven’t provided us with your email address),
|
||||
those legal notices will still govern your use of the Services, and you are
|
||||
still responsible for reading and understanding them. We will generally aim to
|
||||
provide such notice about Privacy Policy changes at least 14 days in advance of
|
||||
the new Privacy Policy taking effect. If you use the Services after any changes
|
||||
to the Privacy Policy have come into effect, that means you agree to all of the
|
||||
changes. Use of information we collect is subject to the Privacy Policy in
|
||||
effect at the time such information is collected.
|
||||
|
||||
## Contact Information
|
||||
|
||||
If you have any questions or comments about this Privacy Policy, the ways in
|
||||
which we collect and use your Personal Data, or your choices and rights
|
||||
regarding such collection and use, please do not hesitate to contact us at:
|
||||
|
||||
- <https://zulip.com/support>
|
||||
- [privacy@zulip.com](mailto:privacy@zulip.com)
|
||||
- Kandra Labs, Inc., 584 Castro St #3175, San Francisco, CA 94114
|
||||
|
||||
If you are located in the European Union or United Kingdom, you may use our
|
||||
contact information above, or contact our European-based representative:
|
||||
|
||||
- European Union Representative: George Barry, 4 St Christopher's Rd, Montenotte, Cork, T23 E9TR, Ireland
|
||||
- UK Representative: S. Alec Lawton, Graigwen, Plasycoed road, Pontypool Torfaen, NP4 6QH, UK
|
||||
142
templates/corporate/policies/rules.md
Normal file
142
templates/corporate/policies/rules.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# Zulip Rules of Use
|
||||
|
||||
**Last updated: December 13, 2021.** View [change history][changes-rules].
|
||||
|
||||
[changes-rules]: https://github.com/zulip/zulip/commits/main/templates/corporate/policies/rules.md
|
||||
|
||||
Zulip is designed to help thoughtful people work on difficult problems together,
|
||||
whether they work from a shared office or from all over the world. Zulip offers
|
||||
an ideal platform for businesses, as well as communities of all types, including
|
||||
open-source projects, research collaborations, volunteer organizations, and
|
||||
other groups of people who share a common pursuit.
|
||||
|
||||
This document lays out rules of appropriate behavior that apply to all Zulip
|
||||
organizations. Owners of Zulip organizations are expected to manage their
|
||||
organizations to help avoid problematic behavior. Open organizations are
|
||||
additionally encouraged to write a Code of Conduct and link to it from their
|
||||
[organization profile](/help/create-your-organization-profile), to provide
|
||||
further guidance on expected behavior in their communities.
|
||||
|
||||
If you encounter a Zulip message or behavior by a Zulip user that appears to
|
||||
violate these rules, please [report it to us](/support/). We aim to be thoughtful
|
||||
and judicious in handling reported content. Depending on the severity and scope
|
||||
of the problem, our response may include issuing a warning, removing the
|
||||
content, deactivating user accounts or organizations, and/or reporting the
|
||||
behavior to law enforcement. Capitalized terms used below but not defined in
|
||||
these rules have the meaning set forth in the [Terms of Service](/policies/terms).
|
||||
|
||||
## Safety
|
||||
|
||||
You may not engage in, promote, organize, incite, induce, encourage, or support
|
||||
any of the following:
|
||||
|
||||
- **Violence, including terrorism, violent extremism, animal cruelty,
|
||||
suicide, and self-harm**.
|
||||
- **Bullying, abuse, or harassment** of any individual or group of people. This
|
||||
includes threatening anyone or wishing or hoping that someone experiences
|
||||
physical harm.
|
||||
- **Distribution of content that violates the privacy rights of any other
|
||||
person.** This includes personal information about any other person that you
|
||||
do not have permission to share (“doxxing”).
|
||||
- **Hateful content.** You may not attack, threaten, or harass any individual or
|
||||
group on the basis of attributes such as their race, ethnicity, national
|
||||
origin, caste, religious affiliation, sexual orientation, gender or gender
|
||||
identity, age, disability, or disease.
|
||||
- **Harmful misinformation.** This includes misinformation that has the
|
||||
potential to cause imminent physical harm, or that is defamatory. Deceptively
|
||||
sharing synthetic or manipulated media is also prohibited.
|
||||
- **Human trafficking and exploitation, including child sexual exploitation.**
|
||||
This includes sharing content or links which depict minors in a pornographic,
|
||||
sexually suggestive, or violent manner, and includes illustrated or digitally
|
||||
altered pornography that depicts minors. If we become aware of apparent child
|
||||
exploitation, we will report it to the National Center for Missing and
|
||||
Exploited Children (NCMEC).
|
||||
- **Sexually explicit content and pornography as well as commercial sexual
|
||||
services.** This includes requesting, offering, or asking for rates for
|
||||
sexual or escort services.
|
||||
- **Fraud and deception**, including financial scams such as fake loans,
|
||||
multi-level marketing schemes, get-rich-quick schemes, money-laundering
|
||||
schemes, gambling scams, insurance scams, and “money mule” businesses.
|
||||
- **Distribution of content that violates the intellectual property rights,
|
||||
privacy rights, or other rights of anyone else (including Zulip).**
|
||||
- **Cybercrime, hacking, cracking, or distribution of pirated software or stolen
|
||||
accounts.**
|
||||
- **The sale of banned or dangerous goods** such as weapons, drugs, or other
|
||||
illegal substances. Attempting to provide material support or resources (or to
|
||||
conceal or disguise the nature, location, source, or ownership of material
|
||||
support or resources) to any organization(s) designated by the United States
|
||||
government as a foreign terrorist organization pursuant to section 219 of the
|
||||
Immigration and Nationality Act or other laws and regulations concerning
|
||||
national security, defense or terrorism is strictly prohibited.
|
||||
- **Any other illegal behavior.** Activities that violate any applicable law,
|
||||
including, but not limited to, all intellectual property, data, privacy, and
|
||||
export control laws and regulations promulgated by any government agencies,
|
||||
including, but not limited to, the U.S. Securities and Exchange Commission,
|
||||
and any rules of any national and other securities exchanges, are prohibited.
|
||||
|
||||
## Security
|
||||
|
||||
- **Do not attempt to compromise the security of other users of the Services,**
|
||||
such as attempting to obtain the password or other security information of any
|
||||
other user, or to gain access to their account**.**
|
||||
- **Do not attempt to compromise the security of the Services themselves.** This
|
||||
includes violating the security of any computer network or system, cracking
|
||||
any passwords or encrypted communications, or compromising, breaking, or
|
||||
circumventing any of the technical processes or security measures associated
|
||||
with the Services. Do not attempt to test for vulnerabilities in our systems
|
||||
or networks without explicit prior consent.
|
||||
- **Do not exceed or circumvent rate limits,** run automated processes that
|
||||
interfere with the proper working of the Services, place an unreasonable load
|
||||
on the Services’ infrastructure, or otherwise cause excess or abusive usage.
|
||||
- **Do not permit any third party to access your account** or the authentication
|
||||
credentials you use to access the Services. This includes selling, reselling,
|
||||
sublicensing, or time-sharing Zulip accounts.
|
||||
- **Do not share viruses or malware**, or attempt to hack, phish, or DDoS
|
||||
others.
|
||||
- **Do not automatically create or access accounts** for the Services (a.k.a.
|
||||
“scraping”) by means other than our publicly supported interfaces. If you wish
|
||||
to embed Zulip as the chat backend for your own product, you must self-host
|
||||
your own Zulip server, rather than using Zulip Cloud.
|
||||
|
||||
## Spam and deception
|
||||
|
||||
- **Do not send spam**, including unsolicited communications, promotions, or
|
||||
advertisements.
|
||||
- **Do not target other accounts with notification spam** by mentioning someone
|
||||
or sending them direct messages that they do not want.
|
||||
- **Do not use other accounts to contact a user who has muted you** or create a
|
||||
new account in an organization that has deactivated your account for abusive
|
||||
behavior**.** Do not circumvent features we offer to enable users to protect
|
||||
themselves from abusive behavior.
|
||||
- **Do not impersonate someone else** (individuals, groups, organizations, Zulip
|
||||
staff or organization administrators, or other users) in a manner that is
|
||||
intended to or does mislead, confuse, or deceive anyone, such as “spoofing” or
|
||||
“phishing”.
|
||||
- **Do not submit false reports** of abusive behavior by other users.
|
||||
- **Do not contact users outside of the Services** using contact information
|
||||
obtained from the Services (including email addresses) without their consent.
|
||||
Do not create or distribute mailing lists or other collections of contact or
|
||||
user profile information for use outside of the Services.
|
||||
|
||||
## Third-party clients
|
||||
|
||||
Zulip is 100% open-source software, and we welcome third-party clients that work
|
||||
with Zulip’s API or that allow Zulip users to connect to Zulip as well as other
|
||||
chat services from a single client. Developers of third-party clients marketed
|
||||
as working with the Zulip Cloud service are required to follow these additional
|
||||
rules to protect our users:
|
||||
|
||||
- **Third-party clients must comply with global privacy laws**, including GDPR and
|
||||
CCPA, in their processing of any user data, including telemetry and
|
||||
error-reporting data.
|
||||
- **Use security best practices** to protect Zulip users who use your client. For
|
||||
example, if your client uses the Electron browser framework, you should
|
||||
implement the [Electron Security
|
||||
guidelines](https://www.electronjs.org/docs/latest/tutorial/security).
|
||||
Projects that are early in development and potentially not yet secure must be
|
||||
advertised as insecure and not intended for general use.
|
||||
- **Do not sell data** collected from Zulip users to third parties.
|
||||
- **Do not sell third-party advertisements** for display within a Zulip client.
|
||||
|
||||
If you have any questions about the Zulip Rules of Use or would like to report a
|
||||
violation, please contact us at [support@zulip.com](mailto:support@zulip.com).
|
||||
13
templates/corporate/policies/sidebar_index.md
Normal file
13
templates/corporate/policies/sidebar_index.md
Normal file
@@ -0,0 +1,13 @@
|
||||
## Policies
|
||||
|
||||
* [Index](/policies/)
|
||||
* [Terms of Service](/policies/terms)
|
||||
* [Privacy Policy](/policies/privacy)
|
||||
* [Rules of Use](/policies/rules)
|
||||
* [Age of consent](/policies/age-of-consent)
|
||||
* [Data Processing Addendum](/static/images/policies/Zulip-Data-Processing-Addendum.pdf)
|
||||
* [Subprocessors for Zulip Cloud](/policies/subprocessors)
|
||||
|
||||
## Archive
|
||||
* [Terms of Service in 2021](/policies/terms-before-2022)
|
||||
* [Privacy Policy in 2021](/policies/privacy-before-2022)
|
||||
38
templates/corporate/policies/subprocessors.md
Normal file
38
templates/corporate/policies/subprocessors.md
Normal file
@@ -0,0 +1,38 @@
|
||||
# Subprocessors for Zulip Cloud
|
||||
|
||||
[Learn about GDPR compliance with Zulip.](/help/gdpr-compliance)
|
||||
|
||||
To support delivery of our Services, Kandra Labs, Inc. may engage and
|
||||
use data processors with access to certain Customer Data (each, a
|
||||
"Subprocessor"). This section provides important information about
|
||||
the identity, location and role of each Subprocessor. Terms used on
|
||||
this page but not defined have the meaning set forth in Zulip's Terms
|
||||
of Service or superseding written agreement between Customer and
|
||||
Kandra Labs (the "Agreement").
|
||||
|
||||
### Third parties
|
||||
|
||||
Zulip currently uses third party Subprocessors to provide
|
||||
infrastructure services, and to help us provide customer support and
|
||||
email notifications. Prior to engaging any third party Subprocessor,
|
||||
we perform diligence to evaluate their privacy, security and
|
||||
confidentiality practices.
|
||||
|
||||
**Subprocessors**
|
||||
|
||||
Zulip Cloud may use the following Subprocessors to host Customer Data
|
||||
or provide infrastructure that helps with delivery and operation of
|
||||
our Services:
|
||||
|
||||
* [Amazon Web Services, Inc.](https://aws.amazon.com/compliance/gdpr-center/)
|
||||
for cloud infrastructure.
|
||||
* [DigitalOcean, LLC](https://www.digitalocean.com/security/gdpr/)
|
||||
for cloud infrastructure.
|
||||
* [FrontApp, Inc.](https://community.frontapp.com/t/x1p4mw/is-front-compliant-with-gdpr)
|
||||
for customer support.
|
||||
* [Functional Software, Inc. d/b/a Sentry](https://blog.sentry.io/2018/03/14/gdpr-sentry-and-you)
|
||||
for error tracking.
|
||||
* [Google LLC](https://privacy.google.com/businesses/compliance/) for
|
||||
cloud infrastructure and services.
|
||||
* [Mailgun Technologies, Inc.](https://www.mailgun.com/gdpr) for email processing.
|
||||
* [Stripe, Inc.](https://stripe.com/guides/general-data-protection-regulation) for payment processing.
|
||||
249
templates/corporate/policies/terms-before-2022.md
Normal file
249
templates/corporate/policies/terms-before-2022.md
Normal file
@@ -0,0 +1,249 @@
|
||||
# Terms of Service for the Zulip service by Kandra Labs (prior to 2022)
|
||||
|
||||
!!! warn ""
|
||||
Starting January 1, 2022, these terms are replaced by the updated
|
||||
[Terms of Service](/policies/terms).
|
||||
|
||||
### Welcome to Zulip!
|
||||
|
||||
Thanks for using our products and services ("Services"). The Services are
|
||||
provided by Kandra Labs, Inc. ("Kandra Labs"), located at
|
||||
450 Townsend Street, San Francisco, CA 94107, United States.
|
||||
|
||||
By using our Services, you are agreeing to these terms. Please read them
|
||||
carefully.
|
||||
|
||||
The Services are not intended for use by you if you are under 13 years of
|
||||
age. By agreeing to these terms, you are representing to us that you are over
|
||||
13.
|
||||
|
||||
### Using our Services
|
||||
|
||||
You must follow any policies made available to you within the Services.
|
||||
|
||||
Don't misuse our Services. For example, don't interfere with our Services or
|
||||
try to access them using a method other than the interface and the instructions
|
||||
that we provide. You may use our Services only as permitted by law, including
|
||||
applicable export and re-export control laws and regulations. We may suspend or
|
||||
stop providing our Services to you if you do not comply with our terms or
|
||||
policies or if we are investigating suspected misconduct.
|
||||
|
||||
Using our Services does not give you ownership of any intellectual property
|
||||
rights in our Services or the content you access. You may not use content from
|
||||
our Services unless you obtain permission from its owner or are otherwise
|
||||
permitted by law. These terms do not grant you the right to use any branding or
|
||||
logos used in our Services. Don't remove, obscure, or alter any legal notices
|
||||
displayed in or along with our Services.
|
||||
|
||||
Our Services display some content that does not belong to Kandra Labs. This content is the
|
||||
sole responsibility of the entity that makes it available. We may review
|
||||
content to determine whether it is illegal or violates our policies, and we may
|
||||
remove or refuse to display content that we reasonably believe violates our
|
||||
policies or the law. But that does not necessarily mean that we review content,
|
||||
so please don't assume that we do.
|
||||
|
||||
In connection with your use of the Services, we may send you service
|
||||
announcements, administrative messages, and other information. You may opt out
|
||||
of some of those communications.
|
||||
|
||||
### Your Kandra Labs Zulip Account
|
||||
|
||||
You may need a Kandra Labs Zulip Account ("Account") in order to use some of our Services. You may
|
||||
create your own Account, or your Account may be assigned to you
|
||||
by an administrator, such as your employer or educational institution. If you
|
||||
are using an Account assigned to you by an administrator, different or
|
||||
additional terms may apply and your administrator may be able to access or
|
||||
disable your account.
|
||||
|
||||
If you learn of any unauthorized use of your password or account, contact
|
||||
[support@zulipchat.com](mailto:support@zulipchat.com).
|
||||
|
||||
### Privacy and Copyright Protection
|
||||
|
||||
The Kandra Labs [privacy policy](/policies/privacy) explains how we treat your
|
||||
personal data and protect your privacy when you use our Services. By using our
|
||||
Services, you agree that Kandra Labs can use such data in accordance with our
|
||||
privacy policy.
|
||||
|
||||
We respond to notices of alleged copyright infringement and terminate
|
||||
accounts of repeat infringers according to the process set out in the U.S.
|
||||
Digital Millennium Copyright Act.
|
||||
|
||||
Our designated agent for notice of alleged copyright infringement on the
|
||||
Services is:
|
||||
|
||||
> Copyright Agent
|
||||
> Kandra Labs, Inc.
|
||||
> 450 Townsend Street
|
||||
> San Francisco, CA 94107
|
||||
|
||||
> [copyright@zulipchat.com](mailto:copyright@zulipchat.com)
|
||||
|
||||
### Your Content in our Services
|
||||
|
||||
Some of our Services allow you to submit content. You retain ownership of
|
||||
any intellectual property rights that you hold in that content. In short, what
|
||||
belongs to you stays yours.
|
||||
|
||||
When you upload or otherwise submit content to our Services, you give Kandra Labs
|
||||
(and those we work with) a worldwide license to use, host, store, reproduce,
|
||||
modify, create derivative works (such as those resulting from translations,
|
||||
adaptations or other changes we make so that your content works better with our
|
||||
Services), communicate, publish, perform, display and distribute such content.
|
||||
The rights you grant in this license are for the limited purpose of operating
|
||||
and improving our Services, and to develop new ones. This license continues
|
||||
even if you stop using our Services (for example, so that we can deliver a
|
||||
message that you sent to another Account before you stopped using our
|
||||
Services). Some Services may offer you ways to access and remove content that
|
||||
has been provided to that Service. Also, in some of our Services, there may be
|
||||
terms or settings that narrow the scope of our use of the content submitted in
|
||||
those Services. Make sure you have the necessary rights to grant us this
|
||||
license for any content that you submit to our Services. If you use the
|
||||
Services to share content with others, anyone you've shared content with
|
||||
(including the general public, in certain circumstances) may have access to the
|
||||
content.
|
||||
|
||||
In order to provide the Services, our servers save a record of the messages
|
||||
received by each Account (the "Received Message Information" for the
|
||||
account). If you are using our Services on behalf of a business and a
|
||||
representative of that business sends [data@zulipchat.com](mailto:data@zulipchat.com)
|
||||
a request to delete all of your business' accounts with us, then within a
|
||||
commercially reasonable period of time, we will close all of your business'
|
||||
accounts with us and delete the Received Message Information for each such
|
||||
account by removing pointers to the information on our active servers and
|
||||
overwriting it over time. Notwithstanding the foregoing, deleting the Received
|
||||
Message Information for your business' accounts will not require deleting any
|
||||
information about messages that were sent or received by any Accounts that
|
||||
are not one of your business' accounts with us (such as system-wide announcement
|
||||
messages or any messages corresponding with the Kandra Labs support team).
|
||||
|
||||
You can find more information about how Kandra Labs uses and stores content in
|
||||
the privacy policy. If you submit feedback or suggestions about our Services,
|
||||
we may use your feedback or suggestions without obligation to you.
|
||||
|
||||
|
||||
### About Software in our Services
|
||||
|
||||
When a Service requires or includes downloadable software, this software may
|
||||
update automatically on your device once a new version or feature is available.
|
||||
Some Services may let you adjust your automatic update settings.
|
||||
|
||||
Kandra Labs gives you a personal, worldwide, royalty-free, non-assignable and
|
||||
non-exclusive license to use the software provided to you by Kandra Labs as part of
|
||||
the Services. This license is for the sole purpose of enabling you to use and
|
||||
enjoy the benefit of the Services as provided by Kandra Labs, in the manner
|
||||
permitted by these terms. You may not copy, modify, distribute, sell, or lease
|
||||
any part of our Services or included software, nor may you reverse engineer or
|
||||
attempt to extract the source code of that software, unless laws prohibit those
|
||||
restrictions or you have our written permission.
|
||||
|
||||
Some software used in our Services may be offered under an open source
|
||||
license that we will make available to you. There may be provisions in the
|
||||
open source license that expressly override some of these terms.
|
||||
|
||||
|
||||
### Modifying and Terminating our Services
|
||||
|
||||
We are constantly changing and improving our Services. We may add or remove
|
||||
functionalities or features, and we may suspend or stop a Service
|
||||
altogether.
|
||||
|
||||
You can stop using our Services at any time, although we'll be sorry to see
|
||||
you go. Kandra Labs may also stop providing Services to you, or add or create new
|
||||
limits to our Services at any time.
|
||||
|
||||
We believe that you own your data and preserving your access to such data is
|
||||
important. If we discontinue a Service, we will, if it is practical in our sole
|
||||
discretion, give you reasonable advance notice and a chance to get information
|
||||
out of that Service.
|
||||
|
||||
|
||||
### Our Warranties and Disclaimers
|
||||
|
||||
We hope that you will enjoy using our Services, but there are certain things
|
||||
that we don't promise about our Services.
|
||||
|
||||
OTHER THAN AS EXPRESSLY SET OUT IN THESE TERMS, NEITHER KANDRA LABS NOR ITS
|
||||
SUPPLIERS OR DISTRIBUTORS MAKE ANY SPECIFIC PROMISES ABOUT THE SERVICES. FOR
|
||||
EXAMPLE, WE DON'T MAKE ANY COMMITMENTS ABOUT THE CONTENT WITHIN THE SERVICES,
|
||||
THE SPECIFIC FUNCTION OF THE SERVICES, OR THEIR RELIABILITY, AVAILABILITY, OR
|
||||
ABILITY TO MEET YOUR NEEDS. WE PROVIDE THE SERVICES "AS IS".
|
||||
|
||||
SOME JURISDICTIONS PROVIDE FOR CERTAIN WARRANTIES, LIKE THE IMPLIED WARRANTY
|
||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. TO
|
||||
THE EXTENT PERMITTED BY LAW, WE EXCLUDE ALL WARRANTIES.
|
||||
|
||||
|
||||
### Liability for our Services
|
||||
|
||||
WHEN PERMITTED BY LAW, KANDRA LABS, AND KANDRA LABS'S SUPPLIERS AND DISTRIBUTORS, WILL
|
||||
NOT BE RESPONSIBLE FOR LOST PROFITS, REVENUES, OR DATA, FINANCIAL LOSSES OR
|
||||
INDIRECT, SPECIAL, CONSEQUENTIAL, EXEMPLARY, OR PUNITIVE DAMAGES.
|
||||
|
||||
TO THE EXTENT PERMITTED BY LAW, THE TOTAL LIABILITY OF KANDRA LABS, AND ITS
|
||||
SUPPLIERS AND DISTRIBUTORS, FOR ANY CLAIM UNDER THESE TERMS, INCLUDING FOR ANY
|
||||
IMPLIED WARRANTIES, IS LIMITED TO THE GREATER OF FIVE DOLLARS ($5) OR THE
|
||||
AMOUNT PAID BY YOU TO KANDRA LABS FOR THE PAST THREE MONTHS OF THE SERVICES IN
|
||||
QUESTION.
|
||||
|
||||
IN ALL CASES, KANDRA LABS, AND ITS SUPPLIERS AND DISTRIBUTORS, WILL NOT BE LIABLE
|
||||
FOR ANY LOSS OR DAMAGE THAT IS NOT REASONABLY FORESEEABLE.
|
||||
|
||||
|
||||
### Business uses of our Services
|
||||
|
||||
If you are using our Services on behalf of a business, that business accepts
|
||||
these terms. It will hold harmless and indemnify Kandra Labs and its affiliates,
|
||||
officers, agents, and employees from any claim, suit or action arising from or
|
||||
related to the use of the Services or violation of these terms, including any
|
||||
liability or expense arising from claims, losses, damages, suits, judgments,
|
||||
litigation costs and attorneys' fees.
|
||||
|
||||
You agree that we, in our sole discretion, may use your trade names,
|
||||
trademarks, service marks, logos, domain names and other distinctive brand
|
||||
features in presentations, marketing materials, customer lists, financial
|
||||
reports and Web site listings (including links to your website) for the purpose
|
||||
of advertising or publicizing your use of our products or services.
|
||||
|
||||
### Export Compliance
|
||||
|
||||
If you are located outside of the United States or are not a U.S. person,
|
||||
you certify that you do not reside in Cuba, Iran, North Korea, Sudan, or Syria,
|
||||
and you certify the following: "We certify that this beta test software will
|
||||
only be used for beta testing purposes, and will not be rented, leased, sold,
|
||||
sublicensed, assigned, or otherwise transferred. Further, we certify that we
|
||||
will not transfer or export any product, process, or service that is the direct
|
||||
product of the beta test software."
|
||||
|
||||
|
||||
### About these Terms
|
||||
|
||||
If it turns out that a particular term is not enforceable, this will not
|
||||
affect any other terms.
|
||||
|
||||
If you do not comply with these terms, and we don't take action right away,
|
||||
this doesn't mean that we are giving up any rights that we may have (such as
|
||||
taking action in the future).
|
||||
|
||||
These terms control the relationship between Kandra Labs and you. They do not
|
||||
create any third party beneficiary rights.
|
||||
|
||||
The laws of California, U.S.A., excluding California's conflict of
|
||||
laws rules, will apply to any disputes arising out of or relating to these
|
||||
terms or the Services. All claims arising out of or relating to these terms or
|
||||
the Services will be litigated exclusively in the applicable federal or state
|
||||
courts of California, and you and Kandra Labs consent to personal jurisdiction in
|
||||
those courts.
|
||||
|
||||
Kandra Labs reserves the right to amend or modify these terms at any time and in
|
||||
any manner by providing reasonable notice to you. You agree that reasonable
|
||||
notice may be provided by posting on Kandra Labs's web site, email, or other written
|
||||
notice. By continuing to access or use the Services after revisions become
|
||||
effective, you agree to be bound by the revised terms. If you do not agree to
|
||||
the new terms, please stop using the Services.
|
||||
|
||||
These terms constitute the whole legal agreement between you and Kandra Labs, and
|
||||
completely replace any prior agreements between you and Kandra Labs in relation to
|
||||
the Services.
|
||||
|
||||
Last modified: May 7, 2021
|
||||
734
templates/corporate/policies/terms.md
Normal file
734
templates/corporate/policies/terms.md
Normal file
@@ -0,0 +1,734 @@
|
||||
# Terms of Service
|
||||
|
||||
**Effective date: February 7, 2022.** View [change history][changes-terms].
|
||||
|
||||
[changes-terms]: https://github.com/zulip/zulip/commits/main/templates/corporate/policies/terms.md
|
||||
|
||||
Welcome to Zulip. Please read on to learn the rules and restrictions that govern
|
||||
your use of our website(s), products, services and applications (the
|
||||
“Services”). If you have any questions, comments, or concerns regarding these
|
||||
terms or the Services, please contact us at:
|
||||
|
||||
* Email: [support@zulip.com](mailto:support@zulip.com)
|
||||
* Address: Kandra Labs, Inc., 584 Castro St #3175, San Francisco, CA 94114
|
||||
|
||||
These Terms of Service (the “Terms”) are a binding contract between
|
||||
you and **KANDRA LABS, INC.** (“Zulip,” “we” and “us”). Your use of
|
||||
the Services in any way means that you agree to all of these Terms,
|
||||
and these Terms will remain in effect while you use the
|
||||
Services. These Terms include the provisions in this document as well
|
||||
as those in the [Privacy Policy](/policies/privacy), [Rules of
|
||||
Use](/policies/rules), and, if applicable, [Data Processing
|
||||
Addendum](/static/images/policies/Zulip-Data-Processing-Addendum.pdf).
|
||||
|
||||
**Please read these Terms carefully.** They cover important information about
|
||||
Services provided to you and any charges, taxes, and fees we bill you. **These
|
||||
Terms include information about future changes to these Terms, automatic
|
||||
renewals, limitations of liability, a class action waiver and resolution of
|
||||
disputes by arbitration instead of in court. PLEASE NOTE THAT YOUR USE OF AND
|
||||
ACCESS TO OUR SERVICES ARE SUBJECT TO THE FOLLOWING TERMS; IF YOU DO NOT AGREE
|
||||
TO ALL OF THE FOLLOWING, YOU MAY NOT USE OR ACCESS THE SERVICES IN ANY MANNER.**
|
||||
|
||||
**ARBITRATION NOTICE AND CLASS ACTION WAIVER:** EXCEPT FOR CERTAIN TYPES OF
|
||||
DISPUTES DESCRIBED IN THE ARBITRATION AGREEMENT SECTION BELOW, YOU AGREE THAT
|
||||
DISPUTES BETWEEN YOU AND US WILL BE RESOLVED BY BINDING, INDIVIDUAL ARBITRATION
|
||||
AND YOU WAIVE YOUR RIGHT TO PARTICIPATE IN A CLASS ACTION LAWSUIT OR CLASS-WIDE
|
||||
ARBITRATION.
|
||||
|
||||
## Will these Terms ever change?
|
||||
|
||||
We are constantly trying to improve our Services, so these Terms may
|
||||
need to change along with our Services. We reserve the right to change
|
||||
the Terms at any time, but if we do, we will place a notice on our
|
||||
site located at [https://zulip.com/policies/terms](/policies/terms),
|
||||
send you an email, and/or notify you by some other means. We will
|
||||
generally aim to provide such notice about changes to the Terms at
|
||||
least 14 days in advance of the new Terms taking effect.
|
||||
|
||||
If you don’t agree with the new Terms, you are free to reject them;
|
||||
unfortunately, that means you will no longer be able to use the Services. If you
|
||||
use the Services in any way after a change to the Terms is effective, that means
|
||||
you agree to all of the changes.
|
||||
|
||||
Except for changes by us as described here, no other amendment or modification
|
||||
of these Terms will be effective unless in writing and signed by both you and
|
||||
us.
|
||||
|
||||
## What about my privacy?
|
||||
|
||||
Zulip takes the privacy of its users very seriously; see our [Privacy
|
||||
Policy](/policies/privacy) for details.
|
||||
|
||||
### Children’s Online Privacy Protection Act
|
||||
|
||||
The Children’s Online Privacy Protection Act (“COPPA”) requires that
|
||||
online service providers obtain parental consent before they knowingly
|
||||
collect personally identifiable information online from children who
|
||||
are under thirteen (13). We do not knowingly collect or solicit
|
||||
personally identifiable information from children under thirteen (13)
|
||||
years of age and children below the minimum [minimum age of consent in
|
||||
their country](/policies/age-of-consent); if you are a child under the
|
||||
age of thirteen (13) or below the minimum age of consent in your
|
||||
country, please do not attempt to register for or otherwise use the
|
||||
Services or send us any personal information. If we learn we have
|
||||
collected personal information from a child under thirteen (13) years
|
||||
of age or below the minimum age of consent in their country, we will
|
||||
delete that information as quickly as possible. If you believe that a
|
||||
child under the age of thirteen (13) or below the minimum age of
|
||||
consent in their country may have provided us personal information,
|
||||
please contact us at [privacy@zulip.com](mailto:privacy@zulip.com).
|
||||
|
||||
## What are the basics of using Zulip?
|
||||
|
||||
To use some of the Services, you may be required to sign up for an account,
|
||||
select a password and display name (“Zulip Display Name”), and provide us with
|
||||
certain information or data, such as your email address. You agree that you are
|
||||
solely responsible for ensuring that your registration information, including
|
||||
your email address, is accurate, complete and up to date. You may not select as
|
||||
your Zulip Display Name a name that you do not have the right to use, or another
|
||||
person’s name with the intent to impersonate that person. You may not transfer
|
||||
your account to anyone else without our prior written permission.
|
||||
|
||||
Additionally, you may be able to access certain parts or features of the
|
||||
Services by using your account credentials from third party services (“Third
|
||||
Party Accounts”), such as those offered by Google and Apple. By using the
|
||||
Services through a Third Party Account, you permit us to access certain
|
||||
information from such account for use by the Services. You are ultimately in
|
||||
control of how much information is accessible to us and may exercise such
|
||||
control by adjusting your privacy settings on your Third Party Account.
|
||||
|
||||
You represent and warrant that you are an individual of legal age to form a
|
||||
binding contract (or if not, you’ve received your parent’s or guardian’s
|
||||
permission to use the Services and have gotten your parent or guardian to agree
|
||||
to these Terms on your behalf). If you’re agreeing to these Terms on behalf of
|
||||
an organization or entity or creating or administering an organization or group
|
||||
in use of the Services (each such organization, entity, or group, a “Zulip
|
||||
Organization”, and each administrator of a Zulip Organization, a “Zulip
|
||||
Organization Administrator”), you represent and warrant that you are authorized
|
||||
to agree to these Terms on such Zulip Organization’s behalf and bind them to
|
||||
these Terms (in which case, the references to “you” and “your” in these Terms,
|
||||
except for in this sentence, refer to that Zulip Organization).
|
||||
|
||||
You will only use the Services for your own internal, personal use, and not on
|
||||
behalf of or for the benefit of any third party, and only in a manner that
|
||||
complies with all laws that apply to you. If your use of the Services is
|
||||
prohibited by applicable laws, then you aren’t authorized to use the Services.
|
||||
We can’t and won’t be responsible for your using the Services in a way that
|
||||
breaks the law.
|
||||
|
||||
You will not share your Zulip account or password with anyone, and you must
|
||||
protect the security of your Zulip account, your password, and any other access
|
||||
tools or credentials. You’re responsible for any activity associated with your
|
||||
Zulip account.
|
||||
|
||||
## What about notifications?
|
||||
|
||||
As part of the Services, you may receive communications through the Services,
|
||||
including notifications that Zulip sends you (for example, via email or SMS).
|
||||
When signing up for the Services, you will receive a welcome notification and
|
||||
instructions on how to stop receiving notifications. **By signing up for the
|
||||
Services and providing us with your wireless number, you confirm that you want
|
||||
Zulip to send you information regarding your account or transactions with us,
|
||||
which may include Zulip using automated dialing technology to text you at the
|
||||
wireless number you provided, and you agree to receive communications from
|
||||
Zulip, and you represent and warrant that each person you register for the
|
||||
Services or for whom you provide a wireless phone number has consented to
|
||||
receive communications from Zulip.** You agree to indemnify and hold Zulip
|
||||
harmless from and against any and all claims, liabilities, damages (actual and
|
||||
consequential), losses and expenses (including attorneys’ fees) arising from or
|
||||
in any way related to any breach of the foregoing on your part.
|
||||
|
||||
## What are my rights in the Services?
|
||||
|
||||
The materials displayed or performed or available on or through the Services,
|
||||
including, but not limited to, text, graphics, data, articles, photos, images,
|
||||
illustrations, User Submissions (as defined below) and so forth (all of the
|
||||
foregoing, the “Content”) are protected by copyright and/or other intellectual
|
||||
property laws. You promise to abide by all copyright notices, trademark rules,
|
||||
information, and restrictions contained in any Content you access through the
|
||||
Services, and you won’t use, copy, reproduce, modify, translate, publish,
|
||||
broadcast, transmit, distribute, perform, upload, display, license, sell,
|
||||
commercialize or otherwise exploit for any purpose any Content not owned by you
|
||||
in a way that violates someone else’s (including Zulip's) rights.
|
||||
|
||||
Subject to these Terms, we grant each user of the Services a worldwide,
|
||||
non-exclusive, non-sublicensable and non-transferable license to:
|
||||
|
||||
- Use (i.e., to download and display locally) Content solely for purposes of
|
||||
using the Services.
|
||||
|
||||
- Export Content via the official Zulip API and distribute such Content for
|
||||
legitimate purposes (e.g., a public archive or mirror which is approved by
|
||||
organization owners).
|
||||
|
||||
Use, reproduction, modification, distribution or storage of any Content for any
|
||||
purpose other than using the Services is expressly prohibited without prior
|
||||
written permission from us.
|
||||
|
||||
You understand that Zulip owns the Services. You won’t modify, publish,
|
||||
transmit, participate in the transfer or sale of, reproduce (except as expressly
|
||||
provided in this Section), create derivative works based on, or otherwise
|
||||
exploit any of the Services. You will also not upload to, or transmit from, the
|
||||
Services any data, file, software, or link that contains or redirects to a
|
||||
virus, Trojan horse, worm, or other harmful component or a technology that
|
||||
unlawfully accesses or downloads content or information stored within the
|
||||
Services. The Services may allow you to copy or download certain Content, but
|
||||
please remember that even where these functionalities exist, all the
|
||||
restrictions in this section still apply.
|
||||
|
||||
## What about anything I contribute to the Services? Do I have to grant any licenses to Zulip or to other users?
|
||||
|
||||
### User Submissions
|
||||
|
||||
Anything you post, upload, share, store, or otherwise provide through the
|
||||
Services is your “User Submission”. Some User Submissions may be viewable by
|
||||
other users or by anyone on the Internet. You are solely responsible for all
|
||||
User Submissions you contribute to the Services. You represent that all User
|
||||
Submissions submitted are not false, deceptive, or misleading, and are in
|
||||
compliance with all applicable laws, rules and regulations.
|
||||
|
||||
### Licenses
|
||||
Your User Submissions remain yours. These Terms don’t give us any ownership in
|
||||
your User Submissions, or any rights to them except the limited rights set forth
|
||||
below.
|
||||
|
||||
To provide the Services, we need your permission to do things like storing your
|
||||
User Submissions and showing them to the people you send messages to, or who
|
||||
otherwise have permission to see them (for example, any member of your Zulip
|
||||
Organization for a message you send to a public channel.) Our Services also
|
||||
provide you with features like sharing and searching. To provide these and other
|
||||
features, Zulip may access, use, store, copy, process, adapt, distribute,
|
||||
perform, export, and display your User Submissions. Note that the following
|
||||
licenses are subject to our [Privacy Policy](/policies/privacy) to the extent
|
||||
they relate to User Submissions that are also your personally-identifiable
|
||||
information.
|
||||
|
||||
You give us permission to do these things only as reasonably necessary (a) to
|
||||
deliver the Services; (b) to prevent or address service, security, support,
|
||||
abuse or technical issues; or (c) as required by law. This license is
|
||||
non-exclusive, worldwide, perpetual, royalty-free, fully paid, sublicensable and
|
||||
transferable to use, edit, modify, truncate, aggregate, reproduce, distribute,
|
||||
prepare derivative works of, display, perform, and otherwise fully exploit the
|
||||
User Submissions in connection with the Services and extends to our affiliates
|
||||
and trusted third parties we work with.
|
||||
|
||||
Other people may have access to your User Submissions through the Services, and
|
||||
you also give those people a non-exclusive, worldwide permission to do these
|
||||
things, only as permitted by the functionality of the Services and these Terms.
|
||||
For example:
|
||||
|
||||
- People you send a Zulip message to may view the message through the Services.
|
||||
- Your Zulip Organization Administrators may [export the Zulip Organization’s
|
||||
data](/help/export-your-organization) for archival or backup purposes, or to
|
||||
import the data into a self-hosted Zulip server.
|
||||
- Messages on a web-public channel may be viewed by anyone on the Internet.
|
||||
|
||||
When you delete your Zulip account, we will stop displaying your User
|
||||
Submissions in association with your account, if applicable. You understand that
|
||||
User Submissions may still be viewable in association with a “deleted user”
|
||||
after you delete your Zulip account. You understand and agree that it may not be
|
||||
possible to completely delete that content from Zulip's records, and that your
|
||||
User Submissions may remain viewable elsewhere to the extent that they were
|
||||
copied or stored by other users.
|
||||
|
||||
We welcome feedback, but note that by sending any feedback, you grant us an
|
||||
irrevocable, non-exclusive, royalty-free, perpetual, worldwide license to use,
|
||||
modify, prepare derivative works from, publish, distribute and sublicense any
|
||||
such feedback, and we may incorporate into our products and services any
|
||||
feedback, comments, or suggestions without any obligation or compensation to
|
||||
you.
|
||||
|
||||
## Are there restrictions in how I can use the Services?
|
||||
|
||||
You represent, warrant, and agree that you will not provide or contribute
|
||||
anything, including any Content or User Submission, to the Services, or
|
||||
otherwise use or interact with the Services, in a manner that is not consistent
|
||||
with the [Zulip Rules of Use](/policies/rules). A violation of any of the Zulip
|
||||
Rules of Use is grounds for termination of your right to use or access the
|
||||
Services.
|
||||
|
||||
## What if I see something on the Services that infringes my copyright?
|
||||
|
||||
In accordance with the DMCA, we’ve adopted the following policy toward copyright
|
||||
infringement. We reserve the right to (1) block access to or remove material
|
||||
that we believe in good faith to be copyrighted material that has been illegally
|
||||
copied and distributed by any of our advertisers, affiliates, content providers,
|
||||
members or users and (2) remove and discontinue service to repeat offenders.
|
||||
|
||||
* **Procedure for Reporting Copyright Infringements**. If you believe that
|
||||
material or content residing on or accessible through the Services infringes
|
||||
your copyright (or the copyright of someone whom you are authorized to act on
|
||||
behalf of), please send a notice of copyright infringement containing the
|
||||
following information to Zulip's Designated Agent to Receive Notification of
|
||||
Claimed Infringement (our “Designated Agent,” whose contact details are
|
||||
listed below):
|
||||
* (a) A physical or electronic signature of a person authorized to act on behalf
|
||||
of the owner of the copyright that has been allegedly infringed;
|
||||
* (b) Identification of works or materials being infringed;
|
||||
* (c) Identification of the material that is claimed to be infringing including
|
||||
information regarding the location of the infringing materials that the
|
||||
copyright owner seeks to have removed, with sufficient detail so that we
|
||||
are capable of finding and verifying its existence;
|
||||
* (d) Contact information about the notifier including address, telephone number
|
||||
and, if available, email address;
|
||||
* (e) A statement that the notifier has a good faith belief that the material
|
||||
identified in (c) is not authorized by the copyright owner, its agent,
|
||||
or the law; and
|
||||
* (f) A statement made under penalty of perjury that the information provided is
|
||||
accurate and the notifying party is authorized to make the complaint on
|
||||
behalf of the copyright owner.
|
||||
* **Once Proper Bona Fide Infringement Notification is Received by the
|
||||
Designated Agent**. Upon receipt of a proper notice of copyright
|
||||
infringement, we reserve the right to:
|
||||
* (a) remove or disable access to the infringing material;
|
||||
* (b) notify the content provider who is accused of infringement that we have
|
||||
removed or disabled access to the applicable material; and
|
||||
* (c) terminate such content provider's access to the Services if they are a
|
||||
repeat offender.
|
||||
* **Procedure to Supply a Counter-Notice to the Designated Agent**. If the
|
||||
content provider believes that the material that was removed (or to which
|
||||
access was disabled) is not infringing, or the content provider believes that
|
||||
it has the right to post and use such material from the copyright owner, the
|
||||
content provider may send us a counter-notice containing the following
|
||||
information to the Designated Agent:
|
||||
* (a) A physical or electronic signature of the content provider;
|
||||
* (b) Identification of the material that has been removed or to which access
|
||||
has been disabled and the location at which the material appeared before
|
||||
it was removed or disabled;
|
||||
* (c) A statement under penalty of perjury that the content provider has a
|
||||
good faith belief that the material was removed or disabled as a result
|
||||
of mistake or misidentification of the material; and
|
||||
* (d) Content provider's name, address, telephone number, and, if available,
|
||||
email address, and a statement that the content provider consents to the
|
||||
jurisdiction of the Federal Court for the judicial district in which the
|
||||
content provider’s address is located, or, if the content provider's
|
||||
address is located outside the United States, for any judicial district
|
||||
in which Company is located, and that the content provider will accept
|
||||
service of process from the person who provided notification of the
|
||||
alleged infringement or an agent of such person.
|
||||
|
||||
If a counter-notice is received by the Designated Agent, Company may, in its
|
||||
discretion, send a copy of the counter-notice to the original complaining party
|
||||
informing that person that Company may replace the removed material or cease
|
||||
disabling it in 10 business days. Unless the copyright owner files an action
|
||||
seeking a court order against the content provider accused of committing
|
||||
infringement, the removed material may be replaced or access to it restored 10
|
||||
business days or more after receipt of the counter-notice, at Company's
|
||||
discretion.
|
||||
|
||||
Please contact Zulip's Designated Agent at the following address:
|
||||
|
||||
Kandra Labs, Inc.<br/>
|
||||
Attn: DMCA Designated Agent<br/>
|
||||
584 Castro St #3175<br/>
|
||||
San Francisco, CA 94114
|
||||
|
||||
## Who is responsible for what I see and do on the Services?
|
||||
|
||||
Any information or Content publicly posted or privately transmitted through the
|
||||
Services is the sole responsibility of the person from whom such Content
|
||||
originated, and you access all such information and Content at your own risk,
|
||||
and we aren’t liable for any errors or omissions in that information or Content
|
||||
or for any damages or loss you might suffer in connection with it. We cannot
|
||||
control and have no duty to take any action regarding how you may interpret and
|
||||
use the Content or what actions you may take as a result of having been exposed
|
||||
to the Content, and you hereby release us from all liability for you having
|
||||
acquired or not acquired Content through the Services. We can’t guarantee the
|
||||
identity of any users with whom you interact in using the Services and are not
|
||||
responsible for which users gain access to the Services.
|
||||
|
||||
You are responsible for all Content you contribute, in any manner, to the
|
||||
Services, and you represent and warrant you have all rights necessary to do so,
|
||||
in the manner in which you contribute it.
|
||||
|
||||
The Services may contain links or connections to third-party websites or
|
||||
services that are not owned or controlled by Zulip. When you access third-party
|
||||
websites or use third-party services, you accept that there are risks in doing
|
||||
so, and that Zulip is not responsible for such risks.
|
||||
|
||||
Zulip has no control over, and assumes no responsibility for, the content,
|
||||
accuracy, privacy policies, or practices of or opinions expressed in any
|
||||
third-party websites or by any third party that you interact with through the
|
||||
Services. In addition, Zulip will not and cannot monitor, verify, censor or edit
|
||||
the content of any third-party site or service. We encourage you to be aware
|
||||
when you leave the Services and to read the terms and conditions and privacy
|
||||
policy of each third-party website or service that you visit or utilize. By
|
||||
using the Services, you release and hold us harmless from any and all liability
|
||||
arising from your use of any third-party website or service.
|
||||
|
||||
Your interactions with Zulip Organizations and/or individuals found on or
|
||||
through the Services, including payment and delivery of goods or services, and
|
||||
any other terms, conditions, warranties or representations associated with such
|
||||
dealings, are solely between you and such organizations and/or individuals. You
|
||||
should make whatever investigation you feel necessary or appropriate before
|
||||
proceeding with any online or offline transaction with any of these third
|
||||
parties. You agree that Zulip shall not be responsible or liable for any loss or
|
||||
damage of any sort incurred as the result of any such dealings.
|
||||
|
||||
If there is a dispute between participants on this site or Services, or between
|
||||
users and any third party, you agree that Zulip is under no obligation to become
|
||||
involved. In the event that you have a dispute with one or more other users, you
|
||||
release Zulip, its directors, officers, employees, agents, and successors from
|
||||
claims, demands, and damages of every kind or nature, known or unknown,
|
||||
suspected or unsuspected, disclosed or undisclosed, arising out of or in any way
|
||||
related to such disputes and/or our Services. You shall and hereby do waive
|
||||
California Civil Code Section 1542 or any similar law of any jurisdiction, which
|
||||
says in substance: “A general release does not extend to claims that the
|
||||
creditor or releasing party does not know or suspect to exist in his or her
|
||||
favor at the time of executing the release and that, if known by him or her,
|
||||
would have materially affected his or her settlement with the debtor or released
|
||||
party.”
|
||||
|
||||
## Will Zulip ever change the Services?
|
||||
|
||||
We’re always trying to improve our Services, so they may change over time. We
|
||||
may suspend or discontinue any part of the Services, or we may introduce new
|
||||
features or impose limits on certain features or restrict access to parts or all
|
||||
of the Services. We reserve the right to remove any Content from the Services at
|
||||
any time, for any reason (including, but not limited to, if someone alleges you
|
||||
contributed that Content in violation of these Terms), in our sole discretion,
|
||||
and without notice.
|
||||
|
||||
## Do the Services cost anything?
|
||||
|
||||
The Services may be free or we may charge a fee for using the Services. If you
|
||||
are using a free version of the Services, we will notify you before any Services
|
||||
you are then using begin carrying a fee, and if you wish to continue using such
|
||||
Services, you must pay all applicable fees for such Services. Note that if you
|
||||
elect to receive text messages through the Services, data and message rates may
|
||||
apply. Any and all such charges, fees or costs are your sole responsibility. You
|
||||
should consult with your wireless carrier to determine what rates, charges, fees
|
||||
or costs may apply to your use of the Services.
|
||||
|
||||
* (a) **Paid Services**. Certain of our Services may be subject to payments now or
|
||||
in the future (the “Paid Services”). Please see our Paid Services page:
|
||||
<https://zulip.com/plans/> for a description of the current Paid Services.
|
||||
Please note that any payment terms presented to you in the process of using
|
||||
or signing up for a Paid Service are deemed part of these Terms.
|
||||
* (b) **Billing**. We use a third-party payment processor (the “Payment Processor”)
|
||||
to bill you through a payment account linked to your account on the Services
|
||||
(your “Billing Account”) for use of the Paid Services. The processing of
|
||||
payments will be subject to the terms, conditions and privacy policies of the
|
||||
Payment Processor in addition to these Terms. Currently, we use Stripe, Inc.
|
||||
as our Payment Processor. You can access Stripe’s Terms of Service at
|
||||
<https://stripe.com/us/checkout/legal> and their Privacy Policy at
|
||||
<https://stripe.com/us/privacy>. We are not responsible for any error by, or
|
||||
other acts or omissions of, the Payment Processor. By choosing to use Paid
|
||||
Services, you agree to pay us, through the Payment Processor, all charges at
|
||||
the prices then in effect for any use of such Paid Services in accordance
|
||||
with the applicable payment terms, and you authorize us, through the Payment
|
||||
Processor, to charge your chosen payment provider (your “Payment Method”).
|
||||
You agree to make payment using that selected Payment Method. We reserve the
|
||||
right to correct any errors or mistakes that the Payment Processor makes even
|
||||
if it has already requested or received payment.
|
||||
* (c) **Payment Method**. The terms of your payment will be based on your Payment
|
||||
Method and may be determined by agreements between you and the financial
|
||||
institution, credit card issuer or other provider of your chosen Payment
|
||||
Method. If we, through the Payment Processor, do not receive payment from
|
||||
you, you agree to pay all amounts due on your Billing Account upon demand.
|
||||
* (d) **Recurring Billing**. Some of the Paid Services may consist of an initial
|
||||
period, for which there is a one-time charge, followed by recurring period
|
||||
charges as agreed to by you. By choosing a recurring payment plan, you
|
||||
acknowledge that such Services have an initial and recurring payment feature
|
||||
and you accept responsibility for all recurring charges prior to
|
||||
cancellation. WE MAY SUBMIT PERIODIC CHARGES (E.G., MONTHLY) WITHOUT FURTHER
|
||||
AUTHORIZATION FROM YOU, UNTIL YOU PROVIDE PRIOR NOTICE (RECEIPT OF WHICH IS
|
||||
CONFIRMED BY US) THAT YOU HAVE TERMINATED THIS AUTHORIZATION OR WISH TO
|
||||
CHANGE YOUR PAYMENT METHOD. SUCH NOTICE WILL NOT AFFECT CHARGES SUBMITTED
|
||||
BEFORE WE REASONABLY COULD ACT. TO TERMINATE YOUR AUTHORIZATION OR CHANGE
|
||||
YOUR PAYMENT METHOD, GO TO YOUR [BILLING SETTINGS](/billing/).
|
||||
* (e) **Current Information Required**. YOU MUST PROVIDE CURRENT, COMPLETE AND
|
||||
ACCURATE INFORMATION FOR YOUR BILLING ACCOUNT. YOU MUST PROMPTLY UPDATE ALL
|
||||
INFORMATION TO KEEP YOUR BILLING ACCOUNT CURRENT, COMPLETE AND ACCURATE (SUCH
|
||||
AS A CHANGE IN BILLING ADDRESS, CREDIT CARD NUMBER, OR CREDIT CARD EXPIRATION
|
||||
DATE), AND YOU MUST PROMPTLY NOTIFY US OR OUR PAYMENT PROCESSOR IF YOUR
|
||||
PAYMENT METHOD IS CANCELED (E.G., FOR LOSS OR THEFT) OR IF YOU BECOME AWARE
|
||||
OF A POTENTIAL BREACH OF SECURITY, SUCH AS THE UNAUTHORIZED DISCLOSURE OR USE
|
||||
OF YOUR USER NAME OR PASSWORD. CHANGES TO SUCH INFORMATION CAN BE MADE IN
|
||||
YOUR [BILLING SETTINGS](/billing/). IF YOU FAIL TO PROVIDE ANY OF THE
|
||||
FOREGOING INFORMATION, YOU AGREE THAT WE MAY CONTINUE CHARGING YOU FOR ANY
|
||||
USE OF PAID SERVICES UNDER YOUR BILLING ACCOUNT UNLESS YOU HAVE TERMINATED
|
||||
YOUR PAID SERVICES AS SET FORTH ABOVE.
|
||||
* (f) **Change in Amount Authorized**. If the amount to be charged to your Billing
|
||||
Account varies from the amount you preauthorized (other than due to the
|
||||
imposition or change in the amount of sales taxes), you have the right to
|
||||
receive, and we shall provide, notice of the amount to be charged and the
|
||||
date of the charge before the scheduled date of the transaction. Any
|
||||
agreement you have with your payment provider will govern your use of your
|
||||
Payment Method. You agree that we may accumulate charges incurred and submit
|
||||
them as one or more aggregate charges during or at the end of each billing
|
||||
cycle.
|
||||
* (g) **Auto-Renewal for Paid Services**. Unless you opt out of auto-renewal, which
|
||||
can be done through your [billing settings](/billing/), any Paid Services you
|
||||
have signed up for will be automatically extended for successive renewal
|
||||
periods of the same duration as the subscription term originally selected, at
|
||||
the then-current non-promotional rate. To change or resign your Paid Services
|
||||
at any time, go to your [billing settings](/billing/). If you terminate a
|
||||
Paid Service, you may use your subscription until the end of your
|
||||
then-current term, and your subscription will not be renewed after your
|
||||
then-current term expires. However, you will not be eligible for a prorated
|
||||
refund of any portion of the subscription fee paid for the then-current
|
||||
subscription period. IF YOU DO NOT WANT TO CONTINUE TO BE CHARGED ON A
|
||||
RECURRING BASIS, YOU MUST CANCEL THE APPLICABLE PAID SERVICE THROUGH YOUR
|
||||
[BILLING SETTINGS](/billing/) OR TERMINATE YOUR ZULIP ACCOUNT BEFORE THE END
|
||||
OF THE RECURRING TERM. PAID SERVICES CANNOT BE TERMINATED BEFORE THE END OF
|
||||
THE PERIOD FOR WHICH YOU HAVE ALREADY PAID, AND EXCEPT AS EXPRESSLY PROVIDED
|
||||
IN THESE TERMS, ZULIP WILL NOT REFUND ANY FEES THAT YOU HAVE ALREADY PAID.
|
||||
* (h) **Reaffirmation of Authorization**. Your non-termination or continued use of
|
||||
a Paid Service reaffirms that we are authorized to charge your Payment Method
|
||||
for that Paid Service. We may submit those charges for payment and you will
|
||||
be responsible for such charges. This does not waive our right to seek
|
||||
payment directly from you. Your charges may be payable in advance, in
|
||||
arrears, per usage, or as otherwise described when you initially selected to
|
||||
use the Paid Service.
|
||||
* (i) **Free Trials and Other Promotions**. Any free trial or other promotion that
|
||||
provides access to a Paid Service may only be used within the specified time
|
||||
of the trial. You must stop using a Paid Service before the end of the trial
|
||||
period in order to avoid being charged for that Paid Service. If you cancel
|
||||
prior to the end of the trial period and are inadvertently charged for a Paid
|
||||
Service, please contact us at [support@zulip.com](mailto:support@zulip.com).
|
||||
|
||||
## What if I want to stop using the Services?
|
||||
|
||||
You’re free to stop using the Services at any time by contacting us at
|
||||
[support@zulip.com](mailto:support@zulip.com); please refer to our [Privacy
|
||||
Policy](/policies/privacy), as well as the licenses above, to understand how we
|
||||
treat information you provide to us after you have stopped using our Services.
|
||||
|
||||
Zulip is also free to terminate (or suspend access to) your use of the Services
|
||||
or your account for any reason at our sole discretion, including your breach of
|
||||
these Terms. Zulip has the sole right to decide whether you are in violation of
|
||||
any of the restrictions set forth in these Terms.
|
||||
|
||||
Account termination may result in destruction of any Content associated with
|
||||
your account, so keep that in mind before you decide to terminate your account.
|
||||
We will try to provide advance notice to you prior to our terminating your
|
||||
account so that you are able to retrieve any important User Submissions you may
|
||||
have stored in your account (to the extent allowed by law and these Terms), but
|
||||
we may not do so if we determine it would be impractical, illegal, not in the
|
||||
interest of someone’s safety or security, or otherwise harmful to the rights or
|
||||
property of Zulip or third parties.
|
||||
|
||||
If you have deleted your account by mistake, contact us immediately at
|
||||
[support@zulip.com](mailto:support@zulip.com) – we will try to help, but
|
||||
unfortunately, we can’t promise that we can recover or restore anything.
|
||||
|
||||
Provisions that, by their nature, should survive termination of these Terms
|
||||
shall survive termination. By way of example, all of the following will survive
|
||||
termination: any obligation you have to pay us or indemnify us, any limitations
|
||||
on our liability, any terms regarding ownership or intellectual property rights,
|
||||
and terms regarding disputes between us, including without limitation the
|
||||
arbitration agreement.
|
||||
|
||||
## What about Mobile Applications?
|
||||
|
||||
You acknowledge and agree that the availability of our mobile application is
|
||||
dependent on the third party stores from which you download the application,
|
||||
e.g., the App Store from Apple or the Play Store from Google (each an “App
|
||||
Store”). Each App Store may have its own terms and conditions to which you must
|
||||
agree before downloading mobile applications from such store, including the
|
||||
specific terms relating to Apple App Store set forth below. You agree to comply
|
||||
with, and your license to use our application is conditioned upon your
|
||||
compliance with, such App Store terms and conditions. To the extent such other
|
||||
terms and conditions from such App Store are less restrictive than, or otherwise
|
||||
conflict with, the terms and conditions of these Terms of Service, the more
|
||||
restrictive or conflicting terms and conditions in these Terms of Service apply.
|
||||
|
||||
### I use the Zulip App available via the Apple App Store – should I know anything about that?
|
||||
|
||||
These Terms apply to your use of all the Services, including our iOS
|
||||
applications (the “Application”) available via the Apple, Inc. (“Apple”) App
|
||||
Store, but the following additional terms also apply to the Application:
|
||||
|
||||
* (a) Both you and Zulip acknowledge that the Terms are concluded between you and
|
||||
Zulip only, and not with Apple, and that Apple is not responsible for the
|
||||
Application or the Content;
|
||||
* (b) The Application is licensed to you on a limited, non-exclusive,
|
||||
non-transferable, non-sublicensable basis, solely to be used in connection
|
||||
with the Services for your private, internal, personal use, subject to all
|
||||
the terms and conditions of these Terms as they are applicable to the
|
||||
Services;
|
||||
* (c) You will only use the Application in connection with an Apple device that you
|
||||
own or control;
|
||||
* (d) You acknowledge and agree that Apple has no obligation whatsoever to furnish
|
||||
any maintenance and support services with respect to the Application;
|
||||
* (e) In the event of any failure of the Application to conform to any applicable
|
||||
warranty, including those implied by law, you may notify Apple of such
|
||||
failure; upon notification, Apple’s sole warranty obligation to you will be
|
||||
to refund to you the purchase price, if any, of the Application;
|
||||
* (f) You acknowledge and agree that Zulip, and not Apple, is responsible for
|
||||
addressing any claims you or any third party may have in relation to the
|
||||
Application;
|
||||
* (g) You acknowledge and agree that, in the event of any third-party claim that
|
||||
the Application or your possession and use of the Application infringes that
|
||||
third party’s intellectual property rights, Zulip, and not Apple, will be
|
||||
responsible for the investigation, defense, settlement and discharge of any
|
||||
such infringement claim;
|
||||
* (h) You represent and warrant that you are not located in a country subject to a
|
||||
U.S. Government embargo, or that has been designated by the U.S. Government
|
||||
as a “terrorist supporting” country, and that you are not listed on any U.S.
|
||||
Government list of prohibited or restricted parties;
|
||||
* (i) Both you and Zulip acknowledge and agree that, in your use of the
|
||||
Application, you will comply with any applicable third-party terms of
|
||||
agreement which may affect or be affected by such use; and
|
||||
* (j) Both you and Zulip acknowledge and agree that Apple and Apple’s subsidiaries
|
||||
are third-party beneficiaries of these Terms, and that upon your acceptance
|
||||
of these Terms, Apple will have the right (and will be deemed to have
|
||||
accepted the right) to enforce these Terms against you as the third-party
|
||||
beneficiary hereof.
|
||||
|
||||
## What else do I need to know?
|
||||
|
||||
*Warranty Disclaimer.* Zulip and its licensors, suppliers, partners, parent,
|
||||
subsidiaries or affiliated entities, and each of their respective officers,
|
||||
directors, members, employees, consultants, contract employees, representatives
|
||||
and agents, and each of their respective successors and assigns (Zulip and all
|
||||
such parties together, the “Zulip Parties”) make no representations or
|
||||
warranties concerning the Services, including without limitation regarding any
|
||||
Content contained in or accessed through the Services, and the Zulip Parties
|
||||
will not be responsible or liable for the accuracy, copyright compliance,
|
||||
legality, or decency of material contained in or accessed through the Services
|
||||
or any claims, actions, suits, procedures, costs, expenses, damages or
|
||||
liabilities arising out of use of, or in any way related to your participation
|
||||
in, the Services. The Zulip Parties make no representations or warranties
|
||||
regarding suggestions or recommendations of services or products offered or
|
||||
purchased through or in connection with the Services. THE SERVICES AND CONTENT
|
||||
ARE PROVIDED BY ZULIP (AND ITS LICENSORS AND SUPPLIERS) ON AN “AS-IS” BASIS,
|
||||
WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT
|
||||
LIMITATION, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, OR THAT USE OF THE SERVICES WILL BE UNINTERRUPTED OR
|
||||
ERROR-FREE. SOME STATES DO NOT ALLOW LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY
|
||||
LASTS, SO THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU.
|
||||
|
||||
*Limitation of Liability*. TO THE FULLEST EXTENT ALLOWED BY APPLICABLE LAW,
|
||||
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
TORT, CONTRACT, STRICT LIABILITY, OR OTHERWISE) SHALL ANY OF THE ZULIP PARTIES
|
||||
BE LIABLE TO YOU OR TO ANY OTHER PERSON FOR (A) ANY INDIRECT, SPECIAL,
|
||||
INCIDENTAL, PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND, INCLUDING DAMAGES FOR
|
||||
LOST PROFITS, BUSINESS INTERRUPTION, LOSS OF DATA, LOSS OF GOODWILL, WORK
|
||||
STOPPAGE, ACCURACY OF RESULTS, OR COMPUTER FAILURE OR MALFUNCTION, (B) ANY
|
||||
SUBSTITUTE GOODS, SERVICES OR TECHNOLOGY, (C) ANY AMOUNT, IN THE AGGREGATE, IN
|
||||
EXCESS OF THE GREATER OF (I) ONE-HUNDRED ($100) DOLLARS OR (II) THE AMOUNTS PAID
|
||||
AND/OR PAYABLE BY YOU TO ZULIP IN CONNECTION WITH THE SERVICES IN THE TWELVE
|
||||
(12) MONTH PERIOD PRECEDING THIS APPLICABLE CLAIM OR (D) ANY MATTER BEYOND OUR
|
||||
REASONABLE CONTROL. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF
|
||||
INCIDENTAL OR CONSEQUENTIAL OR CERTAIN OTHER DAMAGES, SO THE ABOVE LIMITATION
|
||||
AND EXCLUSIONS MAY NOT APPLY TO YOU.
|
||||
|
||||
*Indemnity*. To the fullest extent allowed by applicable law, you agree to
|
||||
indemnify and hold the Zulip Parties harmless from and against any and all
|
||||
claims, liabilities, damages (actual and consequential), losses and expenses
|
||||
(including attorneys’ fees) arising from or in any way related to any claims
|
||||
relating to (a) your use of the Services (including any actions taken by a third
|
||||
party using your account), and (b) your violation of these Terms.
|
||||
|
||||
*Assignment*. You may not assign, delegate or transfer these Terms or your
|
||||
rights or obligations hereunder, or your Services account, in any way (by
|
||||
operation of law or otherwise) without Zulip's prior written consent. We may
|
||||
transfer, assign, or delegate these Terms and our rights and obligations without
|
||||
consent.
|
||||
|
||||
*Choice of Law*. These Terms are governed by and will be construed under the
|
||||
Federal Arbitration Act, applicable federal law, and the laws of the State of
|
||||
California, without regard to the conflicts of laws provisions thereof.
|
||||
|
||||
*Arbitration Agreement.* Please read the following ARBITRATION AGREEMENT
|
||||
carefully because it requires you to arbitrate certain disputes and claims with
|
||||
Zulip and limits the manner in which you can seek relief from Zulip. Both you
|
||||
and Zulip acknowledge and agree that for the purposes of any dispute arising out
|
||||
of or relating to the subject matter of these Terms, Zulip's officers,
|
||||
directors, employees and independent contractors (“Personnel”) are third-party
|
||||
beneficiaries of these Terms, and that upon your acceptance of these Terms,
|
||||
Personnel will have the right (and will be deemed to have accepted the right) to
|
||||
enforce these Terms against you as the third-party beneficiary hereof.
|
||||
|
||||
* (a) *Arbitration Rules; Applicability of Arbitration Agreement*. The parties
|
||||
shall use their best efforts to settle any dispute, claim, question, or
|
||||
disagreement arising out of or relating to the subject matter of these Terms
|
||||
directly through good-faith negotiations, which shall be a precondition to
|
||||
either party initiating arbitration. If such negotiations do not resolve the
|
||||
dispute, it shall be finally settled by binding arbitration in San Francisco
|
||||
County, California. The arbitration will proceed in the English language, in
|
||||
accordance with the JAMS Streamlined Arbitration Rules and Procedures (the
|
||||
“Rules”) then in effect, by one commercial arbitrator with substantial
|
||||
experience in resolving intellectual property and commercial contract
|
||||
disputes. The arbitrator shall be selected from the appropriate list of JAMS
|
||||
arbitrators in accordance with such Rules. Judgment upon the award rendered by
|
||||
such arbitrator may be entered in any court of competent jurisdiction.
|
||||
|
||||
* (b) *Costs of Arbitration*. The Rules will govern payment of all arbitration
|
||||
fees. Zulip will pay all arbitration fees for claims less than seventy-five
|
||||
thousand ($75,000) dollars. Zulip will not seek its attorneys’ fees and costs
|
||||
in arbitration unless the arbitrator determines that your claim is frivolous.
|
||||
|
||||
* (c) *Small Claims Court; Infringement*. Either you or Zulip may assert claims,
|
||||
if they qualify, in small claims court in San Francisco County, California or
|
||||
any United States county where you live or work. Furthermore, notwithstanding
|
||||
the foregoing obligation to arbitrate disputes, each party shall have the
|
||||
right to pursue injunctive or other equitable relief at any time, from any
|
||||
court of competent jurisdiction, to prevent the actual or threatened
|
||||
infringement, misappropriation or violation of a party's copyrights,
|
||||
trademarks, trade secrets, patents or other intellectual property rights.
|
||||
|
||||
* (d) *Waiver of Jury Trial*. YOU AND ZULIP WAIVE ANY CONSTITUTIONAL AND
|
||||
STATUTORY RIGHTS TO GO TO COURT AND HAVE A TRIAL IN FRONT OF A JUDGE OR JURY.
|
||||
You and Zulip are instead choosing to have claims and disputes resolved by
|
||||
arbitration. Arbitration procedures are typically more limited, more
|
||||
efficient, and less costly than rules applicable in court and are subject to
|
||||
very limited review by a court. In any litigation between you and Zulip over
|
||||
whether to vacate or enforce an arbitration award, YOU AND ZULIP WAIVE ALL
|
||||
RIGHTS TO A JURY TRIAL, and elect instead to have the dispute be resolved by a
|
||||
judge.
|
||||
|
||||
* (e) *Waiver of Class or Consolidated Actions*. ALL CLAIMS AND DISPUTES WITHIN
|
||||
THE SCOPE OF THIS ARBITRATION AGREEMENT MUST BE ARBITRATED OR LITIGATED ON AN
|
||||
INDIVIDUAL BASIS AND NOT ON A CLASS BASIS. CLAIMS OF MORE THAN ONE CUSTOMER OR
|
||||
USER CANNOT BE ARBITRATED OR LITIGATED JOINTLY OR CONSOLIDATED WITH THOSE OF
|
||||
ANY OTHER CUSTOMER OR USER. If however, this waiver of class or consolidated
|
||||
actions is deemed invalid or unenforceable, neither you nor Zulip is entitled
|
||||
to arbitration; instead all claims and disputes will be resolved in a court as
|
||||
set forth in (g) below.
|
||||
|
||||
* (f) *Opt-out*. You have the right to opt out of the provisions of this
|
||||
Arbitration Agreement by sending written notice of your decision to opt out to
|
||||
the following address: 584 Castro St #3175, San Francisco, CA 94114 postmarked
|
||||
within thirty (30) days of first accepting these Terms. You must include (i)
|
||||
your name and residence address, (ii) the email address and/or telephone
|
||||
number associated with your account, and (iii) a clear statement that you want
|
||||
to opt out of these Terms’ arbitration agreement.
|
||||
|
||||
* (g) *Exclusive Venue*. If you send the opt-out notice in (f), and/or in any
|
||||
circumstances where the foregoing arbitration agreement permits either you or
|
||||
Zulip to litigate any dispute arising out of or relating to the subject matter
|
||||
of these Terms in court, then the foregoing arbitration agreement will not
|
||||
apply to either party, and both you and Zulip agree that any judicial
|
||||
proceeding (other than small claims actions) will be brought in the state or
|
||||
federal courts located in, respectively, San Francisco County, California, or
|
||||
the federal district in which that county falls.
|
||||
|
||||
* (h) *Severability*. If the prohibition against class actions and other claims
|
||||
brought on behalf of third parties contained above is found to be
|
||||
unenforceable, then all of the preceding language in this Arbitration
|
||||
Agreement section will be null and void. This arbitration agreement will
|
||||
survive the termination of your relationship with Zulip.
|
||||
|
||||
*Miscellaneous*. You will be responsible for paying, withholding, filing, and
|
||||
reporting all taxes, duties, and other governmental assessments associated with
|
||||
your activity in connection with the Services, provided that Zulip may, in its
|
||||
sole discretion, do any of the foregoing on your behalf or for itself as it sees
|
||||
fit. The failure of either you or us to exercise, in any way, any right herein
|
||||
shall not be deemed a waiver of any further rights hereunder. If any provision
|
||||
of these Terms are found to be unenforceable or invalid, that provision will be
|
||||
limited or eliminated, to the minimum extent necessary, so that these Terms
|
||||
shall otherwise remain in full force and effect and enforceable. You and Zulip
|
||||
agree that these Terms are the complete and exclusive statement of the mutual
|
||||
understanding between you and Zulip, and that these Terms supersede and cancel
|
||||
all previous written and oral agreements, communications and other
|
||||
understandings relating to the subject matter of these Terms. You hereby
|
||||
acknowledge and agree that neither these Terms nor your use of the Services
|
||||
makes you an employee, agent, partner, or joint venture of Zulip, and you do not
|
||||
have any authority of any kind to bind Zulip in any respect whatsoever.
|
||||
|
||||
Except as expressly set forth in the sections above regarding the Apple
|
||||
Application and the arbitration agreement, you and Zulip agree there are no
|
||||
third-party beneficiaries intended under these Terms.
|
||||
418
templates/corporate/pricing_model.html
Normal file
418
templates/corporate/pricing_model.html
Normal file
@@ -0,0 +1,418 @@
|
||||
<div id="plans-and-pricing" class="pricing-model {% if is_self_hosted_realm %}is-self-hosted-realm{% endif %}">
|
||||
<div class="padded-content">
|
||||
{% if is_self_hosted_realm %}
|
||||
<h1>Choose a plan</h1>
|
||||
{% else %}
|
||||
<h1>Zulip plans and pricing</h1>
|
||||
<div class="h1-subheader">
|
||||
You can <a href="https://zulip.com/help/zulip-cloud-or-self-hosting">move
|
||||
freely</a> between <a href="/zulip-cloud/">Zulip Cloud</a>
|
||||
hosting and your own servers with our high quality <a
|
||||
href="/help/export-your-organization">export</a> and
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html">import
|
||||
</a> tools.
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="pricing-container">
|
||||
{% if is_self_hosted_realm %}
|
||||
<div class="cloud-plan-title inactive-pricing-tab">
|
||||
<h2>Zulip Cloud</h2>
|
||||
<p>
|
||||
<a href="https://zulip.com/plans/">View Zulip Cloud plans and pricing</a>.
|
||||
</p>
|
||||
</div>
|
||||
{% else %}
|
||||
<div id="cloud" class="cloud-plan-title pricing-tab">
|
||||
<h2>Zulip Cloud</h2>
|
||||
<p>
|
||||
Simple managed solution.<br />Always up to date.
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="pricing-pane-scroll-container cloud-scroll">
|
||||
<div class="cloud-plan-pricing pricing-pane">
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Free</h2>
|
||||
<ul class="feature-list">
|
||||
<li><span>10,000 messages of search history</span></li>
|
||||
<li><span>File storage up to 5 GB total</span></li>
|
||||
<li><span><a href="{{ billing_base_url }}/plans/#cloud-plan-comparison">Complete</a> team chat solution</span></li>
|
||||
<li><span><a href="/integrations/">Hundreds of integrations</a></span></li>
|
||||
<li><span>Advanced <a href="/help/user-roles">roles</a> and <a href="/help/manage-permissions">permissions</a></span></li>
|
||||
<li><span><a href="/help/guest-users">Guest</a>
|
||||
accounts</span></li>
|
||||
<li><span>Many organizations are eligible for a <a href="{{ billing_base_url }}/plans/#cloud-sponsorships">free Standard plan</a></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
{% if is_cloud_realm and on_free_tier %}
|
||||
<div class="pricing-details"></div>
|
||||
<a href='/upgrade/' class="button current-plan-button" type="button">
|
||||
<i class="icon current-plan-icon"></i>
|
||||
Current plan
|
||||
</a>
|
||||
{% elif not is_cloud_realm or is_new_customer %}
|
||||
<a href="/new/" class="button get-started-button">
|
||||
Create organization
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Standard</h2>
|
||||
<ul class="feature-list">
|
||||
<li><span>Unlimited search history</span></li>
|
||||
<li><span>File storage up to 5 GB per user</span></li>
|
||||
<li><span>Flexible permissions with <a href="/help/user-groups">custom groups</a></span></li>
|
||||
<li><span><a href="/help/message-retention-policy">Message retention policies</a></span></li>
|
||||
<li><span>Brand Zulip with your logo</span></li>
|
||||
<li><span>Priority commercial support</span></li>
|
||||
<li><span><a href="/help/public-access-option">Public access option</a></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="standard-price-box">
|
||||
<div class="price"><span class="currency-symbol">$</span>6.67</div>
|
||||
<div class="details">
|
||||
<p>
|
||||
/user/month billed annually
|
||||
or <b>$8</b> billed monthly
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% if is_cloud_realm and on_free_tier and not sponsorship_pending %}
|
||||
<a href="/upgrade/?tier={{ tier_cloud_standard }}" class="button upgrade-button">
|
||||
{% if free_trial_days %}
|
||||
Start {{ free_trial_days }}-day free trial
|
||||
{% else %}
|
||||
Upgrade to Standard
|
||||
{% endif %}
|
||||
</a>
|
||||
<!-- Sponsored realm may not have customer plan. -->
|
||||
{% elif (is_cloud_realm and is_sponsored) or (customer_plan and customer_plan.tier == customer_plan.TIER_CLOUD_STANDARD) %}
|
||||
<a href='/billing' class="button current-plan-button" type="button">
|
||||
<i class="icon current-plan-icon"></i>
|
||||
{% if on_free_trial %}
|
||||
Current plan (free trial)
|
||||
{% else %}
|
||||
Current plan
|
||||
{% endif %}
|
||||
</a>
|
||||
{% elif is_cloud_realm and sponsorship_pending %}
|
||||
<a href="/billing/" class="button current-plan-button" type="button">
|
||||
Sponsorship requested
|
||||
</a>
|
||||
{% elif customer_plan and customer_plan.tier != customer_plan.TIER_CLOUD_STANDARD %}
|
||||
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="button upgrade-button">
|
||||
Contact sales
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/upgrade/?tier={{ tier_cloud_standard }}" class="button upgrade-button">
|
||||
{% if free_trial_days %}
|
||||
Start {{ free_trial_days }}-day free trial
|
||||
{% else %}
|
||||
Upgrade to Standard
|
||||
{% endif %}
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2 class="with-fine-print">Plus <small>10 users minimum</small></h2>
|
||||
<ul class="feature-list">
|
||||
<li><span>All Standard plan features</span></li>
|
||||
<li><span>File storage up to 25 GB per user</span></li>
|
||||
<li><span><a href="/help/saml-authentication">SSO with SAML</a> (Okta, OneLogIn, etc.)</span></li>
|
||||
<li><span><a href="/help/scim">SCIM user and group sync</a></span></li>
|
||||
<li><span><a href="/help/change-organization-url">Custom domain</a></span></li>
|
||||
<li><span>Limit user list access for <a href="/help/guest-users">guests</a></span></li>
|
||||
<li><span>Priority commercial support</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="standard-price-box">
|
||||
<div class="price"><span class="currency-symbol">$</span>10</div>
|
||||
<div class="details">
|
||||
<p>
|
||||
/user/month billed annually
|
||||
<br />
|
||||
or <b>$12</b> billed monthly
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
{% if customer_plan and customer_plan.tier == customer_plan.TIER_CLOUD_PLUS %}
|
||||
<a href='/billing' class="button current-plan-button" type="button">
|
||||
<i class="icon current-plan-icon"></i>
|
||||
Current plan
|
||||
</a>
|
||||
{% elif customer_plan and customer_plan.tier != customer_plan.TIER_CLOUD_PLUS %}
|
||||
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="button upgrade-button">
|
||||
Contact sales
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/upgrade/?tier={{ tier_cloud_plus }}" class="button upgrade-button">
|
||||
Upgrade to Plus
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="self-hosted" class="self-hosted-plan-title pricing-tab">
|
||||
<h2>Self-hosted</h2>
|
||||
<p>
|
||||
Retain full control over your data.<br />100% open-source software.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="pricing-pane-scroll-container self-hosted-scroll">
|
||||
<div class="self-hosted-plan-pricing pricing-pane">
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Free</h2>
|
||||
<ul class="feature-list">
|
||||
<li><span>Complete team chat solution, with <a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">all Zulip features</a> included</span></li>
|
||||
<li><span><a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Mobile notifications</a> without limitation for eligible communities</span></li>
|
||||
<li><span><a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">Mobile notifications</a> for up to 10 users for other organizations</span></li>
|
||||
</ul>
|
||||
<a href="/help/self-hosted-billing#free-community-plan">Register now</a> for unlimited notifications:
|
||||
<em>grassroots communities</em> · <em><a href="/for/open-source/">open-source projects</a></em> · <em>academic <a href="/for/research/">research</a></em> ·
|
||||
<em>small non-profits</em> · <em>non-profit <a href="/for/events/">events</a></em> · <em>families & friends</em>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="standard-price-box">
|
||||
<div class="price">Free</div>
|
||||
</div>
|
||||
{% if is_self_hosted_realm and customer_plan and customer_plan.tier == customer_plan.TIER_SELF_HOSTED_LEGACY %}
|
||||
<span class="button current-plan-descriptor" type="button">
|
||||
<i class="icon current-plan-icon"></i>
|
||||
Unlimited push notifications<br />until {{ customer_plan.end_date.strftime('%d %B, %Y') }}
|
||||
</span>
|
||||
{% elif not is_self_hosted_realm %}
|
||||
{% if rendering_page == 'self_hosting' %}
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button get-started-button">
|
||||
Install a Zulip server
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/self-hosting/" class="button get-started-button">
|
||||
Self-host Zulip
|
||||
</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="button-placeholder"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Basic</h2>
|
||||
<ul class="feature-list">
|
||||
<li><span>Complete team chat solution, with <a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">all Zulip features</a> included</span></li>
|
||||
<li><span>Unlimited <a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">mobile notifications</a></span></li>
|
||||
<li><span><a href="/help/self-hosted-billing#how-paid-plans-support-the-zulip-project">Support</a> Zulip's open-source development</span></li>
|
||||
</ul>
|
||||
<em>85+% <a href="/help/self-hosted-billing#paid-plan-discounts">discount</a> for non-workplace users!</em>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="standard-price-box">
|
||||
{% if (has_scheduled_upgrade and scheduled_upgrade_plan.tier == scheduled_upgrade_plan.TIER_SELF_HOSTED_BASIC)
|
||||
or (is_self_hosted_realm and sponsorship_pending and requested_sponsorship_plan == "Basic")
|
||||
or (is_self_hosted_realm and customer_plan and customer_plan.tier != customer_plan.TIER_SELF_HOSTED_LEGACY)%}
|
||||
<div class="price"><span class="currency-symbol">$</span>3.50</div>
|
||||
<div class="details">
|
||||
<p>
|
||||
/user/month billed monthly
|
||||
</p>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="price"><span class="currency-symbol">$</span>3.50</div>
|
||||
<div class="details">
|
||||
<p>
|
||||
/user/month billed monthly
|
||||
</p>
|
||||
</div>
|
||||
<div class="discount">
|
||||
<b>$20/month off</b> for the first year!
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if has_scheduled_upgrade and scheduled_upgrade_plan.tier == scheduled_upgrade_plan.TIER_SELF_HOSTED_BASIC %}
|
||||
<a href="{{ billing_base_url }}/billing/" class="button current-plan-button">
|
||||
Upgrade is scheduled
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and sponsorship_pending and requested_sponsorship_plan == "Business" %}
|
||||
<a href="{{ billing_base_url }}/upgrade/?tier={{ tier_self_hosted_basic }}" class="button current-plan-button" type="button">
|
||||
Sponsorship requested
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and on_free_tier and not sponsorship_pending %}
|
||||
<a href="{{ billing_base_url }}/upgrade/?tier={{ tier_self_hosted_basic }}" class="button upgrade-button">
|
||||
{% if free_trial_days %}
|
||||
Start {{ free_trial_days }}-day free trial
|
||||
{% else %}
|
||||
Upgrade to Basic
|
||||
{% endif %}
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and customer_plan and customer_plan.tier == customer_plan.TIER_SELF_HOSTED_BASIC %}
|
||||
<a href='{{ billing_base_url }}/billing' class="button current-plan-button" type="button">
|
||||
<i class="icon current-plan-icon"></i>
|
||||
{% if on_free_trial %}
|
||||
Current plan (free trial)
|
||||
{% else %}
|
||||
Current plan
|
||||
{% endif %}
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and customer_plan and customer_plan.tier != customer_plan.TIER_SELF_HOSTED_LEGACY %}
|
||||
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="button upgrade-button">
|
||||
Contact sales
|
||||
</a>
|
||||
{% elif is_self_hosted_realm %}
|
||||
<a href="{{ billing_base_url }}/upgrade/?tier={{ tier_self_hosted_basic }}" class="button upgrade-button">
|
||||
{% if free_trial_days %}
|
||||
Start {{ free_trial_days }}-day free trial
|
||||
{% else %}
|
||||
Upgrade to Basic
|
||||
{% endif %}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/help/self-hosted-billing" target="_blank" rel="noopener noreferrer" class="button upgrade-button">
|
||||
Log in to upgrade
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2 class="with-fine-print">Business <small>25 users minimum</small></h2>
|
||||
<ul class="feature-list">
|
||||
<li><span>Complete team chat solution, with <a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">all Zulip features</a> included</span></li>
|
||||
<li><span>Unlimited <a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">mobile notifications</a></span></li>
|
||||
<li class="support-note"><span>Email and chat support for:</span></li>
|
||||
<li><span><a href="/help/saml-authentication">SSO with SAML, Microsoft Entra ID</a></span></li>
|
||||
<li><span><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">AD/LDAP user sync </a></span></li>
|
||||
<li><span><a href="/help/guest-users">Guests</a> with configurable access</span></li>
|
||||
<li><span><a href="/help/export-your-organization">Full</a> and <a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#compliance-exports">compliance</a> data exports</span></li>
|
||||
<li><span><a href="/help/message-retention-policy">Data retention policies</a></span></li>
|
||||
<li class="comparison-table-pointer"><span>And <a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">much more</a>!</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
<div class="standard-price-box">
|
||||
{% if (has_scheduled_upgrade and scheduled_upgrade_plan.tier == scheduled_upgrade_plan.TIER_SELF_HOSTED_BUSINESS)
|
||||
or (is_self_hosted_realm and sponsorship_pending and requested_sponsorship_plan == "Business")
|
||||
or (is_self_hosted_realm and customer_plan and customer_plan.tier != customer_plan.TIER_SELF_HOSTED_LEGACY)%}
|
||||
<div class="price"><span class="currency-symbol">$</span>6.67</div>
|
||||
<div class="details">
|
||||
<p>
|
||||
/user/month billed annually
|
||||
or <b>$8</b> billed monthly
|
||||
</p>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="price"><span class="currency-symbol">$</span>6.67</div>
|
||||
<div class="details">
|
||||
<p>
|
||||
/user/month billed annually
|
||||
or <b>$8</b> billed monthly
|
||||
</p>
|
||||
</div>
|
||||
<div class="discount">
|
||||
<b>$20/month off</b> for the first year!
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if has_scheduled_upgrade and scheduled_upgrade_plan.tier == scheduled_upgrade_plan.TIER_SELF_HOSTED_BUSINESS %}
|
||||
<a href="{{ billing_base_url }}/billing/" class="button current-plan-button">
|
||||
Upgrade is scheduled
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and sponsorship_pending and requested_sponsorship_plan == "Business" %}
|
||||
<a href="{{ billing_base_url }}/upgrade/?tier={{ tier_self_hosted_business }}" class="button current-plan-button" type="button">
|
||||
Sponsorship requested
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and on_free_tier and not sponsorship_pending %}
|
||||
<a href="{{ billing_base_url }}/upgrade/?tier={{ tier_self_hosted_business }}" class="button upgrade-button">
|
||||
Upgrade to Business
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and customer_plan and customer_plan.tier == customer_plan.TIER_SELF_HOSTED_BUSINESS %}
|
||||
<a href='{{ billing_base_url }}/billing' class="button current-plan-button" type="button">
|
||||
<i class="icon current-plan-icon"></i>
|
||||
{% if on_free_trial %}
|
||||
Current plan (free trial)
|
||||
{% else %}
|
||||
Current plan
|
||||
{% endif %}
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and customer_plan and customer_plan.tier != customer_plan.TIER_SELF_HOSTED_LEGACY %}
|
||||
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="button upgrade-button">
|
||||
Contact sales
|
||||
</a>
|
||||
{% elif is_self_hosted_realm %}
|
||||
<a href="{{ billing_base_url }}/upgrade/?tier={{ tier_self_hosted_business }}" class="button upgrade-button">
|
||||
Upgrade to Business
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="/help/self-hosted-billing" target="_blank" rel="noopener noreferrer" class="button upgrade-button">
|
||||
Log in to upgrade
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="price-box" tabindex="-1">
|
||||
<div class="text-content">
|
||||
<h2>Enterprise</h2>
|
||||
<ul class="feature-list">
|
||||
<li><span>Complete team chat solution, with <a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">all Zulip features</a> included</span></li>
|
||||
<li><span>Unlimited <a href="https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html">mobile notifications</a></span></li>
|
||||
<li class="support-note"><span>Email, chat and phone support for:</span></li>
|
||||
<li><span><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#openid-connect">SSO with OpenID Connect</a></span></li>
|
||||
<li><span><a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">AD/LDAP</a>, <a href="https://zulip.readthedocs.io/en/latest/production/authentication-methods.html#synchronizing-group-membership">SAML and OpenID Connect</a> group sync</span></li>
|
||||
<li><span><a href="/help/scim">SCIM user and group sync</a></span></li>
|
||||
<li><span>Implementation consulting</span></li>
|
||||
<li><span>Custom feature development</span></li>
|
||||
<li><span>Advanced deployment options</span></li>
|
||||
<li class="comparison-table-pointer"><span>And <a href="{{ billing_base_url }}/plans/#self-hosted-plan-comparison">much more!</a></span></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="text-content">
|
||||
{% if has_scheduled_upgrade and scheduled_upgrade_plan.tier == scheduled_upgrade_plan.TIER_SELF_HOSTED_ENTERPRISE %}
|
||||
<a href="{{ billing_base_url }}/billing/" class="button current-plan-button">
|
||||
Upgrade is scheduled
|
||||
</a>
|
||||
{% elif is_self_hosted_realm and customer_plan and customer_plan.tier == customer_plan.TIER_SELF_HOSTED_ENTERPRISE %}
|
||||
<a href='{{ billing_base_url }}/billing' class="button current-plan-button" type="button">
|
||||
<i class="icon current-plan-icon"></i>
|
||||
Current plan
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="mailto:sales@zulip.com" target="_blank" rel="noopener noreferrer" class="button upgrade-button">
|
||||
Contact sales
|
||||
</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
568
templates/corporate/role/engineers.html
Normal file
568
templates/corporate/role/engineers.html
Normal file
@@ -0,0 +1,568 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Why engineers love Zulip" %}
|
||||
{% set PAGE_DESCRIPTION = "Learn why engineers love Zulip organized team chat." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div
|
||||
id="engineers-love-zulip-page"
|
||||
class="portico-landing why-page solutions-page self-hosting-page zulip-cloud-page"
|
||||
>
|
||||
<div class="hero bg-pycon programmer">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Why engineers love Zulip</h1>
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/for/business/" class="button">
|
||||
{{ _('Zulip for business') }}
|
||||
</a>
|
||||
<a href="/for/open-source/" class="button">
|
||||
{{ _('Zulip for open source') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alternative-features">
|
||||
<!-- Chat that helps engineers focus -->
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>Chat that helps engineers focus (really!)</h1>
|
||||
<p>
|
||||
Rather than task-switching each time a new message comes
|
||||
in, <a href="/why-zulip/">Zulip's threading model</a>
|
||||
lets you focus on your work for a few hours, and then
|
||||
<strong>respond asynchronously</strong>. Your messages
|
||||
won’t interrupt newer discussions or get missed in a
|
||||
side thread.
|
||||
</p>
|
||||
<p>
|
||||
You can have
|
||||
<strong>substantive conversations over chat</strong>,
|
||||
instead of interrupting your flow with meetings.
|
||||
</p>
|
||||
<p>
|
||||
<a
|
||||
href="/help/mention-a-user-or-group#silently-mention-a-user"
|
||||
>
|
||||
Silent mentions
|
||||
</a>
|
||||
<b>tune down the noise</b> for non-urgent matters, and you can
|
||||
<a href="/help/follow-a-topic">follow</a>
|
||||
particular topics to get notified just where your timely
|
||||
attention is needed.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="image man-mobile-image grey-border"
|
||||
alt='{{ _("Dog in glasses with a laptop") }}'
|
||||
src="{{ static('images/landing-page/engineers/focus.jpg') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Understand the context behind decisions -->
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="image grey-border"
|
||||
alt='{{ _("Screenshot of Zulip conversation") }}'
|
||||
src="{{ static('images/landing-page/engineers/context.png') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Understand the context behind technical and product
|
||||
decisions
|
||||
</h1>
|
||||
<p>
|
||||
<b>Context is right at hand</b> when you
|
||||
<a
|
||||
href="/help/link-to-a-message-or-conversation#link-to-zulip-from-anywhere"
|
||||
>
|
||||
link to Zulip conversations
|
||||
</a>
|
||||
from your issue tracker, design docs, emails, code
|
||||
comments, etc.
|
||||
</p>
|
||||
<p>
|
||||
With conversations
|
||||
<a href="/help/introduction-to-topics"
|
||||
>organized by topic</a
|
||||
>, you can ask <b>follow-up questions in the same space</b>,
|
||||
even months later.
|
||||
</p>
|
||||
<div class="intro_quote quote-in-feature-text">
|
||||
<blockquote>
|
||||
Zulip organizes ideas in such a clean and simple
|
||||
way. You get <b>easy readability over months</b>, not just
|
||||
hours like in other apps.
|
||||
<div class="author">
|
||||
— Nathan Kaplan, Head of Global Launch
|
||||
Operations at <a
|
||||
href="/case-studies/windborne/">WindBorne</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="image grey-border"
|
||||
alt='{{ _("Screenshot of Zulip conversation") }}'
|
||||
src="{{ static('images/landing-page/engineers/context.png') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Monitor production systems -->
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Monitor production systems (without making your chat a
|
||||
mess)
|
||||
</h1>
|
||||
<p>
|
||||
Zulip’s native
|
||||
<a href="/integrations/category/monitoring">
|
||||
monitoring tool integrations
|
||||
</a>
|
||||
give you the updates you need <b>without disrupting human
|
||||
conversations</b>.
|
||||
</p>
|
||||
<p>
|
||||
High-volume automations can send messages to a
|
||||
<strong>dedicated topic</strong> in your team’s channel.
|
||||
(Your PM and designer can
|
||||
<a href="/help/mute-a-topic">mute</a> this one. 😉)
|
||||
There's no separate channel to keep track of.
|
||||
</p>
|
||||
<p>
|
||||
Or use a
|
||||
<strong>separate topic for each error or incident</strong>,
|
||||
automatically creating a lightweight discussion space
|
||||
for each problem your team needs to solve.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="message-screenshot">
|
||||
<img
|
||||
class="image"
|
||||
alt='{{ _("Screenshot of Zulip conversation with sentry bot") }}'
|
||||
src="{{ static('images/landing-page/engineers/exceptions.png') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Stop stressing about missing important messages -->
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="image grey-border"
|
||||
alt='{{ _("Screenshot of Zulip inbox") }}'
|
||||
src="{{ static('images/landing-page/engineers/inbox.png') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>Stop stressing about missing important messages</h1>
|
||||
<p>
|
||||
Ever miss a message because it got buried or lost in a
|
||||
side thread? 🤦
|
||||
</p>
|
||||
<p>
|
||||
In Zulip, new messages will pop their thread to the top,
|
||||
making <b>updates easy to keep track of</b> in your
|
||||
<a href="/help/inbox">inbox</a>,
|
||||
<a href="/help/recent-conversations"
|
||||
>recent conversations</a
|
||||
>, and <a href="/help/left-sidebar">sidebar</a>.
|
||||
</p>
|
||||
<div class="intro_quote quote-in-feature-text">
|
||||
<blockquote>
|
||||
Literally the day we moved to Zulip, all the
|
||||
anxiety and stress of keeping up… was gone.
|
||||
<div class="author">
|
||||
— Dan Allen, <a
|
||||
href="/case-studies/asciidoctor/">Asciidoctor</a>
|
||||
project lead
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="image grey-border"
|
||||
alt='{{ _("Screenshot of Zulip inbox") }}'
|
||||
src="{{ static('images/landing-page/engineers/inbox.png') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Team chat as an organized knowledge base -->
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>Team chat becomes an organized knowledge base</h1>
|
||||
<p>
|
||||
With conversations organized by topic, it’s easy to
|
||||
<a href="/help/search-for-messages">find</a> discussions
|
||||
that help you <b>understand past work</b>, expert
|
||||
opinions, and decisions, and to <b>onboard</b> new team
|
||||
members.
|
||||
</p>
|
||||
<div class="intro_quote quote-in-feature-text">
|
||||
<blockquote>
|
||||
Using Zulip in a way that feels natural creates an
|
||||
organized repository of knowledge as a side effect.
|
||||
<div class="author">
|
||||
— Max McCrea, Co-founder of
|
||||
<a
|
||||
href="https://monadical.com/posts/how-to-make-remote-work-part-two-zulip.html"
|
||||
>
|
||||
Monadical
|
||||
</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
<p>
|
||||
Zulip lets you <b>keep discussions organized</b> by
|
||||
<a href="/help/move-content-to-another-channel">moving</a> or
|
||||
<a href="/help/move-content-to-another-topic"
|
||||
>splitting</a
|
||||
>
|
||||
topics when conversations digress.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="mirror-image man-mobile-image grey-border"
|
||||
alt='{{ _("Open laptop with book inside") }}'
|
||||
src="{{ static('images/landing-page/engineers/knowledge-base.jpg') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Open-source platform you can help make better -->
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="image grey-border"
|
||||
alt='{{ _("Two hands assembling puzzle") }}'
|
||||
src="{{ static('images/landing-page/hands.jpg') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Open-source platform <em>you</em> can help make even better
|
||||
</h1>
|
||||
<p>
|
||||
We are a <a href="/values/">values-focused</a> startup,
|
||||
not a faceless mega-corporation.
|
||||
</p>
|
||||
<p>
|
||||
You can
|
||||
<a
|
||||
href="https://zulip.readthedocs.io/en/stable/contributing/reporting-bugs.html"
|
||||
>
|
||||
report bugs
|
||||
</a>
|
||||
and
|
||||
<a
|
||||
href="https://zulip.readthedocs.io/en/stable/contributing/suggesting-features.html"
|
||||
>
|
||||
give product feedback
|
||||
</a>
|
||||
<b>directly to the product and engineering team</b> in
|
||||
the
|
||||
<a href="/development-community/">
|
||||
Zulip development community </a
|
||||
>.
|
||||
</p>
|
||||
<p>
|
||||
<a
|
||||
href="https://zulip.readthedocs.io/en/latest/contributing/reviewable-prs.html"
|
||||
>
|
||||
Submit a pull request
|
||||
</a>
|
||||
or
|
||||
<a
|
||||
href="https://zulip.readthedocs.io/en/latest/production/modify.html"
|
||||
>
|
||||
run a fork
|
||||
</a>
|
||||
to <b>fix anything</b> that’s bugging you.
|
||||
</p>
|
||||
<p>
|
||||
Our support is staffed by
|
||||
<em>thoughtful people</em> whose job is to actually
|
||||
<b>solve your problems.</b>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
class="image grey-border"
|
||||
alt='{{ _("Two hands assembling puzzle") }}'
|
||||
src="{{ static('images/landing-page/hands.jpg') }}"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="quote">
|
||||
<div class="triangle"></div>
|
||||
<blockquote>
|
||||
I don’t like going back to Slack now. It’s just not as efficient
|
||||
a way to organize communication.
|
||||
<div class="author">
|
||||
— James van Lommel, Director of Engineering at Semsee /
|
||||
<a href="/case-studies/semsee/">Case study</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<div class="feature-grid">
|
||||
<div class="feature-end">
|
||||
<h1>
|
||||
Fan favorite features:
|
||||
</h1>
|
||||
</div>
|
||||
<div class="feature-row">
|
||||
<!-- Powerful Markdown formatting -->
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
src="{{ static('images/landing-page/engineers/message-square-code.svg') }}"
|
||||
alt='{{ _("Message with code") }}'
|
||||
/>
|
||||
</div>
|
||||
<div class="feature-text">
|
||||
<h1>Powerful Markdown formatting</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/help/code-blocks"
|
||||
>Zulip code blocks</a
|
||||
>
|
||||
come with <b>syntax highlighting</b> for over 250
|
||||
languages, and integrated
|
||||
<a href="/help/code-blocks#code-playgrounds"
|
||||
><b>code playgrounds</b></a
|
||||
>.
|
||||
</li>
|
||||
<li>
|
||||
Code spans, media uploads, spoilers, GIFs,
|
||||
lists, and more — <b>you control</b> how your
|
||||
message looks.
|
||||
</li>
|
||||
<li>
|
||||
Type
|
||||
<a
|
||||
href="/help/format-your-message-using-markdown#latex"
|
||||
><b>LaTeX</b></a
|
||||
>
|
||||
directly into messages, and see it beautifully
|
||||
rendered.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Lightning fast -->
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
src="{{ static('images/landing-page/engineers/zap.svg') }}"
|
||||
alt='{{ _("Lightning") }}'
|
||||
/>
|
||||
</div>
|
||||
<div class="feature-text list-content">
|
||||
<h1>Lightning fast</h1>
|
||||
<ul>
|
||||
<li>
|
||||
Zulip is engineered to make every interaction
|
||||
<b>snappy</b>.
|
||||
</li>
|
||||
<li>
|
||||
Dozens of
|
||||
<a href="/help/keyboard-shortcuts"
|
||||
><b>keyboard shortcuts</b></a
|
||||
>
|
||||
let you add and upvote emoji reactions, jump to
|
||||
the next unread conversation, reply, and more.
|
||||
</li>
|
||||
<li>
|
||||
Adjust
|
||||
<a href="/help/font-size">font size</a> and
|
||||
<a href="/help/line-spacing">line spacing</a> to
|
||||
<b>make reading feel pleasant</b>, and <b>fit as much
|
||||
information</b> as you like.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-row">
|
||||
<div class="intro_quote quote-in-feature-text">
|
||||
<blockquote>
|
||||
The app is extremely fast — you click, and messages
|
||||
show up instantly.
|
||||
<div class="author">
|
||||
— Erik Dittert, Head of IT at GUT contact / <a href="/case-studies/gut-contact/">Case study</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-row">
|
||||
<!-- Connect with other tools -->
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
src="{{ static('images/landing-page/engineers/link.svg') }}"
|
||||
alt='{{ _("Link") }}'
|
||||
/>
|
||||
</div>
|
||||
<div class="feature-text">
|
||||
<h1>Connect with other tools</h1>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/help/add-a-custom-linkifier"><b>Configure
|
||||
linkifiers</b></a> for issues (e.g, “JIRA-1234”
|
||||
or “#1234”), documentation pages, websites, and
|
||||
more.
|
||||
</li>
|
||||
<li>
|
||||
<b>Native integrations</b> for GitHub, Jira, and
|
||||
<a href="/integrations/"
|
||||
>hundreds of other tools</a
|
||||
>
|
||||
can initiate new topics, creating lightweight
|
||||
discussion spaces for each issue.
|
||||
</li>
|
||||
<li>
|
||||
For a <b>smooth transition</b>, integrations
|
||||
written for Slack can post into Zulip via the
|
||||
<a href="/integrations/slack_incoming"
|
||||
>Slack compatible webhook</a
|
||||
>.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- You've got control -->
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img
|
||||
src="{{ static('images/landing-page/engineers/ship-wheel.svg') }}"
|
||||
alt='{{ _("Ship wheel") }}'
|
||||
/>
|
||||
</div>
|
||||
<div class="feature-text">
|
||||
<h1>You've got control</h1>
|
||||
<ul>
|
||||
<li>
|
||||
Make Zulip <b>suit your preferences</b> with
|
||||
flexible settings for <a
|
||||
href="/help/channel-notifications">notifications</a>,
|
||||
<a
|
||||
href="/help/review-your-settings#review-your-privacy-settings">privacy</a>,
|
||||
and <a
|
||||
href="/help/review-your-settings">more</a>. You
|
||||
can <a
|
||||
href="/help/configure-default-new-user-settings">configure
|
||||
default settings</a> for new users.
|
||||
</li>
|
||||
<li>
|
||||
Easily write <a
|
||||
href="/api/integrations-overview"><b>custom
|
||||
integrations</b></a> with simple, intuitive and
|
||||
stable <a href="/api/">APIs</a>. Pull message
|
||||
history into an LLM without arbitrary API use
|
||||
restrictions.
|
||||
</li>
|
||||
<li>
|
||||
Keep full control of your data when you <a
|
||||
href="/self-hosting/">self-host</a>.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-row">
|
||||
<div class="intro_quote quote-in-feature-text">
|
||||
<blockquote>
|
||||
If you integrate an LLM bot into Slack, you can't
|
||||
manage its context window — off-topic messages can
|
||||
poison the context. With Zulip, you can always just
|
||||
start a new topic, and move messages around as needed.
|
||||
<div class="author">
|
||||
— John Dean, Co-founder and CEO of WindBorne / <a href="/case-studies/windborne/">Case study</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-end">
|
||||
<p>
|
||||
Learn how engineers at
|
||||
<a href="/case-studies/end-point/">End Point Dev</a>,
|
||||
<a href="/case-studies/atolio">Atolio</a>, and
|
||||
<a href="/case-studies/rust/">the Rust language community</a>
|
||||
are using Zulip. Please reach out to
|
||||
<a href="mailto:sales@zulip.com">sales@zulip.com</a> with any
|
||||
questions, or drop by our
|
||||
<a href="/development-community/"
|
||||
>friendly development community</a
|
||||
>.
|
||||
</p>
|
||||
|
||||
<div class="bottom-register-buttons">
|
||||
<h1>Join other engineers who love using Zulip!</h1>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/new/" class="button">
|
||||
{{ _('Create organization') }}
|
||||
</a>
|
||||
<a href="/for/business/" class="button">
|
||||
{{ _('Zulip for business') }}
|
||||
</a>
|
||||
<a href="/self-hosting/" class="button">
|
||||
{{ _('Self-host Zulip') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
30
templates/corporate/security.html
Normal file
30
templates/corporate/security.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Security | Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Making sure your information stays protected is our
|
||||
highest priority. Learn how Zulip’s security strategy covers all aspects of our
|
||||
product and business." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page">
|
||||
<div class="hero bg-pycon security">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Zulip security</h1>
|
||||
<p></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
<div class="padded-content">
|
||||
<div class="inner-content markdown">
|
||||
{{ render_markdown_path('corporate/security.md') }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
228
templates/corporate/security.md
Normal file
228
templates/corporate/security.md
Normal file
@@ -0,0 +1,228 @@
|
||||
We take the trust our users put in Zulip extremely seriously. Our security model
|
||||
is designed to be:
|
||||
|
||||
- **Secure by default**: Your data is protected out-of-the-box.
|
||||
- **Well-documented** and **easy to understand**, so that you’re never caught by
|
||||
surprise.
|
||||
- **Flexible**, so that you can configure Zulip according to your organization’s
|
||||
needs.
|
||||
|
||||
This page will walk you Zulip's security tools and practices:
|
||||
|
||||
- [Compliance support](#zulip-serves-your-compliance-needs)
|
||||
- [Data encryption](#data-is-encrypted-for-your-protection)
|
||||
- [Tools to protect your data when you self-host](#self-hosting-we-give-you-the-tools-to-protect-your-data)
|
||||
- [How we keep your organization secure on Zulip Cloud](#zulip-cloud-we-keep-your-organization-secure)
|
||||
- [Zulip's robust 100% open-source system](#robust-100-open-source-system)
|
||||
- [Highly configurable access controls](#highly-configurable-access-controls)
|
||||
- [Our responsible vulnerability disclosure program](#responsible-disclosure-program)
|
||||
|
||||
---
|
||||
|
||||
## Zulip serves your compliance needs
|
||||
|
||||
- [GDPR and CCPA compliant](https://zulip.com/help/gdpr-compliance)
|
||||
- Self-hosting facilitates HIPAA and FERPA compliance
|
||||
- [Message editing and deletion policies](/help/restrict-message-editing-and-deletion)
|
||||
- [Global and per-channel data retention policies](/help/message-retention-policy)
|
||||
- Detailed audit log of administrative actions
|
||||
- [Complete data exports](/help/export-your-organization)
|
||||
- [Compliance exports](https://zulip.readthedocs.io/en/stable/production/export-and-import.html#compliance-exports)
|
||||
|
||||
---
|
||||
|
||||
## Data is encrypted for your protection
|
||||
|
||||
### Secure data transmission
|
||||
|
||||
All Zulip clients require [TLS
|
||||
encryption](https://zulip.readthedocs.io/en/stable/production/ssl-certificates.html)
|
||||
and authentication over HTTPS for data transmission to and from the server, both
|
||||
on LAN and the Internet.
|
||||
|
||||
### End-to-end encryption (E2EE) for push notification content
|
||||
|
||||
[Zulip's E2EE
|
||||
protocol](https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html#security-and-privacy)
|
||||
ensures that message **content** and **metadata** (including the sender's and
|
||||
recipient's names, or channel and topic where the message was sent) are not
|
||||
visible to Apple, Google, or Zulip's [Mobile Push Notification
|
||||
Service](https://zulip.readthedocs.io/en/stable/production/mobile-push-notifications.html).
|
||||
|
||||
### Secure integrations
|
||||
[Integrations](/integrations/) use TLS encryption and authentication over HTTPS
|
||||
for data transmission. Administrators can browse,
|
||||
[manage](https://zulip.com/help/manage-a-bot), and
|
||||
[deactivate](https://zulip.com/help/deactivate-or-reactivate-a-bot)
|
||||
integrations.
|
||||
|
||||
---
|
||||
|
||||
## Self-hosting: We give you the tools to protect your data
|
||||
|
||||
### Support for encryption in transit and at rest
|
||||
|
||||
Encrypt your database, uploads, and backups at rest on infrastructure you
|
||||
control. All connections between parts of the Zulip system are secured
|
||||
out-of-the-box with encryption, a protected network like a local socket, or
|
||||
both. All of the inter-service connections are also authenticated, to provide a
|
||||
defensive-by-default security posture, and prevent SSRF attacks.
|
||||
|
||||
### Firewalled and air-gapped deployments
|
||||
|
||||
Zulip can be hosted entirely behind your firewall, or on an air-gapped network.
|
||||
|
||||
### Custom security policies
|
||||
|
||||
- [Configurable](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#email-and-password)
|
||||
password strength requirements.
|
||||
- Administrators can revoke and reset any user’s credentials.
|
||||
- Configurable [session
|
||||
length](https://github.com/zulip/zulip/search?q=SESSION_COOKIE_AGE&type=code)
|
||||
and [idle
|
||||
timeouts](https://github.com/zulip/zulip/search?q=SESSION_EXPIRE_AT_BROWSER_CLOSE&type=code).
|
||||
- Configurable log rotation policies.
|
||||
- [Configurable rate
|
||||
limits](https://zulip.readthedocs.io/en/stable/production/securing-your-zulip-server.html#understand-zulip-s-rate-limiting-system)
|
||||
for API endpoints and authentication attempts.
|
||||
|
||||
---
|
||||
|
||||
## Zulip Cloud: We keep your organization secure
|
||||
|
||||
- All customer data is encrypted in transit and at rest.
|
||||
- [Strong
|
||||
passwords](https://zulip.readthedocs.io/en/stable/production/password-strength.html)
|
||||
are required with the zxcvbn password strength checker.
|
||||
- Users can [rotate](https://zulip.com/help/protect-your-account) their account
|
||||
credentials.
|
||||
- To protect your privacy, error handling systems exclude user message content
|
||||
in reports.
|
||||
- Data and server access is limited to a very small number of staff.
|
||||
|
||||
---
|
||||
|
||||
## Robust 100% open-source system
|
||||
|
||||
Your security team and independent security researchers have access to [Zulip’s
|
||||
entire codebase](https://github.com/zulip), and can thus fully audit the system
|
||||
for security issues. We are proud of our industry-leading efforts to prevent
|
||||
security issues from being introduced in Zulip.
|
||||
|
||||
### Development process
|
||||
|
||||
- **Comprehensive automated testing**: The Zulip server has an remarkably
|
||||
complete automated test suite, including [complete test
|
||||
coverage](https://app.codecov.io/gh/zulip/zulip/tree/main/zerver) in
|
||||
security-sensitive code paths.
|
||||
- **Stable, carefully audited APIs**: All clients share a common, highly stable
|
||||
[API](https://zulip.com/api/). API changes are carefully reviewed for security
|
||||
and necessity, and documented in a [readable API
|
||||
changelog](https://zulip.com/api/changelog).
|
||||
- **Disciplined code review:** Zulip is known for its unusually disciplined
|
||||
[code review
|
||||
process](https://zulip.readthedocs.io/en/latest/contributing/review-process.html),
|
||||
ensuring that all changes are carefully verified by our maintainer team.
|
||||
|
||||
### System design
|
||||
|
||||
- **Static typing**: The Zulip server
|
||||
[pioneered](https://blog.zulip.org/2016/10/13/static-types-in-python-oh-mypy/)
|
||||
statically typed Python. Extensive use of both standard and custom linters
|
||||
helps prevent several classes of common security bugs.
|
||||
- **Access control**: Access to user data (messages, channels, uploaded files,
|
||||
etc.) in the Zulip server is mediated through carefully-audited core libraries
|
||||
that consistently validate access controls.
|
||||
- **Minimizing supply chain risk:** Dependencies are evaluated for quality,
|
||||
maintainability, and necessity before being integrated into the system.
|
||||
|
||||
---
|
||||
|
||||
## Highly configurable access controls
|
||||
|
||||
### Identity management your way
|
||||
|
||||
- [Email authentication](/help/invite-users-to-join), with option to [restrict
|
||||
email
|
||||
domains](/help/restrict-account-creation#configuring-email-domain-restrictions)
|
||||
- [OAuth social logins](/help/configure-authentication-methods) (Google, GitHub,
|
||||
GitLab, Apple)
|
||||
- SSO with [SAML](/help/saml-authentication) (Including Okta and OneLogin),
|
||||
[Microsoft Entra
|
||||
ID](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#microsoft-entra-id),
|
||||
[OpenID
|
||||
Connect](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#openid-connect)
|
||||
- [AD/LDAP user and group
|
||||
sync](https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#ldap-including-active-directory)
|
||||
- [SAML user and group sync](/help/saml-authentication)
|
||||
- [SCIM user and group sync](/help/scim)
|
||||
- Configure whether users can change their
|
||||
[names](/help/restrict-name-and-email-changes), [email
|
||||
addresses](/help/restrict-name-and-email-changes), and
|
||||
[avatars](/help/restrict-profile-picture-changes)
|
||||
- [Minimum app
|
||||
version](https://zulip.readthedocs.io/en/latest/overview/release-lifecycle.html#desktop-app)
|
||||
for the desktop app
|
||||
- [100+ authentication
|
||||
options](https://python-social-auth.readthedocs.io/en/latest/backends/index.html#social-backends)
|
||||
with python-social-auth (self-hosted)
|
||||
|
||||
### Configure data access and messaging policies
|
||||
|
||||
- [Private channels with shared history](/help/channel-permissions#private-channels)
|
||||
- [Private channels with private history](/help/channel-permissions#private-channels)
|
||||
- [Channel posting permissions](/help/channel-posting-policy)
|
||||
- [Direct messaging permissions](/help/restrict-direct-messages)
|
||||
- [Customize permissions by channel](/help/channel-permissions)
|
||||
- Authenticated access to uploaded files
|
||||
- [Custom terms of service and privacy
|
||||
policy](https://zulip.readthedocs.io/en/stable/production/settings.html#terms-of-service-and-privacy-policy)
|
||||
- [Configurable waiting period](/help/restrict-permissions-of-new-members) for new users
|
||||
|
||||
### Custom permissions with comprehensive audit log
|
||||
|
||||
- [Role-based access control](/help/user-roles)
|
||||
- Control access by [roles](/help/user-roles), [custom
|
||||
groups](/help/user-groups), and user accounts
|
||||
- Grant [permissions](/help/manage-permissions) to roles, custom groups, and
|
||||
individual users
|
||||
- [Control](/help/manage-permissions) who can create channels, subscribe and
|
||||
unsubscribe users, add custom emoji and integrations, and more
|
||||
- Permissions for [editing](/help/restrict-message-editing-and-deletion),
|
||||
[deleting](/help/restrict-message-editing-and-deletion) and
|
||||
[moving](/help/restrict-moving-messages) messages, and an audit history of
|
||||
these actions
|
||||
- Permanent long-term audit log of important actions (e.g., changes to
|
||||
passwords, email addresses, and channel subscriptions)
|
||||
|
||||
### Tightly controlled guest accounts for vendors, partners, and customers
|
||||
|
||||
[Guest users](/help/guest-users) cannot see any channels, unless they have been
|
||||
specifically subscribed, and can never invite new users. You can limit guests’
|
||||
ability to see other users, and warn users when they are DMing a guest to
|
||||
prevent accidental disclosures.
|
||||
|
||||
---
|
||||
|
||||
## Responsible disclosure program
|
||||
|
||||
- We operate a private HackerOne vulnerability disclosure program, and credit
|
||||
reporters for issues that were not discovered internally. See the [Zulip
|
||||
security reporting policy](https://github.com/zulip/zulip/security/policy).
|
||||
- We publish security releases for all security vulnerabilities, and publicly
|
||||
disclose them [on our blog](https://blog.zulip.com/tag/security/) with CVE
|
||||
numbers for tracking.
|
||||
- Zulip Server security and maintenance releases are carefully engineered to
|
||||
minimize the inherent risks of upgrading software, so there is never a reason
|
||||
to run an insecure version. Announcements of serious vulnerabilities
|
||||
[include](https://blog.zulip.com/2025/07/02/zulip-server-10-4-security-release/)
|
||||
applicable mitigation guidance.
|
||||
- We responsibly report vulnerabilities we discover in our upstream
|
||||
dependencies.
|
||||
|
||||
---
|
||||
|
||||
## Learn more
|
||||
|
||||
For more information, check out our [guide on securing your Zulip
|
||||
server](https://zulip.readthedocs.io/en/stable/production/securing-your-zulip-server.html).
|
||||
287
templates/corporate/self-hosting.html
Normal file
287
templates/corporate/self-hosting.html
Normal file
@@ -0,0 +1,287 @@
|
||||
{% extends "zerver/marketing_page.html" %}
|
||||
|
||||
{% set PAGE_TITLE = "Self-host Zulip" %}
|
||||
|
||||
{% set PAGE_DESCRIPTION = "Open-source team chat with enterprise-grade
|
||||
reliability and security. Take charge of your mission-critical communication
|
||||
platform." %}
|
||||
|
||||
|
||||
{% block marketing_content %}
|
||||
|
||||
<div class="portico-landing why-page solutions-page self-hosting-page">
|
||||
<div class="hero bg-pycon security">
|
||||
<div class="bg-dimmer"></div>
|
||||
<div class="content">
|
||||
<h1 class="center">Self-host Zulip today.</h1>
|
||||
<p>Open-source team chat with enterprise-grade reliability and security.</p>
|
||||
</div>
|
||||
<div class="hero-buttons center">
|
||||
<a href="/request-demo/" class="button">
|
||||
{{ _('Get a demo') }}
|
||||
</a>
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/install.html" class="button">
|
||||
Install Zulip Server {{ latest_release_version }}
|
||||
</a>
|
||||
<a href="/for/business/" class="button">
|
||||
{{ _('Zulip for business') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="alternative-features">
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
100% open-source software.
|
||||
</h1>
|
||||
<p>
|
||||
When you self-host Zulip, you get <a href="https://github.com/zulip/zulip#readme">
|
||||
the same software</a> as our <a href="/plans/">Zulip Cloud</a> customers.
|
||||
</p>
|
||||
<p>
|
||||
Unlike the competition, you don't pay for
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html">SAML
|
||||
authentication</a>, <a href="https://zulip.readthedocs.io/en/stable/production/authentication-methods.html#synchronizing-data">LDAP
|
||||
sync</a>, or advanced <a href="/help/user-roles">roles</a> and <a href="/help/manage-permissions">permissions</a>. There
|
||||
is no “open core” catch — just freely available world-class software.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-icon">
|
||||
<img alt="" src="{{ static('images/landing-page/open_source/build_inclusive_communities.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-icon">
|
||||
<img class="mirror-image" alt="" src="{{ static('images/landing-page/education/privacy.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Enterprise-grade security and compliance.
|
||||
</h1>
|
||||
<p>
|
||||
Protect your sensitive conversations and simplify
|
||||
compliance by self-hosting Zulip behind your
|
||||
firewall.
|
||||
</p>
|
||||
<p>
|
||||
Zulip's <a
|
||||
href="/help/configure-authentication-methods">authentication</a>
|
||||
and <a
|
||||
href="/help/manage-permissions">permissions</a>
|
||||
systems are designed to flexibly support every
|
||||
organization's security tools and policies.
|
||||
</p>
|
||||
<p>Making sure your information stays protected is <a href="https://zulip.com/security/">our highest priority</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-icon">
|
||||
<img class="mirror-image" alt="" src="{{ static('images/landing-page/education/privacy.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container">
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Take charge of your mission-critical communication platform.
|
||||
</h1>
|
||||
<p>
|
||||
Keep full control of your data and avoid <a
|
||||
href="https://www.theverge.com/2021/9/30/22702876/slack-is-down-outage-morning-disruption-work-chat">
|
||||
unpredictable downtime</a>
|
||||
from <a
|
||||
href="https://www.theverge.com/2021/4/27/22405300/microsoft-teams-down-outage-worldwide-issues">SaaS
|
||||
team chat vendors</a> by hosting Zulip on
|
||||
your own infrastructure.
|
||||
</p>
|
||||
<p>
|
||||
Our extensive <a
|
||||
href="https://zulip.readthedocs.io/en/stable/production/settings.html">
|
||||
configuration options</a> let you set up Zulip
|
||||
to suit the needs of your organization.
|
||||
Zulip offers <a
|
||||
href="/integrations/">over one hundred native
|
||||
integrations</a>, and hundreds more via third-party
|
||||
extensions.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-icon">
|
||||
<img class="mirror-image" alt="" src="{{ static('images/landing-page/education/mobile.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-container alternate-grid">
|
||||
<div class="feature-half md-hide">
|
||||
<div class="feature-icon">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half">
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Installation and upgrades that Just Work.
|
||||
</h1>
|
||||
<p>
|
||||
Our well-documented scripts help you
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/install.html">set up</a>,
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html#backups">back up</a>, and
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/upgrade.html">upgrade</a>
|
||||
your self-hosted Zulip installation. Migrate your
|
||||
<a href="/help/migrating-from-other-chat-tools">data</a>
|
||||
and <a href="/integrations/slack_incoming">integrations</a>
|
||||
from other chat tools for a smooth transition.
|
||||
</p>
|
||||
<p>
|
||||
Self-host Zulip directly on Ubuntu or Debian Linux,
|
||||
in <a href="https://github.com/zulip/docker-zulip">Docker</a>,
|
||||
or with prebuilt images for <a href="https://marketplace.digitalocean.com/apps/zulip">Digital Ocean</a>
|
||||
and <a href="https://render.com/docs/deploy-zulip">Render</a>.
|
||||
</p>
|
||||
<div class="intro_quote quote-in-feature-text">
|
||||
<blockquote>
|
||||
Zulip was quite easy to set up, and worked instantly. 1000 people — no problem.
|
||||
<div class="author">
|
||||
— Erik Dittert, Head of IT at <a href="/case-studies/gut-contact/">GUT contact</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-half md-display">
|
||||
<div class="feature-icon">
|
||||
<img alt="" src="{{ static('images/landing-page/education/flexible-administration.svg') }}" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="quote">
|
||||
<div class="triangle"></div>
|
||||
<blockquote>
|
||||
Zulip has been extremely stable and requires no maintenance beyond installing updates.
|
||||
<div class="author">
|
||||
— Robert Imschweiler, <a href="/case-studies/tum/">Technical University of Munich</a>
|
||||
</div>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
||||
<div class="feature-grid">
|
||||
<div class="feature-row">
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img alt="" src="{{ static('images/landing-page/self-hosting/growth.png') }}" />
|
||||
</div>
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Rock-solid reliability at scale.
|
||||
</h1>
|
||||
<p>
|
||||
Zulip is engineered to make every interaction snappy and
|
||||
efficient, even for organizations with 10,000s of users,
|
||||
with a simple deployment on
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/requirements.html#scalability">
|
||||
modest hardware</a>.
|
||||
</p>
|
||||
<p>
|
||||
With a user experience designed to work great at any
|
||||
size, organizations that send <a
|
||||
href="/case-studies/rust/">thousands</a> of <a
|
||||
href="/case-studies/tum/">messages</a> per week <a
|
||||
href="/case-studies/lean/">thrive on Zulip</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img alt="" src="{{ static('images/landing-page/self-hosting/database.png') }}" />
|
||||
</div>
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
No lock-in.
|
||||
</h1>
|
||||
<p>
|
||||
You can <a href="https://zulip.com/help/zulip-cloud-or-self-hosting">move
|
||||
freely</a> between <a href="/plans/">Zulip Cloud</a>
|
||||
hosting and your own servers with our high quality <a
|
||||
href="/help/export-your-organization">export</a> and
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/export-and-import.html">import
|
||||
</a> tools.
|
||||
</p>
|
||||
<p>
|
||||
Zulip also supports exporting your organization's
|
||||
message history to a <a
|
||||
href="https://github.com/zulip/zulip-archive">static
|
||||
HTML archive</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-row">
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img alt="" src="{{ static('images/landing-page/self-hosting/fork.png') }}" />
|
||||
</div>
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Yours to customize.
|
||||
</h1>
|
||||
<p>
|
||||
<a href="https://zulip.readthedocs.io/en/latest/webhooks/incoming-webhooks-overview.html">Creating custom integrations</a>
|
||||
is a breeze with our well-documented <a href="/api/">REST API</a>.
|
||||
</p>
|
||||
<p>
|
||||
Zulip makes it easy to
|
||||
<a href="https://zulip.readthedocs.io/en/stable/production/modify.html">
|
||||
maintain a fork</a> with customized features, with 225,000 words of documentation for
|
||||
system administrators and developers.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="feature-box">
|
||||
<div class="feature-icon">
|
||||
<img alt="" src="{{ static('images/landing-page/self-hosting/help.png') }}" />
|
||||
</div>
|
||||
<div class="feature-text">
|
||||
<h1>
|
||||
Amazing support experience.
|
||||
</h1>
|
||||
<p>
|
||||
We love getting feedback! Stop by <a href="/development-community/">our friendly
|
||||
development community</a> to ask for help or suggest
|
||||
improvements.
|
||||
</p>
|
||||
<p>
|
||||
A variety of support services are available for Zulip
|
||||
Business and Zulip Enterprise customers. Contact <a
|
||||
href="mailto:sales@zulip.com">sales@zulip.com</a> with
|
||||
any questions.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="portico-pricing showing-self-hosted">
|
||||
{% with %}
|
||||
{% set rendering_page="self_hosting" %}
|
||||
{% include "corporate/pricing_model.html" %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user