Zulip 4.0: Threaded open source team chat

We’re excited to announce the release of Zulip Server 4.0, containing hundreds of new features and bug fixes! Zulip is an open-source team collaboration tool with unique topic-based threading that combines the best of email and chat to make remote work productive and delightful. Fortune 500 companies, leading open source projects, and thousands of other organizations use Zulip every day.

Zulip 4.0 adds improved moderation and permissions features, a native GIPHY integration, a new default view, and much more!

This is our largest release ever, with over 4300 new commits since Zulip 3.0. A total of 137 people contributed commits to Zulip 4.0, bringing the Zulip server project alone to 698 distinct code contributors. With 68 people who’ve contributed 100+ commits, Zulip has by far the most active open-source development community of any team chat software, and is translated into 17 languages.

Huge thanks to everyone who's contributed to Zulip over the last few months, whether by writing code and documentation, reporting issues, testing changes, translating, supporting us financially, posting feedback on chat.zulip.org, or just suggesting ideas! We could not do this without the hundreds of people giving back to the Zulip community.

Project highlights

Today marks a release of the Zulip server, but lots of exciting work has been happening outside the server codebase as well. Highlights include:

  • While this last year has been extremely difficult, we’ve found joy in hearing from groups that are using Zulip to stay connected throughout the pandemic. Universities and academic communities are discussing ideas and hosting virtual conferences on Zulip. Peer support groups have told us how grateful their members are that Zulip gives them a safe place to talk. Teams that used to be co-located are using Zulip for distributed work, and cannot imagine working without it even once they are back at the office.

  • Press coverage of Zulip has included in-depth interviews with TFiR and Linux Format, and a fascinating article about the formalization of mathematics:

    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

  • The Zulip mobile apps for iOS and Android now offer a smoother and more complete Zulip experience. Improvements in the last few months include faster scrolling, cleanly rendered avatars, the ability to mute and unmute topics, and support for advanced widgets such as timezone-aware times and spoilers.

  • The Zulip Desktop app is now available as a native Apple silicon build that runs more efficiently on new M1 Mac systems, adding to the collection of builds already available for Mac, Windows, and Linux.

  • Zulip Terminal, a text-based user interface client for Zulip, is now in beta! Zulip Terminal provides a similar user experience to the Zulip web client, including the layout and keyboard shortcuts. It supports a wide range of platforms, terminal emulators, and window sizes.

  • 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!

  • We now proudly sponsor Zulip Cloud Standard hosting for 600 open-source projects, non-profits, education, and academic research groups. You can request sponsorship from your organization’s billing page if you would like to join the program!

  • Zulip is now on GitHub Sponsors, Patreon, and Open Collective. Our blog post explains Zulip’s values-driven approach and why we are asking for support.

Release highlights

Because this is such a huge release, just listing the hundreds of important changes makes our changelog incredibly long. Here are some highlights:

Moderation and permissions

As part of making Zulip the ideal collaboration platform for large organizations, a major theme of this release is improved moderation and permissions features.

  • You can now mute another user in Zulip. Muting users has long been one of Zulip’s most requested features, and is important for many open communities migrating to Zulip.
  • This release introduces a new moderator role. Moderators can help manage streams and conversations, but cannot change organization-wide settings. Since every organization’s needs are different, moderator permissions are customizable, and can include creating streams, inviting users, using wildcard mentions, and much more.
  • Moving messages between topics has always been useful for keeping a busy Zulip stream organized. Zulip now offers full support for moving topics between streams, with configurable permissions.

Additional moderation and permissions features for large companies and open communities will remain a major focus for the rest of 2021.

New messaging features

  • Zulip now has a native GIPHY integration! This has long been one of our most-requested features from users who enjoy memes and other animated GIFs. Organizations that find animated GIFs distracting can disable the integration.
  • You can now copy a code block to the clipboard with a single click, or open it in an external code playground for interactive editing.

  • Because users spend far more time reading messages than composing them, Zulip is designed with reading efficiency as the top priority. Zulip’s compose box is closed when not in use, so that keyboard focus is available for single-key navigation commands. (For example, n takes you to the next topic with unread messages.) To make the compose box easy to find and open, we have replaced the small “Reply” button with a wide button covering the entire area where users might look to start typing their reply.

  • Zulip’s autocomplete algorithm for messaging or mentioning users is smart: users you are most likely to want to contact are at the top of the list. New in Zulip 4.0, we now show presence details in the autocomplete widget to make it easier to convince yourself that you’re mentioning the right person.

