We extract compose_fade_users and compose_fade_helper. This is a pretty verbatim extraction of code, apart from adding a few exports and changing the callers. This change makes the buddy_data module no longer sit "above" these files in the dependency graph (at least not via compose_fade): * jquery * lodash (not a big deal) * compose_state * floating_recipient_bar * message_viewport * rows The new moules have dependencies that buddy_data already had directly for other reasons: * people * util And then buddy_data still depends on stream_data indirectly through the compose-fade logic for stream_data. Even without compose-fade, it would depend indirectly on stream_data via hash_util. Note that we could have lifted the calls to compose_fade out of buddy_data to move some dependencies around, but it's useful to have buddy_data fully encapsulate what goes into the buddy list without spreading responsibilities to things like activity.js and buddy_list.js. We can now unit-test the logic at the level of buddy_data, which is a lot easier than trying to do it via modules that delegate drawing or do drawing (such as activity.js and buddy_list.js). Note that we still don't have 100% line coverage on the compose_fade.js module, but all the code that we extracted now is covered, mostly via buddy_data tests.
Zulip overview
Zulip is a powerful, open source group chat application that combines the immediacy of real-time chat with the productivity benefits of threaded conversations. Zulip is used by open source projects, Fortune 500 companies, large standards bodies, and others who need a real-time chat system that allows users to easily process hundreds or thousands of messages a day. With over 700 contributors merging over 500 commits a month, Zulip is also the largest and fastest growing open source group chat project.
Getting started
Click on the appropriate link below. If nothing seems to apply, join us on the Zulip community server and tell us what's up!
You might be interested in:
-
Contributing code. Check out our guide for new contributors to get started. Zulip prides itself on maintaining a clean and well-tested codebase, and a stock of hundreds of beginner-friendly issues.
-
Contributing non-code. Report an issue, translate Zulip into your language, write for the Zulip blog, or give us feedback. We would love to hear from you, even if you're just trying the product out.
-
Supporting Zulip. Advocate for your organization to use Zulip, write a review in the mobile app stores, or upvote Zulip on product comparison sites.
-
Checking Zulip out. The best way to see Zulip in action is to drop by the Zulip community server. We also recommend reading Zulip for open source, Zulip for companies, or Zulip for working groups and part time communities.
-
Running a Zulip server. Use a preconfigured DigitalOcean droplet, install Zulip directly, or use Zulip's experimental Docker image. Commercial support is available; see https://zulip.com/plans for details.
-
Using Zulip without setting up a server. https://zulip.com offers free and commercial hosting, including providing our paid plan for free to fellow open source projects.
-
Participating in outreach programs like Google Summer of Code.
You may also be interested in reading our blog or following us on Twitter. Zulip is distributed under the Apache 2.0 license.