mirror of https://github.com/zulip/zulip.git
275 lines
12 KiB
Markdown
275 lines
12 KiB
Markdown
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.
|
||
|
||
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. This will dramatically improve the
|
||
usability of the streams and settings UIs, and make the entire webapp
|
||
feel like a modern web experience. We plan to make the first release
|
||
containing this redesign Zulip 2.0, likely in early 2017.
|
||
|
||
* 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 by
|
||
the end of 2016.
|
||
|
||
## 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)
|
||
* <strike>[Make realm filters web-configurable](https://github.com/zulip/zulip/pull/544)</strike>
|
||
* [Improve administrative controls for managing streams](https://github.com/zulip/zulip/issues/425)
|
||
* [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 10000 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.
|