Skip to content

Instantly share code, notes, and snippets.

@Ujjawal3
Last active August 23, 2023 12:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ujjawal3/e46d360636384d1a277e3b2789ea1e2a to your computer and use it in GitHub Desktop.
Save Ujjawal3/e46d360636384d1a277e3b2789ea1e2a to your computer and use it in GitHub Desktop.
Google Summer of Code Report

Google Summer of Code 2023 @Zulip - Work Report

Introduction

My Google Summer of Code with Zulip mostly revolved around the work on user groups, realm settings and stream settings. I mostly contributed to groups permission migration project which aims to replace every permission in Zulip which can be assigned values based on various roles to a value based on arbitary user group.

I added a couple of settings based on groups permission model and added new features in settings area, done code refactoring, code migrating, code cleanup, and bug fixing.


Contributions

Pull requests related to group migration project

Merged pull requests

  • api: Rename API fields related to stream and group level group settings #26243.

    This PR renames the API parameters to conform with API design as decided in #api design > Single user groups.

  • user_groups: Update code for changing group level settings #26372.

    Earlier while changing group level group based settings there was no check if the new value for setting is same as the current value. This PR adds this check now a setting value will be only changed when it is not equal to present value.

  • User Groups prep commits #26149.

    Some of the preparatory commits from #25884 were extracted to this pull request.

Open pull requests

  • invitations: Add a new setting for configuring invite link creation permissions #25884.

    Earlier there was a realm level setting for configuring permissions for creating email invitations. But creating multiuse invites link was restricted to admins only. This PR adds a new setting based on groups permission model for configuring multiuse invite link creation permissions. It was also the first realm level setting which is based on groups permission model, so a lot of preparatory work was done in this PR. It also addresses some issues regarding invite panel not getting updated from server events.

  • user_groups: Add group level setting for configuring who can manage that group #26355.

    This PR adds a group level setting for configuring permissions for managing the group. The added setting allows giving permissions to only group creator by making it possible to automatically create single member user groups. So, this PR also does the work for automatically creating single user groups on demand. It was also the first group level setting which can be configured by users.

Pull requests related to settings and stream settings

Merged pull requests

  • invite: Restructure "Invite user" modal for improved user experience #25827.

  • streams: Warn when archiving a notification stream #26111.

Open pull requests

  • realm: Schedule realm deletion time while deactivating realm #26109.

    Earlier it was not possible to automatically delete the data of deactivated organizations. This PR adds a new feature which allows to schedule data deletion time while deactivating an organization and data on specified time will be automatically deleted from server.

  • settings: Improve UI of deactivated and reactivated users #26147.

Pull request reviewed

  • Improve design of empty list view #26196.
  • Allow admin to set organization language at creation time #26102.

Major discussions I have been a part of

During the project period, I have been part of various discussions with Zulip community. Some of the discussions in which I actively participated are:

My weekly progress during project period can be found in #GSoC > Ujjawal Modi.

Future Work in the project

Overall, the groups permission migration project was very broad. There are dozens of existing settings to migrate and also many new settings needs to be added. As user groups will be key element for configuring the permissions in this project, so a lot of work on enhancing user groups also needs to be done. The current state have a realm level, stream level and group level setting which allows to give permissions based on role-based system groups. So, now adding any group based setting on backend part will be pretty straightforward.

Next steps on the project would be to add realm level settings for enhancing user groups as described in #25929 and work on UI widget which allows to create a user group from dropdown menu. After the completion of above work existing settings can be migrated to groups model.

My experience with Zulip

My experience with Zulip was a remarkable journey of growth and learning. I acquired practical skills in collaborative software development, navigating complex codebases, and delivering impactful features. I learned the art of breaking down complex tasks into smaller issues and how to approach large changes by splitting them into a series of logical commits. Apart from improving my programming skills, I also learned the importance of code reviews, regular checkins, communication and by engaging in the community discussions I got overview of how to develop and maintain a large software.

I would be forever thankful to whole Zulip community for providing me such a great learning experience this summer.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment