Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,267 @@ | ||
Zulip 2016 Roadmap | ||
================== | ||
|
||
## Notes on the state of this document | ||
|
||
* This is a first draft, developed to get feedback from the Zulip user | ||
and developer community on what is important. If there's something | ||
that you think is important but isn't on here, speak up! The | ||
This comment has been minimized.
Sorry, something went wrong. |
||
purpose of this document is ultimately to provide you an opportunity | ||
to speak up about your ideas for where Zulip should be going. | ||
This comment has been minimized.
Sorry, something went wrong.
lfaraone
|
||
|
||
* The plan is to have ~all the items link to the corresponding bugs in | ||
the Zulip bug tracker, as they do in the "Core User Experience" | ||
section. I haven't taken the time to track down all the links (and | ||
This comment has been minimized.
Sorry, something went wrong. |
||
open issues where one doesn't exist) yet. I'm also imagining we'll | ||
tag the issues in this document with a milestone on GitHub so it's | ||
easy to check in on progress as we go. | ||
|
||
* This may end up being a living document where we add new things that | ||
we realize are important but weren't on here, or it may be something | ||
where we generate a new one every N months. We'll figure that over | ||
the coming months. | ||
|
||
## Introduction | ||
|
||
Zulip has received a great deal of interest and attention since it was | ||
released as open source software by Dropbox. That attention has come | ||
This comment has been minimized.
Sorry, something went wrong. |
||
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 (mid-April, 2016), over 300 pull requests | ||
have been submitted to the various Zulip repositories (and over 250 | ||
have been merged!). The vast majority of these pull requests were | ||
written by users from all around the Zulip community, making Zulip in | ||
many ways a community-driven, distributed-development, open source | ||
project. | ||
|
||
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, since it can help contributors looking for a | ||
project to focus their efforts. This roadmap is intended to organize | ||
This comment has been minimized.
Sorry, something went wrong. |
||
a list of the most important improvements that should to be made to | ||
Zulip in the relatively near future. We are hoping to set a goal of | ||
This comment has been minimized.
Sorry, something went wrong. |
||
completing most of these improvements in 2016. | ||
|
||
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, hold ourselves accountable for making Zulip improve | ||
rapidly, and celebrate members of the community who contribute to | ||
projects on the roadmap. | ||
|
||
If you're someone interested in making a larger contribution to Zulip | ||
and looking for somewhere to start, this roadmap is the best place to | ||
look for substantial projects that will definitely be of value to the | ||
community (if you're looking for a starter project, the bite-size | ||
project label on GitHub Issues is a great source for those). | ||
|
||
Without further ado, below is the (proposed) Zulip 2016 roadmap. | ||
|
||
## Burning problems | ||
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
Our opinion is that the top problem for the Zulip project is the state | ||
of the mobile apps. The Android app has started rapid progress thanks | ||
to a series of contributions by Lisa Neigut of Recurse Center, and we | ||
believe to be on a good path. The iOS app has fewer features than | ||
Android and has more bugs, but more importantly is in need of an | ||
experienced iOS developer who can drive the project. | ||
|
||
## Core User Experience | ||
This comment has been minimized.
Sorry, something went wrong.
wdaher
|
||
|
||
This comment has been minimized.
Sorry, something went wrong.
wdaher
|
||
This category includes important improvements to the core user | ||
experience that will benefit all users. | ||
|
||
* [Add pretty bubbles for recipients in the compose box](https://github.com/zulip/zulip/issues/595) | ||
* [Finish and merge support for pinning a few important streams](https://github.com/zulip/zulip/issues/285) | ||
* [Add support for showing "user is typing" notifications](https://github.com/zulip/zulip/issues/150) | ||
* [Display stream descriptions more prominently](https://github.com/zulip/zulip/issues/164) | ||
* [Integration inline URL previews](https://github.com/zulip/zulip/issues/406) | ||
* [Add support for managing uploaded files](https://github.com/zulip/zulip/issues/454) | ||
* [Improve missed message notifications to make "reply" work nicely](https://github.com/zulip/zulip/issues/612) | ||
|
||
## Ease of setup and onboarding issues | ||
|
||
This category focuses on issues users experience when installing a new | ||
Zulip server or setting up a new Zulip realm. | ||
|
||
* [Create a web flow for setting up a new realm (currently, it's a command-line process)](https://github.com/zulip/zulip/issues/260) | ||
This comment has been minimized.
Sorry, something went wrong. |
||
* [Document or better script solution to rabbitmq startup issues](https://github.com/zulip/zulip/issues/465) | ||
* [Merge a supported Docker in production implementation](https://github.com/zulip/zulip/pull/450) | ||
* [Add a mechanism for deleting early test messages](https://github.com/zulip/zulip/issues/135) | ||
This comment has been minimized.
Sorry, something went wrong.
lfaraone
|
||
|
||
## Internationalization | ||
This comment has been minimized.
Sorry, something went wrong.
lfaraone
|
||
|
||
The core Zulip UI has been mostly translated into 5 languages; | ||
however, more work is required to make those translations actually | ||
displayed in the Zulip UI for the users who would benefit from them. | ||
|
||
* [Merge support for using translations in Django templates](https://github.com/zulip/zulip/pull/607) | ||
* Add text in handlebars templates to translatable string database | ||
* Add text in error messages to translatable string database | ||
* Merge support for translating text in handlebars | ||
* Merge support for translating text in error messages | ||
|
||
## User Experience at scale | ||
This comment has been minimized.
Sorry, something went wrong.
wdaher
|
||
|
||
There are a few parts of the Zulip UI which could benefit from | ||
overhauls designed around making the user experience nice for large | ||
teams. | ||
|
||
* [Show subscriber counts on streams](https://github.com/zulip/zulip/pull/525) | ||
* [Make the buddy list work better for large teams](https://github.com/zulip/zulip/issues/236) | ||
* Make the streams page easier to navigate with 100s of streams | ||
* [Improve @-mentioning syntax based on stronger unique identifiers](https://github.com/zulip/zulip/issues/374) | ||
|
||
## Administration and management | ||
|
||
Currently, Zulip has a number of administration features that can be | ||
controlled only via the command line. | ||
|
||
* Make default streams web-configurable | ||
* Make [realm emoji](https://github.com/zulip/zulip/pull/543) web-configurable | ||
* Make [realm filters](https://github.com/zulip/zulip/pull/544) web-configurable | ||
* Enhance the LDAP integration and make it web-configurable | ||
* Add a SAML integration and make it web-configurable | ||
This comment has been minimized.
Sorry, something went wrong.
lfaraone
|
||
* [Improve administrative controls for managing streams](https://github.com/zulip/zulip/issues/425) | ||
|
||
## Scalability | ||
|
||
Zulip should support 10000 users in a realm and also support being run | ||
for small realms in resource-constrained environments. | ||
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
* [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. | ||
* [Support running queue workers multithreaded in production to | ||
decrease minimum memory footprint](https://github.com/zulip/zulip/issues/34) | ||
|
||
## Performance | ||
|
||
Performance is essential for a communication tool. While some things | ||
are already quite good (E.g. narrowing and message sending perf), | ||
Zulip could definitely use some work on loading more quickly. | ||
|
||
* [Migrate to faster jinja2 templating engine](https://github.com/zulip/zulip/issues/620) | ||
* Optimize the performance of loading the Zulip webapp | ||
|
||
## Technology improvements | ||
|
||
Zulip should be making use of the best Python/Django tools available. | ||
|
||
* [Add support for Zulip running on Python 3](https://github.com/zulip/zulip/issues/256) | ||
* [Add Python static type-checking to Zulip]() | ||
This comment has been minimized.
Sorry, something went wrong. |
||
* [Add support for changing users' email addresses]() | ||
* [Automatic thumbnailing of uploaded images](https://github.com/zulip/zulip/issues/432) | ||
* Upgrade Zulip to use Django 1.10 once it is released. 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. | ||
|
||
## 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) | ||
* [Finish purging global variables from the Zulip javascript](https://github.com/zulip/zulip/issues/610) | ||
* Finish deprecating and remove the pre-REST Zulip /send_message API | ||
* Split Tornado subsystem into a separate Django app; this should | ||
substantially improve the code organization. | ||
* Clean up clutter in the root of the zulip.git repository | ||
* Refactor zulip.css to be broken into components | ||
|
||
## Deployment and upgrade process | ||
|
||
* Retool the way upgrades work to easily support | ||
backwards-incompatible upgrades to Python libraries | ||
* Optimize the static asset building process to make triggering code | ||
deploys on git pushes practical again (currently takes over 1m to | ||
build static assets even on a very fast machine). | ||
* [Minimize the downtime required in Zulip upgrade process]() | ||
|
||
## Security | ||
|
||
* [Add support for 2-factor authentication on all platforms](https://github.com/zulip/zulip/pull/451) | ||
* [Add a retention policy feature that automatically deletes old messages](https://github.com/zulip/zulip/issues/106) | ||
* Upgrade every Zulip dependency to a modern version | ||
* [The LOCAL_UPLOADS_DIR file uploads backend only supports world-readable uploads](https://github.com/zulip/zulip/issues/320) | ||
* Add support for stronger security controls for uploaded files | ||
|
||
## Testing | ||
|
||
* Extend Zulip's automated test coverage to include all API endpoints | ||
* Build automated tests for the client API bindings | ||
* [Improve the runtime of Zulip's backend test suite](https://github.com/zulip/zulip/issues/441) | ||
* Use caching to make Travis CI runtimes faster | ||
* [Add automated tests for the production upgrade process](https://github.com/zulip/zulip/issues/306) | ||
* [Improve Travis CI "production" test suite to catch more regressions](https://github.com/zulip/zulip/issues/598) | ||
|
||
## Development environment | ||
|
||
* [Migrate from jslint to eslint](https://github.com/zulip/zulip/issues/535) | ||
* Decide whether to replace pyflakes linter | ||
* Figure out a nice upgrade process for Zulip Vagrant VMs | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong.
timabbott
Author
Owner
|
||
* Have well-documented process for new contributors for all apps. | ||
* Continue improving linters and tests to catch common mistakes before | ||
code review. | ||
|
||
## Documentation | ||
|
||
* Significantly expand documentation of the Zulip API and integrating | ||
with Zulip. | ||
* Expand library of documentation on Zulip's feature set. Currently | ||
most documentation is for either developers or system administrators. | ||
* Expand developer documentation with more tutorials explaining how to do | ||
various types of projects. | ||
* Overhaul new contributor documentation, especially on coding style, | ||
to better highlight and teach the important pieces. | ||
|
||
## Community | ||
|
||
* Setup a Zulip server for the Zulip development community | ||
* Expand the number of core developers able to do code reviews | ||
* Expand the number of contributors regularly adding features to Zulip | ||
|
||
## Integrations | ||
|
||
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. | ||
|
||
* Build a framework for writing integrations that receive messages | ||
* Build tools for sending messages from fixtures into Zulip to support | ||
taking screenshots for webhook integrations | ||
|
||
## Android app | ||
|
||
The Zulip Android app is ahead of the iOS app in terms of feature set, | ||
so this section serves to document the goals for Zulip on mobile. | ||
|
||
* [Support using a non-zulip.com server](https://github.com/zulip/zulip-android/issues/1) | ||
* Support having multiple Zulip realms open simultaneously | ||
* Support Google authentication with a non-Zulip.com server | ||
* Build a slick development login page to simplify testing (similar to | ||
the development homepage on web) | ||
* [Improve the compose box to let you see what you're replying to](https://github.com/zulip/zulip-android/issues/8) | ||
* [Make it easy to compose messages with mentions, emoji, etc.](https://github.com/zulip/zulip-android/issues/11) | ||
* Display unread counts and improve navigation | ||
* [Hide messages sent to muted topics](https://github.com/zulip/zulip-android/issues/9) | ||
* [Fill out documentation to make it easy to get started]() | ||
|
||
## iOS app | ||
|
||
Most of the projects listed under Android apply here as well, but it's | ||
worth highlighting some areas where iOS is substantially behind | ||
Android. The top priority here is recruiting a lead developer for the | ||
iOS app. | ||
|
||
* iOS app crashes at startup on latest iOS | ||
* APNS notifications are broken | ||
|
||
## Desktop apps | ||
|
||
* Desktop app doesn't recover well from entering the wrong Zulip server | ||
* Support having multiple Zulip realms open simultaneously | ||
* Migrate platform from QT/webkit to Electron | ||
* Build an efficient process for testing and releasing new versions of | ||
the desktop apps |
It'd be great to provide a CTA here. Where should I speak up?