My main areas in Zulip are the email mirror, retention and rate limiting subsystems. My work during this GSoC was spread out across various small and medium sized projects and the best way to view it is through my commit history. Of course for the purposes of this final GSoC report, the commits with relevant dates should be considered.
Below I will briefly describe the major pieces of my work:
This is a system allowing automatic (or manual) archivization (with possibility of restoring) and ultimately deletion of messages older than a specified amount of days. My work here was essentially rewriting the system, based on the ideas of the original implementation in an old PR. This involved some challenging design to optimize the performance, while ensuring relationships between objects that are being archived are maintained - to keep data integrity.
Most commits relevant to this can be found by searching my commits with the retention
keyword:
https://github.com/zulip/zulip/search?o=asc&q=author%3Amateuszmandera+retention&s=committer-date&type=Commits
This is a system allowing users to send emails to a specific email address, which will then be posted as a message in the appropriate place in zulip. Work on the email mirror was mostly just a variety of small adjustments and writing the current documentation of it.
populate_db
is a script which initializes and populates the database in the development environment with some initial example data. The main part of my work here was changing how this works to make things more analogical to how it is in production environments. This involved a lot of fiddling with the automated tests to make them work after these changes to the structure of the development environment. This was the relevant issue: zulip/zulip#11015
This was a fairly involved bugfix for how some objects were being handled with regard to caching. Details of what was happening here can be found in zulip/zulip#12818
In order to fix this, I had to make significant changes to the handling of display_recipient
, requiring some tricky optimization to avoid performance regression.
Most commits for this can be found by searching my commits with the display_recipient
keyword:
https://github.com/zulip/zulip/search?o=asc&q=author%3Amateuszmandera+display_recipient&s=committer-date&type=Commits
This was a rework of my old PR implementing this feature. It can be found at zulip/zulip#12044 and is awaiting review until some follow-up adjustments can be made and finally merged.
I've been working on this in this last week of GSoC. Most difficulty with this is due to the need to avoid database locking and server downtime - this work is in progress and can be found in the PR zulip/zulip#13062