Improved reading experience

  • Starting with Zulip 4.0, “Recent topics” becomes the default home view. Users can see a summary of what’s been happening, or track the conversations they’re involved in by selecting the “Participated” filter. “Recent topics” has evolved a lot since the 3.0 release, and now has full messaging and sidebar functionality. The previous default view (“All messages”) remains an option for the many users who love it.
  • The number of starred messages is now displayed by default in the left sidebar, making it easy to use them as a lightweight to-do list for messages and topics that you’d like to revisit.
  • Dozens of new notification sound options are available to choose from.

Server

  • In this release, we make it easier to see what version of Zulip you are running, and add documentation to explain the Zulip release lifecycle.
    • The Zulip server version is now available via a handy new About Zulip widget. For servers running a version from Git (like Zulip Cloud), details on the commit are displayed in git describe format.
    • The Zulip web and desktop apps will now warn users when connected to a server running a version that is more than 18 months old, to avoid cases where an active server is unintentionally not being updated.
  • This release contains several major performance and scalability improvements. Multiple customers that have already deployed these changes, including organizations with thousands of daily active users, report that their Zulip instance now runs smoothly and reliably.
  • This release integrates Smokescreen, an open-source proxy developed by Stripe to protect a service with outgoing webhooks from being used to make SSRF attacks against other services. The upgrade notes explain how to configure Smokescreen for your organization’s network.
  • New installations now use PostgreSQL 13; existing ones can upgrade.
  • We upgraded Django from 2.2.x LTS to the 3.2.x LTS series. We continue to love how every major Django release has several new features that we really want!
  • This release adds preliminary support for the upcoming Debian 11 “bullseye” release. See our documentation for upgrading the operating system.

API and integrations

  • Zulip’s API documentation now details every core endpoint used by Zulip’s official mobile and terminal apps. The API documentation is now the primary resource our client app developers use to understand the Zulip server’s behavior.
  • Documenting the API continues to provide a natural audit of Zulip’s API for obscure or confusing quirks. As a result, this release contains dozens of documented changes to the Zulip API. Zulip’s backwards-compatibility model allow us to continually improve the API without any disruption – Zulip mobile app releases from 2019 work unmodified against this release!
  • New native integrations have been added for Freshping, JotForm, and Uptime Robot, with major improvements to the integrations for Bitbucket, Clubhouse, GitHub, GitLab, NewRelic, and Zabbix. The new JSON formatter is handy for capturing payloads when writing new integrations.
  • There’s a new GitHub action for sending messages into Zulip.

Internationalization

  • Zulip now has complete or nearly-complete translations for 17 languages: Chinese (China), Chinese (Taiwan), Czech, English (Great Britain), Finnish, French, German, Italian, Japanese, Korean, Persian, Portuguese, Romanian, Russian, Spanish, Turkish, and Ukrainian. Another 8 languages have partial translations which cover the majority of the strings in the project: Bulgarian, Catalan, Dutch, Hindi, Hungarian, Indonesian, Polish, and Swedish.
  • See our translating guide if you’d like to join over 300 amazing volunteers who’ve contributed to Zulip’s translations!
  • Zulip maintenance releases will now contain translation updates. Previously, tooling issues meant that translators needed to wait for the next major release to add a new translation.
  • We have switched to a new frontend internationalization library, FormatJS, which will make it easier for us to give translators context on how strings are used.

See the detailed changelog for dozens of other notable improvements, including new features, performance optimizations, and bug fixes. If you administer a Zulip server, we encourage you to read at least the list of added features at the top, since there are a number of useful new settings introduced in this release that you may want to take advantage of.

Upgrading

We highly recommend upgrading, since this release is a big improvement over previous releases. We work hard to ensure that upgrades are smooth; you can upgrade by following the straightforward upgrade instructions. The upgrade notes section of the changelog details changes you’ll want to understand before upgrading.

Many installations have already upgraded to release candidates, so we feel very confident in this release. But if you need help, best-effort support is available on chat.zulip.org. You can also purchase commercial support from the Zulip core team.

