Zulip Roadmap ============= ## Introduction Zulip has received a great deal of interest and attention since it was released as free and open source software by Dropbox. That attention has come with a lot of active development work from members of the Zulip community. From when Zulip was released as open source in late September 2015 through today (early November, 2016), more than 150 people have contributed over 1000 pull requests to the various Zulip repositories, the vast majority of which were submitted by Zulip's users around the world (as opposed to the small core team that reviews and merges the pull requests). In any project, there can be a lot of value in periodically putting together a roadmap detailing the major areas where the project is hoping to improve. This can be especially important in an open source project like Zulip, where development is distributed across many people around the world. This roadmap is intended to organize a list of the most important improvements that should be made to Zulip in the relatively near future. Our aim is to complete most of these improvements by February 2017 and then prepare a new roadmap then. This document is not meant to constrain in any way what contributions to Zulip will be accepted; instead, it will be used by the Zulip core team to prioritize our efforts, measure progress on improving the Zulip product and hold ourselves accountable for making Zulip improve rapidly. This roadmap is the best place for contributors to look for substantial projects that will definitely be of value to the community (if you're looking for a starter project, see the [guide to getting involved with Zulip](https://github.com/zulip/zulip#how-to-get-involved-with-contributing-to-zulip)). We periodically update this roadmap by adding strikethrough to issues that have been resolved, but the linked GitHub issues are the most up-to-date source for that information. Update: As of May 2017, we are approaching the point where we need to update the roadmap due to much of it being completed. Without further ado, below is the current Zulip roadmap. ## Major projects There are 2 huge projects that Zulip is working on right now that are too big to have a coherent GitHub issue: * We are working with a world-class designer on a major visual redesign of the Zulip webapp. Already complete is completely redesining the streams and settings UIs, logged-out pages, and various other major components. * We are writing a [new React Native iOS app for Zulip](https://github.com/zulip/zulip-mobile) to replace the old iOS app. The new app is progressing rapidly, but is not yet feature complete. We expect it to be in the app store in May 2017. ## Core User Experience * [Provide shorter UI/Keyboard sequence to edit the last message](https://github.com/zulip/zulip/issues/1147) * [Better drafts management](https://github.com/zulip/zulip/issues/1717) * [Make clicking on desktop notifications renarrow properly](https://github.com/zulip/zulip/issues/1996) * [Add pretty bubbles for recipients in the compose box](https://github.com/zulip/zulip/issues/595) * [Make right sidebar buddy list UI scale well to large teams](https://github.com/zulip/zulip/issues/236) * [Display stream descriptions more prominently](https://github.com/zulip/zulip/issues/164) * [Add support for managing uploaded files](https://github.com/zulip/zulip/issues/454) ## Social features * [Add support for showing "user is typing" notifications, at least for private messages](https://github.com/zulip/zulip/issues/150) * [Support lightweight emoji "reactions"](https://github.com/zulip/zulip/issues/541) * [Open graph previews of generic websites](https://github.com/zulip/zulip/issues/406) * [Add a "join Zulip chat" badge for projects that use Zulip to document that nicely](https://github.com/zulip/zulip/issues/2270) ## Real-time sync The overall goal is to eliminate the few known issues where Zulip does not provide a seamless real-time sync experience. * [Notification bot advertisements for new streams don’t handle stream renames](https://github.com/zulip/zulip/issues/426) * [Avatar/name changes don’t propagate to already-sent messages](https://github.com/zulip/zulip/issues/1932) * [Advance the pointer / where we load the user to based on unread counts in home view](https://github.com/zulip/zulip/issues/1529) * [Fix the known bug where messages could be incorrectly marked as read](https://github.com/zulip/zulip/issues/2091) ## Onboarding issues This category focuses on issues users experience when installing a new Zulip server, setting up a new Zulip realm, or starting to use Zulip. * [Move Zulip's prompt for permission to display notifications to be manually triggered](https://github.com/zulip/zulip/issues/1189) * [Add a mechanism for deleting early test messages (e.g., administrators can hard-delete messages)](https://github.com/zulip/zulip/issues/135) * [Allow customizing emails when inviting new users](https://github.com/zulip/zulip/pull/1409) ## Production installation issues * [Document or better script solution to rabbitmq startup issues](https://github.com/zulip/zulip/issues/465) * [Merge a supported way to use Zulip in Docker in production implementation](https://github.com/zulip/zulip/pull/450). ## Administration and management * [Make list of allowed domains web-configurable](https://github.com/zulip/zulip/issues/651) * [Statistics display for realm and server administrators](https://github.com/zulip/zulip/issues/2052) * [Keep track of which users added which realm emoji](https://github.com/zulip/zulip/issues/984) * [Add setting to enable any user to add new realm emoji](https://github.com/zulip/zulip/issues/978) * [Make realm filters web-configurable](https://github.com/zulip/zulip/pull/544) * [Improve administrative controls for managing streams](https://github.com/zulip/zulip/issues/3783) * [Enhance the LDAP integration and make it web-configurable](https://github.com/zulip/zulip/issues/715) * [Add a SAML integration for Zulip](https://github.com/zulip/zulip/issues/716) ## Scalability and performance Scalability and performance are not currently major problems for Zulip; it already scales well to thousands of users and is significantly faster than proprietary alternatives. So, this is not a major focus area for the project. * [Make the Zulip Tornado service support horizontal scaling](https://github.com/zulip/zulip/issues/445) * [Make presence system scale well to 5000 users in a realm.](https://github.com/zulip/zulip/issues/728) * [Support running queue workers multithreaded in production to decrease minimum memory footprint](https://github.com/zulip/zulip/issues/34) * [Improve @-mentioning syntax based on stronger unique identifiers](https://github.com/zulip/zulip/issues/374) ## Technology improvements * [Add support for Zulip running purely on Python 3](https://github.com/zulip/zulip/issues/256) * [Automatic thumbnailing of uploaded images' previews to save bandwidth](https://github.com/zulip/zulip/issues/432) * [Upgrade Zulip to use Django 1.10. The patches needed to run Zulip were merged into mainline Django in Django 1.10, so this will mean we don't need to use a fork of Django anymore.](https://github.com/zulip/zulip/issues/3) * [Upgrade and remove from codebase all unnecessarily vendored JS libraries](https://github.com/zulip/zulip/issues/1709) * [Add support for changing users' email addresses](https://github.com/zulip/zulip/issues/734) * [Migrate from jslint to eslint](https://github.com/zulip/zulip/issues/535) * [Replace the slow closure-compiler based static asset toolchain](https://github.com/zulip/zulip/issues/693) * [Use a modern JavaScript bundler like webpack](https://github.com/zulip/zulip/issues/695) * [Add support for building frontend features in something like React](https://github.com/zulip/zulip/issues/694) ## Technical Debt While the Zulip server has a great codebase compared to most projects of its size, it takes work to keep it that way. * [Migrate most web routes to REST API](https://github.com/zulip/zulip/issues/611) * [Split Tornado subsystem into a separate Django app](https://github.com/zulip/zulip/issues/729) * [Refactor zulip.css to be broken into components](https://github.com/zulip/zulip/issues/731) ## Security * [Add support for 2-factor authentication on all platforms](https://github.com/zulip/zulip/pull/1747) * [Add support for stronger security controls for uploaded files (The LOCAL_UPLOADS_DIR file uploads backend only supports world-readable uploads)](https://github.com/zulip/zulip/issues/320) * [Fix requirement to set a password when creating account via Google](https://github.com/zulip/zulip/issues/1633) * [Add a retention policy feature that automatically deletes old messages](https://github.com/zulip/zulip/issues/106) * [Add UI for viewing and cancelling open Zulip invitations](https://github.com/zulip/zulip/issues/1180) ## Testing * [Extend Zulip's automated test coverage to include all API endpoints](https://github.com/zulip/zulip/issues/1441) * [Build automated tests for the client API bindings](https://github.com/zulip/zulip/issues/713) * [Add automated tests for the production upgrade process](https://github.com/zulip/zulip/issues/306) ## Documentation * [Add an in-app mechanism for updating users about new Zulip features](https://github.com/zulip/zulip/issues/2187) * [Significantly expand documentation of the Zulip API and integrating with Zulip.](https://github.com/zulip/zulip/issues/672) * [Write a visual design / frontend style guide for Zulip](https://github.com/zulip/zulip/issues/979) * [Update all screenshots to show the current Zulip UI](https://github.com/zulip/zulip/issues/599) ### Nice to have * [Expand library of documentation on Zulip's feature set. Currently most documentation is for either developers or system administrators.](https://github.com/zulip/zulip/issues/675) ## Integrations and bots Integrations are essential to Zulip. While we currently have a reasonably good framework for writing new webhook integrations for getting notifications into Zulip, it'd be great to streamline that process and make bots that receive messages just as easy to build. * [Add an outgoing webhook integration system](https://github.com/zulip/zulip/issues/735) * [Make setting up a new integration a smooth flow](https://github.com/zulip/zulip/issues/692) * [Default new incoming webhooks to permissions-limited incoming webhook bots](https://github.com/zulip/zulip/issues/2186) * [Change how Zulip displays bot names to distinguish them from human users](https://github.com/zulip/zulip/issues/1107) ## Android app * [Add support for narrowing to @-mentions](https://github.com/zulip/zulip-android/issues/39) * [Support having multiple Zulip realms open simultaneously](https://github.com/zulip/zulip-android/issues/47) ## iOS app For the new [React Native iOS app](https://github.com/zulip/zulip-mobile), the major goal for it is to be released into the app store. Since it is moving quickly, we're [tracking its roadmap via GitHub milestones](https://github.com/zulip/zulip-mobile/milestones). ## Server/webapp support for mobile To support a great mobile experiences, we need to make some improvements in the Zulip server. * [Push notifications bouncer service for GCM and APNS](https://github.com/zulip/zulip/issues/1767) * [A slick process for doing mobile login without typing your password on your phone](https://github.com/zulip/zulip/issues/2185) * [`@here` mention support (that doesn’t spam people not currently online, i.e. no email/push notifications)](https://github.com/zulip/zulip/issues/2183) * [Fix sending messages from mobile web](https://github.com/zulip/zulip/issues/2184) ## Desktop apps The new [cross-platform desktop app](https://github.com/zulip/zulip-electron) is implemented in [Electron](http://electron.atom.io/), and primarily needs work on installer tooling to finish replacing the old app. * Finish releasing the Electron app to replace the old desktop app * [Support having multiple Zulip realms open simultaneously](https://github.com/zulip/zulip-electron/issues/1) ## Community These don't get GitHub issues since they're not technical projects, but they are important goals for the project. * Expand the number of core developers able to do code reviews * Have a successful season with Zulip's Outreachy participants * Have a successful season with Google Code In.