Page MenuHomePhabricator

GSoC 2024 proposal - Improve InlineComments extension
Closed, ResolvedPublic

Description

Profile Information

Name: Jayanth Vikash S
Email: [email protected]
GitHub: https://github.com/JayanthVikashS
Location: Tamil Nadu, India (IN).
Mentors: @Yaron_Koren and @Bawolff
Typical working hours: 18:00 IST - 01:00 IST (UTC 5:30)

Synopsis

Improve InlineComments extension
InlineComments (https://www.mediawiki.org/wiki/Extension:InlineComments) is a relatively new MediaWiki extension that provides a long-missing feature for MediaWiki: the ability to do inline annotation on pages, in the manner of Google Docs, Confluence and other content-management systems.

Deliverables

  • Add user mentions, i.e. selecting a user or users to "ping" about the current discussion by typing "@" and then selecting a username from the dropdown (T358632)
  • Make sidebar creation more skin-neutral - currently, the "sidebar" in which comments are displayed is created on somewhat of a skin-by-skin basis; it would be good to have the code handle all skins in a standard way, via CSS and/or JavaScript (T358638)
  • Add correct display of correctly-linked username, on comment creation - currently, it is only displayed correctly for comments created before the page was loaded (T358633)

About Me

I'm Jayanth Vikash S, a graduate student pursuing my Master of Technology in Computer Science and Engineering at Vellore Institute of Technology, Vellore,India. I'm a person inclined towards full stack development and looking forward to getting started with my open source journey. I have participated in around 10 international hackathons organized by companies like Amazon, Rapyd, MLH, etc., and won prizes in 3 of them. I worked on a project called Credible which is an integrated platform for enabling the companies to analyse the standard aspects of business model such as Resume Analysis, Customer review analysis, Sentiment analysis on write-ups and consolidated tweet analysis using expert.ai Natural Language API. I have also worked on a project called Product Score which is a one-stop web application for analysing the public reviews of apps in Atlassian Marketplace, Google Play Store and App Store.

Technical participation

  • Monday.com Climate Change App Challenge

Project: Helps companies in providing bonus payments to employees based on the carbon emission of their vehicles.

  • Hack the North 2021

Project: To keep social networks safe from computer generated/morphed images

  • Runner in Global Yaadhum Oore Conclave Hackathon

Project: Android app which fills digital forms for uneducated people by interacting with them through voice using the Google TTS engine.

Relevant skills

  • PHP
  • JavaScript
  • jQuery
  • Python
  • Django
  • HTML
  • CSS
  • Java

Availability

1. Are you eligible for Google Summer of Code?
Yes. I’m eligible according to the terms described.

2. Do you plan to submit any other proposal apart from this one?
No. This is my only go.

3. Do you have any other plans during the period of GSoC?
No. I will be available for the entire term of GSoC.

4. How many hours per week can you dedicate to this?
I can dedicate 30 hours per week and even more if necessary.

5. Have you been accepted to GSoC before?
No. This is my first attempt.

Wikimedia Contribution

TitleStatusLink
Fix PHP 8.1 deprecation errors for fields being nullMergedhttps://gerrit.wikimedia.org/r/c/mediawiki/extensions/Cargo/ /1008073
Parse description as wikitext in feed formatMergedhttps://gerrit.wikimedia.org/r/c/mediawiki/extensions/Cargo/ /1009392

Timeline

TimeframeTask
Community bonding periodGetting in touch with the mentors
(May 02, 2024 - May 27, 2024)Interacting with the mentors and discuss on the project
Understand the codebase and architecture of the extension
First weekDefine the project requirements and features to be developed
(May 27, 2024 - June 03 , 2024)Develop the code strategy and decide on the potential deadlines for each feature development and testing
Second weekSet up the development environment
(June 03, 2024 - June 10, 2024)Discuss and finalize the approach for each feature with the mentors
Third weekImplementation of correction in correctly-linked username, on comment creation
(June 10, 2024 - June 17, 2024)Test the implemented display correction for correctly-linked username
Refactor and prepare the code for check-in
Fourth weekMeeting with the mentors for suggestions
(June 17, 2024 - June 24, 2024)Refactoring work according to suggestions
Fifth weekCommence development of skin-neutral sidebar creation
(June 24, 2024 - July 01, 2024)Test the sidebar behavior with various skins
Verify the user interface in different screen sizes and scenarios
Sixth weekWriting the first blog post
(July 01, 2024 - July 08, 2024)Documentation update for the implemented features
Seventh weekMid-term evaluation
(July 08, 2024 - July 15, 2024)Testing and bug fixing
Eighth weekImplement user-mentions in annotation style referred by the appropriate usernames
(July 15, 2024 - July 22, 2024)Cover the edge cases like anonymous users and permission handling
Ninth weekMeeting with mentors for suggestions on the proposed implementation of user mentions
(July 22, 2024 - July 29, 2024)Refactoring the code and testing according to the suggestions
Tenth weekDevelop additional features if any desired deliverables are agreed upon
(July 29, 2024 - August 05, 2024)Documentation for the user-mentions feature
Final blog post publication

Event Timeline

Week 1 : Weekly Internship Report (27 May -3 June)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
  1. Key Accomplishments: Highlight any significant achievements or milestones reached during the week.
    • Implemented user ping functionality on comment submission
    • Handle usernames with spaces during annotation and linking
    • Make user pings and timestamp generation to happen in real-time (Completes T358633)
    • Add test cases for the implemented functionality
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them.
    • API response modification and real time updates on the UI - Confusions on selecting among multiple approaches addressed by a very detailed discussion with the mentors
    • Identify the right classes for test-friendly implementation - Experimented with a set of classes performing similar operations based on the suggestions from the mentors and identified the best way

Week 2 : Weekly Internship Report (3 June - 10 June)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
    • Add Echo notification for user pings in comments (1038788) - T358632
    • Add Echo as a phan dependency of InlineComments (1039595)
  1. Key Accomplishments: Highlight any significant achievements or milestones reached during the week.
    • Implemented user notification based on the pings in comments using Echo extension
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them.
    • Understand and implement presentation model for the Echo event - Referred various Echo event implementations from Wikimedia Code Search and experimented to identify the best model structure and namespace loading suitable for the use case with the help of mentors

Week 3 : Weekly Internship Report (10 June - 17 June)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
  1. Key Accomplishments: Highlight any significant achievements or milestones reached during the week.
    • Implemented Echo notification for all user pings in the annotations sidebar

Week 4 : Weekly Internship Report (17 June - 24 June)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
    • Add mention icon and remove title from extras (1048556)
    • Make sidebar skin-neutral in JS (1048022) - In progress
    • Implement "edit" functionality to comments (1049223) - In review
  1. Key Accomplishments: Highlight any significant achievements or milestones reached during the week.
    • Updates where the comments are attached to on edit so that the system is more robust to changes to the underlying document over time
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them
    • Skin neutral sidebar implementation does not get placed in a logically right area when comparing revisions of a page. Working to figure out an ideal approach to handle this edge case

Week 5 : Weekly Internship Report (24 June - 1 July)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
    • Implement "edit" functionality to comments (1049223) - In review
    • Make sidebar skin-neutral in JS (1048022) - In progress
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them
    • Minor bugs in editing interface isolation for aside due to improper jQuery selector set.
    • Still trying to figure out a way to implement the diff page rendering consistent with the existing position

Week 6 : Weekly Internship Report (1 July - 8 July)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
    • Implement "edit" functionality to comments (1049223) - In review
    • Make sidebar skin-neutral in JS (1048022) - In review
  1. Key Accomplishments: Highlight any significant achievements or milestones reached during the week
    • Minor bugs in editcomments patch related to logged-out user permissions
    • Implemented ID based comment edit instead of text matching
    • Fix the functionality bug in comments containing new lines
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them
    • Experimented with various elements where the comments sidebar can be placed such that it works for all the skins

Week 7 : Weekly Internship Report (8 July - 15 July)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
    • Implement "edit" functionality to comments (1049223) - T360965 - Merged
    • Make sidebar skin-neutral in JS (1048022) - T358638 - In review
    • Disable selection of InlineComments in old revisions of the page (1053900) - T369296 - In review
    • Notify the comment initiator on reply and close action (1053908) - T369843 - In review
  1. Key Accomplishments: Highlight any significant achievements or milestones reached during the week
    • Added notification feature for the comment initiator when someone replies or resolves the comment
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them
    • Echo hook override expected User objects and the code was using username string instead. Although this is an easy fix, identifying this problem took a very good time. Thanks to @Bawolff and @Yaron_Koren for the review

Week 8 : Weekly Internship Report (15 July - 22 July)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
    • Fix permission check for the "view" rights of blocked users (T368812) - In review
    • Ignore hidden users in @-mentions in InlineComments (T370102) - In review
    • Make sidebar skin-neutral in JS (1048022) - T358638 - In review
    • Disable selection of InlineComments in old revisions of the page (1053900) - T369296 - Merged
    • Notify the comment initiator on reply and close action (1053908) - T369843 - Merged
  1. Key Accomplishments: Highlight any significant achievements or milestones reached during the week
    • Added check to prevent sidenote functionalities binding when the user is looking at an older revision
    • Display only users who are registered and are not hidden during autocompletion and in page render
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them
    • Identifying the hidden users from MW core API was not straight forward as I had to check for the right option under the allusers query to find the blocked and hidden users which took a significant amount of time in documentation browsing

Week 9 : Weekly Internship Report (23 July - 30 July)

  1. Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.
    • Hide pencil icon on old revisions of the page (1056573) - T370827 - Merged
    • Ignore hidden users in @-mentions in InlineComments (1058632) - T370102 - Merged
    • Make sidebar skin-neutral in JS (1048022) - T358638 - In review
    • Fix permission check for the "view" rights of blocked users (1055979) - T368812 - Merged
    • Make pencil icon bold on hover (1056558) - T370828 - Merged
    • Replace user link for hidden user with '(username removed)' in timestamp (1055983) - T370684 - Merged
    • Add $wgInlineCommentsNamespaces setting (1056585) - T369824 - Merged
    • Replace getActorId with acquireActorId to handle logged out users (1056595) - T368813 - Merged
    • Override default diff for InlineComments changes (1054887) - In progress
  1. Challenges Faced: Describe any difficulties or obstacles you encountered and how you addressed them
    • Absolute Sidebar positioning in a relative layout was quite tricky to achieve.

Week 10 : Weekly Internship Report (31 July - 07 August)

Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.

  • Make sidebar skin-neutral in JS (1048022) - T358638 - In review
  • Override default diff for InlineComments changes (1054887) - Merged

Week 11 : Weekly Internship Report (08 August - 15 August)

Overview of Tasks Completed: Provide a summary of the main tasks you worked on this week.

  • Make sidebar skin-neutral in JS (1048022) - T358638 - In review
  • Add inlinecomments tag for all InlineComments edits (1062699) - In review
Jayanthvikashs changed the task status from Open to In Progress.Aug 24 2024, 6:39 AM