Skip to content

Instantly share code, notes, and snippets.

@aero31aero
Last active August 25, 2019 18:54
Show Gist options
  • Save aero31aero/3b6b469688b56741d060737eb455e12e to your computer and use it in GitHub Desktop.
Save aero31aero/3b6b469688b56741d060737eb455e12e to your computer and use it in GitHub Desktop.
Work Across Zulip Message Rendering Pipeline - GSoC 2019

GSOC Work Summary

All my commits merged can be found here: https://github.com/zulip/zulip/commits?author=aero31aero

At Zulip, we kept merging code regularly and there wasn't any final large PR containing all my code. The list below summarizes most of the commits present above from June 2019 to August 2019.

I have divided my work into 4 parts:

  1. Merged: Merged before GSOC ending deadline
  2. Unmerged: PRs open and in review-update cycles.
  3. Pending: Features that I haven't yet submitted for review.
  4. Failures: Features or changes I started to do but abandoned.

On the whole, I managed to complete approx 8 tasks in markdown subsystem and approx 3 misc tasks otherwise.

Of my 4 deliverables in the proposal, the current status is:

  1. Work on Zulip's message rendering pipeline: 7/9 listed issues fixed or ready for review.
  2. Assist in typescript migration.: Open ended goal, and I couldn't contribute much towards this.
  3. Develop experimental features: 1/4 of the features are being worked on and should have a PR soon, other 2 don't have any work done. Submessages architecture needs some urgent love, and I'd love to have someone to discuss and work on this with. Steve is absent from Zulip for a while and his presence is essential in my opinion to make changes here.
  4. Try to make Zulip's markdown easier to use: This was a holistic goal and I feel we as a team have succeeded in making our markdown implementation simpler, reducing the 'aha' moments a user might have. The general trend we're now seeing is going back to commonmark spec when possible, which is a good goal to strive for.

Overall, I feel I achieved around 60% of my GSoC goals, and thus I'm markng as 'most goals fullfilled' in the choices.

Merged

Markdown Changes

  1. Handle topic links related updates.
  2. Update message flags on message update from server.
  3. Fix status message detection logic.
  4. Upgrade py-markdown.
  5. Stream Topic mention (major change).
  6. Add features to typeahead handling (major change).
  7. Enable hashheadings syntax.
  8. Minor updates to tests.

Misc

  1. Fix a narrowing bug.
  2. Remove unused portico code.
  3. Minor stream rendering bugs.

Unmerged

Markdown

  1. Markdown link changes, including support to add image syntax. (zulip/zulip#12979)
  2. Block Quotes with message id(zulip/zulip#13001)
  3. Liberal autolinking (zulip/zulip#10825)

Misc

  1. Zulip Terminal column width restriction: zulip/zulipterminal#388
  2. Stream Specific Linkifiers zulip/zulip#11092 (WIP)

Pending

  1. Fork marked to zulip/marked and extend the API to support our usecases. (50%)
  2. Recent topics rewrite. (30%)
  3. Tab navigation rewrite. (30%)
  4. Zforms for zulip terminal. (60%)
  5. Shift testing data for marked and bugdown to markdown_test_cases. (50%)
  6. Timestamp syntax. (zulip/zulip#5253) (70%)

Failures:

  1. Migrate markdown_test_cases to YAML or similar for better documentation. There were unicode parsing errors in yaml's python implementation, and I'm not inclined to add a new parser to our dependencies. I explored some JSON parsers that allow comments but they aren't the part of the spec and don't have much communitiy support. This should be revisited soon with a simple script to strip all lines starting with // from the testcases file before parsing.
  2. Remove custom code from bugdown for things already present in py-markdown; failed on some parts, didn't make any PR. I tried to look at things we were rewriting (like the list syntaxes and fenced code etc) and tried to subclass the py-markdown implementation for some of them. I succeeded for our autolinks parser, but failed for others that I tried this on.

Notes

  1. I would be working for the next 3 weeks to wrap up the pending PRs and finish some more tasks on my list, before taking up any new tasks.
  2. A significant part of my time was spent debugging some elusive bugs related to the typeaheads that I'm struggling to reproduce but were surely introduced by my changes to the system. I have half a mind to look at what upstream has been doing since we 'forked' from them and see if the event management for the typeaheads has become more explicit now.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment