From 844c62c64ea98e1a63faba9b9cbca2fcfe70a6a3 Mon Sep 17 00:00:00 2001 From: Alya Abbott Date: Fri, 16 Jul 2021 15:37:09 -0700 Subject: [PATCH] portico: Create new "Zulip for communities" page. --- README.md | 2 +- templates/zerver/faq.html | 7 - ...-communities.html => for-communities.html} | 8 +- templates/zerver/for/communities.md | 137 ++++++++++++++++++ .../for/working-groups-and-communities.md | 58 -------- templates/zerver/landing_nav.html | 2 +- templates/zerver/why-zulip.md | 2 +- .../spiders/check_help_documentation.py | 2 +- zerver/lib/test_helpers.py | 1 + zerver/tests/test_docs.py | 2 +- zproject/urls.py | 9 +- 11 files changed, 154 insertions(+), 76 deletions(-) rename templates/zerver/{for-working-groups-and-communities.html => for-communities.html} (57%) create mode 100644 templates/zerver/for/communities.md delete mode 100644 templates/zerver/for/working-groups-and-communities.md diff --git a/README.md b/README.md index 067b2e0c63..5c7f0fb62c 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ You might be interested in: also recommend reading Zulip for [open source](https://zulip.com/for/open-source/), Zulip for [companies](https://zulip.com/for/companies/), or Zulip for - [working groups and part time communities](https://zulip.com/for/working-groups-and-communities/). + [communities](https://zulip.com/for/working-groups-and-communities/). * **Running a Zulip server**. Use a preconfigured [DigitalOcean droplet](https://marketplace.digitalocean.com/apps/zulip), [install Zulip](https://zulip.readthedocs.io/en/stable/production/install.html) diff --git a/templates/zerver/faq.html b/templates/zerver/faq.html index 14d996641a..4364f52ffd 100644 --- a/templates/zerver/faq.html +++ b/templates/zerver/faq.html @@ -31,13 +31,6 @@ sales@zulip.com. {% endif %}

-

- You may also be interested in - Zulip for open source - projects or - Zulip - for working groups and other part-time communities. -

diff --git a/templates/zerver/for-working-groups-and-communities.html b/templates/zerver/for-communities.html similarity index 57% rename from templates/zerver/for-working-groups-and-communities.html rename to templates/zerver/for-communities.html index 31c6001333..e59b438b53 100644 --- a/templates/zerver/for-working-groups-and-communities.html +++ b/templates/zerver/for-communities.html @@ -2,7 +2,7 @@ {% set entrypoint = "landing-page" %} {% block title %} -Zulip: the best group chat for working groups and communities +Zulip for communities {% endblock %} {% block customhead %} @@ -15,13 +15,13 @@
-

{% trans %}The best chat for working groups and communities.{% endtrans %}

-

Make good use of your users’ time, and engage your community with thoughtful, organized discussion.

+

Zulip for communities

+

Open-source projects, research collaborations, volunteer organizations.

- {{ render_markdown_path('zerver/for/working-groups-and-communities.md') }} + {{ render_markdown_path('zerver/for/communities.md') }}
diff --git a/templates/zerver/for/communities.md b/templates/zerver/for/communities.md new file mode 100644 index 0000000000..484f48a02d --- /dev/null +++ b/templates/zerver/for/communities.md @@ -0,0 +1,137 @@ +> “Choosing Zulip over Slack as our group chat is one of the best +> decisions we’ve ever made. Zulip makes it easy for our community of +> 1000 Recursers around the world to stay involved, even years after +> their batches finish. No other tool has a user experience that +> [scales to a community of our +> size](https://www.recurse.com/blog/112-how-rc-uses-zulip).” +> +> — Nick Bergson-Shilcock, founder and CEO, Recurse Center + +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 communities of all types, +including open-source projects, research collaborations, volunteer +organizations, and other groups of people who share a common pursuit. + +The Zulip core developers have decades of combined experience leading +and growing open source communities, and we use Zulip to fashion the +day-to-day experience of being a part of our project. No other chat +product comes close to Zulip in facilitating contributor engagement, +facilitating inclusion, and making efficient use of everyone’s time. + +  + + +  + +If you haven’t read [Why Zulip](https://zulip.com/why-zulip), read +that first. The challenges with the Slack/Discord/IRC model discussed +there are even more important for open communities: + + +- Members of open communities may be scattered all over the world and + in every time zone. Traditional communication tools like email + lists, forums, and issue trackers work well in this context, because + you can communicate effectively asynchronously. A Slack community is + a bad experience if you’re rarely online at the same time as most + other members, making it harder to be inclusive of all participants. +- Many members of open communities have other fulltime obligations and + can only spend a few hours a week on the community. Because Slack is + very hard to skim, these part-time community members cannot + efficiently use their time participating in an active Slack. So + either they don’t participate in the Slack, or they do, and their + other contributions to the community’s efforts suffer. + + +> “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 + + +- Many of us are busy people, who really wish we had more time to do + focus work. Because active participation in Slack fundamentally + requires constant interruptions, leaders of communities that use + Slack end up making unpleasant choices between participating in the + Slack community (limiting their ability to do focus work) or + ignoring the Slack community (leaving it effectively without their + input and potentially unmoderated). +- Writing to a busy Slack channel often means interrupting another + existing conversation. This makes it harder for newer and shyer + members to jump into the community. Often this disproportionately + affects groups that are already underrepresented. +- The lack of organization in Slack message history (and its 10K + message history limit) mean that users asking for help cannot + effectively do self-service support. This results in the community + answering a lot of duplicate questions. + +The overall effect is that Slack is a poor communication tool for +communities that want to have an inclusive, global, community and that +many busy individuals can happily participate in. + +  + + + +  + +Zulip’s topic-based threading model solves these problems: + +- Community members in any time zone can send messages and expect to + get a reply and have an effective (potentially asynchronous) + conversation with the rest of the community. +- Zulip’s topic-based threading helps include part-time community + members in two major ways. First, they can easily browse what + conversations happened while they were away from the community, and + prioritize which conversations to read now, skip, or read later + (e.g. on the weekend). Second, Zulip makes it easy for them to have + public conversations with participation from other community members + (potentially split over hours, days, or weeks as needed), allowing + them to fully participate in the work of the community. +- Community leaders can effectively participate in a Zulip community + without being continuously online. Using Zulip’s [keyboard + shortcuts](https://zulip.com/help/keyboard-shortcuts), it’s + extremely efficient to inspect every potentially relevant thread and + reply wherever one’s feedback is useful, and replying hours after a + question was asked is still a good experience for community + members. As a result, leaders can do multi-hour sessions of focus + work while still being available to their community. +- Topics make it easier to provide a safe, welcoming, online + community. Asking a question never has to feel like an interruption + of an ongoing conversation or like one's sticking one's neck out. + + +> “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.” + +> — Srishti Sethi, Developer Advocate, Wikimedia Foundation + +You can see this in action in our own [chat.zulip.org +community](https://zulip.readthedocs.io/en/latest/contributing/chat-zulip-org.html), which sends +thousands of messages a week. We often get feedback from contributors +around the world that they love how responsive Zulip’s project leaders +are in public Zulip conversations. We are able to achieve this despite +the project leaders collectively spending only a few hours a day +managing the community and spending most of their time integrating +improvements into Zulip. + +Many communities that migrated from +[Slack](https://zulip.com/help/import-from-slack), +[Mattermost](https://zulip.com/help/import-from-mattermost), or +[Gitter](https://zulip.com/help/import-from-gitter) to Zulip tell us +that Zulip helped them manage and grow an inclusive, healthy +community. We hope Zulip can help your community succeed too! + + +> “I highly recommend Zulip to other communities. We’re coming from +> Freenode as our only real-time communication so the difference is +> night and day. 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 streams/topics flow is an incredibly intuitive way to keep +> track of everything that is going on.” + +> — RJ Ryan, Mixxx Developer + + diff --git a/templates/zerver/for/working-groups-and-communities.md b/templates/zerver/for/working-groups-and-communities.md deleted file mode 100644 index 07f22cd136..0000000000 --- a/templates/zerver/for/working-groups-and-communities.md +++ /dev/null @@ -1,58 +0,0 @@ -Part-time organizations like learning communities, standards bodies, -advocacy groups, hobby groups, and alumni organizations often need different -things out of chat than companies do. While there may be some core members -spending many hours per week on the organization, much of the value of the -community may come from a large number of members or potential members who -have an unrelated job and thus may have less than an hour a week to spend on -the organization. In such an organization, making it easy for someone to -participate when they don’t have time to read everything can be the -difference between a robust, growing community and one that stagnates. - -Some of Zulip’s earliest users were part-time organizations, so we have given -a lot of thought to the problems such groups face. Zulip’s topic-based -threading - -* Makes the catching-up experience fast and fun, even if a user has been - away for a while. On Slack or email, wading through hundreds or thousands - of unread messages is taxing at best. - -* Makes it easy to respond to conversations that started hours or days ago, - so that users that drop by occasionally can contribute rather than just - lurk. - -Zulip’s topic-based threading also allows for more thoughtful discussion, -since more people are able to chime in on any given conversation. It also -makes it easy to start new threads, so digressions don’t take over a -conversation. - -If you haven’t read [why Zulip](/why-zulip), read that first. If your -organization is a technical group that will be sharing code, you may want to -read [Zulip for open source](/for/open-source) as well. Finally, one of our -earliest communities, the Recurse Center, wrote an -[extended blog post](https://www.recurse.com/blog/112-how-rc-uses-zulip) -about how they use Zulip, which has suggestions for conventions you might -want to include as you build your community. - -Two additional points of note: - -* **Pay as you go**: We host many pro-social groups for free, and - non-commercial entities at a greatly reduced price. Even if you don’t fall - into any such bucket, Zulip only charges for users that have been active - in the last two weeks. So feel free to invite anyone you’d like, even if - you’re not sure if they’ll end up sticking around! - -* **Smart digest emails (coming soon)**: Zulip’s topic-based threading makes - it easier for algorithms to guess which messages and conversations will be - interesting to users that haven’t checked in in a while. Occasional - interesting digests sent to inactive users is a great way to bring users - back into the group. - -### Public archive. - -Allow search engines to index your chat, with a read-only view of your -public streams. Zulip’s topic-based threading keeps conversations coherent -and organized, enabling a meaningful archive indexed by search engines. - -Currently implemented as an [out-of-tree -tool](https://github.com/zulip/zulip-archive), though a native feature -built into the Zulip server is coming soon. diff --git a/templates/zerver/landing_nav.html b/templates/zerver/landing_nav.html index d28c923b18..03ae14d6dc 100644 --- a/templates/zerver/landing_nav.html +++ b/templates/zerver/landing_nav.html @@ -49,7 +49,7 @@ Open source projects
  • - Working groups and communities + Communities
  • diff --git a/templates/zerver/why-zulip.md b/templates/zerver/why-zulip.md index fbc4ceec95..0bb3c003c6 100644 --- a/templates/zerver/why-zulip.md +++ b/templates/zerver/why-zulip.md @@ -161,4 +161,4 @@ transform how your organization communicates: - [Plans and pricing](/plans) - [Zulip for companies](/for/companies) - [Zulip for open source organizations](/for/open-source) -- [Zulip for working groups and communities](/for/working-groups-and-communities) +- [Zulip for communities](/for/communities) diff --git a/tools/documentation_crawler/documentation_crawler/spiders/check_help_documentation.py b/tools/documentation_crawler/documentation_crawler/spiders/check_help_documentation.py index 5b2a3e57fe..59ae11d485 100644 --- a/tools/documentation_crawler/documentation_crawler/spiders/check_help_documentation.py +++ b/tools/documentation_crawler/documentation_crawler/spiders/check_help_documentation.py @@ -78,7 +78,7 @@ class PorticoDocumentationSpider(BaseDocumentationSpider): "http://localhost:9981/why-zulip", "http://localhost:9981/for/open-source", "http://localhost:9981/for/companies", - "http://localhost:9981/for/working-groups-and-communities", + "http://localhost:9981/for/communities", "http://localhost:9981/for/research", "http://localhost:9981/security", ] diff --git a/zerver/lib/test_helpers.py b/zerver/lib/test_helpers.py index ff5d67ce64..8a88f611f3 100644 --- a/zerver/lib/test_helpers.py +++ b/zerver/lib/test_helpers.py @@ -468,6 +468,7 @@ def write_instrumentation_reports(full_suite: bool, include_webhooks: bool) -> N "help/configure-missed-message-emails", "help/community-topic-edits", "help/delete-a-stream", + "for/working-groups-and-communities/", "api/delete-stream", "casper/(?P.+)", "static/(?P.+)", diff --git a/zerver/tests/test_docs.py b/zerver/tests/test_docs.py index fe8a55c882..8f48063b6f 100644 --- a/zerver/tests/test_docs.py +++ b/zerver/tests/test_docs.py @@ -160,7 +160,7 @@ class DocPageTest(ZulipTestCase): self._test("/case-studies/tum/", "Technical University of Munich") self._test("/for/research/", "for researchers") self._test("/for/companies/", "in a company") - self._test("/for/working-groups-and-communities/", "standards bodies") + self._test("/for/communities/", "Zulip for communities") self._test("/security/", "TLS encryption") self._test("/devlogin/", "Normal users", landing_page=False) self._test("/devtools/", "Useful development URLs") diff --git a/zproject/urls.py b/zproject/urls.py index 64b8c14e2c..5676075c40 100644 --- a/zproject/urls.py +++ b/zproject/urls.py @@ -629,9 +629,14 @@ i18n_urls = [ path("for/companies/", landing_view, {"template_name": "zerver/for-companies.html"}), path("case-studies/tum/", landing_view, {"template_name": "zerver/tum-case-study.html"}), path( - "for/working-groups-and-communities/", + "for/communities/", landing_view, - {"template_name": "zerver/for-working-groups-and-communities.html"}, + {"template_name": "zerver/for-communities.html"}, + ), + # We merged this into /for/communities. + path( + "for/working-groups-and-communities/", + RedirectView.as_view(url="/for/communities/", permanent=True), ), path("security/", landing_view, {"template_name": "zerver/security.html"}), # Terms of Service and privacy pages.