Google Summer of Code 201727 AUGUST 2017 /blog
I spent this summer doing Google Summer of Code with Zulip. This blog post summarizes the work that I did. All my work was to improve or add new features to the Zulip server. As a result I was able to work on a multitude of areas covering frontend, backened, management commands etc.
Merged Pull Requests
- Except for the first table all other tables list pull requests that are aimed at solving one problem. The first tables lists pull requests that are independent of each other.
- Note that all the pull requests listed in this section are merged. But most of them have closed label on it as Zulip merges pull requests manually.
|1||Show detailed message why password is weak to user. #5500|
|2||Refactor email confirmation pathways to use common error handling #5891|
|3||Create helper to pass and parse coma separated emails to management commands #6194|
|4||List realms and show only users in the selected realm. #6087|
|5||Use get_realm in management commands #6026|
|6||/apps/: Detect the user OS and show the appropriate app by default. #6192|
|7||Add an PM from welcome bot on user creation. #5342|
|8||Move all_users option to ZulipBaseCommand #6269|
|10||Analytics: Add translation bundle and tags to stats page #5755|
|11||Implemented a feature to show user presence and last seen time in user popover. #4487|
|12||portico: Make backend validation errors similar to frontend. #5609|
|13||Use POST instead of PUT in endpoints which are not idempotent #5721|
|14||User .on(‘load’) instead of .load() #5930|
|15||Send message only if notifications_stream is not deactived #6249|
|16||Create list_realms command #6026|
|17||Move add new default stream box to top. #4745|
|18||docs: Update the path of Supervisor config file. #4700|
|19||requirements: Add service_identity to scrapy.txt. #5465|
|20||management: Use Realm.objects.get instead of get_realm. #5729|
|21||create_user: Separate password help into multiple lines. #5736|
- One major project I was working on was to enable users to register to more than one organization in a Zulip instance. The following pull requests were made for accomplishing this.
|1||Add get_user function #4868|
|2||Add get_user_for_mgmt function #5022|
|3||Replace get_user_profile_by_email with get_user in management commands #5737|
|4||Eliminate get_user_profile in remaining management commands #5761|
|5||Replace get_user_profile_by_email with get_user #5783|
|6||Replace get_user_profile_by_email in analytics, webhooks and avatar #5808|
|7||Use get_user in zilencer, messages, and users #5852|
|8||Replace get_user_profile_by_email #5867|
- Upgraded all the python dependencies(35+) twice over the summer.
|1||Python dependency upgrade #6169|
|2||Python dependency upgrade #5450|
- I also worked on many pull requests that replaced hardcoded emails with helper functions.
|1||Add ZulipTestCase.mit_user() function #4915|
|2||Add example_email, mit_email + refactorings #4948|
|3||Use mit_email and example_email in test_bots.py #4977|
|4||Replace mit_user().email with mit_email(). #5014|
|5||Use example_email function in zerver/tests #5041|
Unmerged Pull Requests
|No||Pull Request||Reason for not getting merged|
|1||Make internal send private message take recipient user profile #5904||We decided to go with an alternative approach as in #6175|
|2||Refactor to get_user in zerver/mgmt/commands/ #5324||We decided to go with an alternative approach as in #5735|
|3||Use regex validation for full_name and realm_subdomain #5441||Decided to not replicate the form checking logic in front end|
- #5656 needs some work before getting merged.