Community

I’d like to take this opportunity to advertise a few opportunities to contribute back to Zulip:

Thanks again to the amazing global Zulip development community for making this possible!

—Tim Abbott, Zulip founder and lead developer

What follows is a summary of the code contributors just to this server release.

$ git shortlog -s 3.0..4.0 | sort -nr
  1017        Anders Kaseorg
   634        Steve Howell
   403        Tim Abbott
   344        Alex Vandiver
   317        Aman Agrawal
   154        Vishnu KS
   152        Sahil Batra
   123        Mateusz Mandera
   107        Abhijeet Prasad Bodas
    64        YashRE42
    58        Sumanth V Rao
    58        Dinesh
    46        aryanshridhar
    45        Riken Shah
    45        Mohit Gupta
    45        Adam Birds
    44        shanukun
    41        SiddharthVarshney
    39        m-e-l-u-h-a-n
    34        Ryan Rehman
    32        Akshat Dalton
    30        Gaurav Pandey
    28        PIG208
    28        orientor
    26        Nikhil Maske
    25        Gittenburg
    24        Priyank Patel
    24        Ganesh Pawar
    22        Siddharth Asthana
    18        Wesley Aptekar-Cassels
    17        Suyash Vardhan Mathur
    17        Clara Dantas
    15        Hemanth V. Alluri
    13        palash
    13        arpit551
    12        Signior-X
    11        Vinit Singh
    10        Tushar Upadhyay
     8        100RABHpy
     8        Megamind
     8        Kartik Srivastava
     7        Tushar912
     7        Priyansh Garg
     7        jagansivam28
     6        Cyril Pletinckx
     5        Thomas Güttler
     5        Max Zawisa
     5        LoopThrough-i-j
     5        Greg Price
     5        Aryan Shridhar
     4        rht
     4        pilgrim2308
     4        Arun Sankar
     4        Alya Abbott
     3        yasiruRathnayaka97
     3        yashika
     3        Sushanth Reddy Manda
     3        smit_patel
     3        Puneeth Chaganti
     3        IgnisDa
     3        Hashir Sarwar
     3        Harsh Srivastava
     2        Zeeshan Equbal
     2        the-rdt
     2        Sutou Kouhei
     2        Sundar Guntnur
     2        strifel
     2        Sankalp
     2        Rohitt Vashishtha
     2        Robert Imschweiler
     2        Nishant Mittal
     2        neiljp (Neil Pilgrim)
     2        marchantia
     2        Mandeep Singh
     2        majordwarf
     2        Greg Rowe
     2        Graham Bleaney
     2        David Wood
     2        Chris Bobbe
     2        Areeb Beigh (Euphinx)
     2        Alex Dehnert
     2        Aditya Mitra
     1        Yashika Jotwani
     1        WookieMonkeys
     1        Wes Galbraith
     1        TylerPham2000
     1        Sumana Harihareswara
     1        Strifel
     1        Sourabh Rana
     1        sophie200
     1        scjess
     1        savish
     1        SaikaIslam
     1        Sahil Silare
     1        S-Abhishek
     1        Rutvi Sharma
     1        Rex Ferrer
     1        Priyank Kumar
     1        Pranav Joglekar
     1        Pranav2612000
     1        Prakhar Gupta
     1        Palash Singh Raghuwanshi
     1        Nyior
     1        Nikhil
     1        Matthew Wegner
     1        Manav Mehta
     1        lukem1
     1        Kenny
     1        Ken Clary
     1        Kaustubh Nair
     1        Kamal Marhubi
     1        Josh Gilley
     1        Jennifer Hwang
     1        Janneke Morin
     1        Isaac Evans
     1        im-adithya
     1        Harsh Sharma
     1        Harsh kumar
     1        guptaprakhariitr
     1        gr455
     1        Flávio Prado
     1        Emilio López
     1        davidscherer
     1        cozyrohan
     1        Cody Piersall
     1        Chris Taylor
     1        Casper Kvan Clausen
     1        Camelid
     1        Brian Lee
     1        Ben Steinberg
     1        Atharva Parkale
     1        aniketsonu
     1        angela s
     1        Amitsinghyadav
     1        Abhishek Yadav
     1        Abhishek-Balaji