diff --git a/docs/overview/roadmap.md b/docs/overview/roadmap.md index 91eca713b4..8acd3ae63f 100644 --- a/docs/overview/roadmap.md +++ b/docs/overview/roadmap.md @@ -1,278 +1,37 @@ -Zulip Roadmap -============= - -## Introduction +# The Zulip Roadmap 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). +Zulip community. -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. +From when Zulip was released in September 2015 through today (November +2017), more than 350 people have contributed over 5000 pull requests to the +various Zulip repositories. So a lot of what gets done is driven by +contributor interest. That being said, our focus areas for the next few +months are: +* The mobile experience +* Visual polish of the main webapp +* Building out our API, bots and integrations framework +* Onboarding -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. +We also use the [blocker][label-blocker] and [high priority][label-high] +labels in the main server repository to more granularly track issues that +the project's leadership believes would significantly improve the project. +We should emphasize that the majority of issues resolved in regular +Zulip development are not tagged with one of these labels; while it's +essential to make progress on priority projects, the Zulip community feels +strongly that all the little issues are, in aggregate, just as important as +priority projects. -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 welcome participation from the community in influencing the Zulip +roadmap. If a bug or missing feature is causing significant pain for your +organization, we appreciate your commenting to that effect, either in +[chat.zulip.org](chat-zulip-org.html) or on the relevant GitHub issue, with +an explanation of how the issue impacts your use case. See +[Reporting issues](contributing.html#reporting-issues) for more information. -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. +[label-blocker]: +https://github.com/zulip/zulip/issues?q=is%3Aissue+is%3Aopen+label%3A%22priority%3A+blocker%22 +[label-high]: +https://github.com/zulip/zulip/issues?q=is%3Aissue+is%3Aopen+label%3A%22priority%3A+high%22