Page MenuHomePhabricator

Proposal: Implement support for Flagged Revisions in Pywikibot (GSoC 2019)
Closed, DeclinedPublic

Description

Name: Jiaxing Wu
Time Zone: UTC -5:00
Email: Jwu96@hawk.iit.edu
IRC Handle: JiaX
Github: https://github.com/JiaWu1998
Location: Chicago, IL, USA
Work Hours: 10am - 4pm (UTC -5:00)
Proposal For: https://phabricator.wikimedia.org/T57081

Synopsis
Pywikibot is a python library that works with WikiMedia’s API to automate tasks in wiki projects. This library is active in a bot account that is approved with bot rights in certain wiki projects. The goal of this project is to add new components to the Pywikibot to support “Flagged Revisions”. The Flagged Revision feature would allow wikis to collect reviews from two groups of users (Editor and Reviewer), list all stable revisions of a page, and change the default wiki page shown to unregistered users as one of the stable versions.

Main Mentors
Gergő Tisza and John Vandenberg

Mentors
@Xqt,@D3r1ck01,@Dvorapa

Pre-Requirements
Here are a few requirements that I need to study before starting this project:
-Metadata (how it works in pywikibot, how it is collected, where it is stored, and how to manipulate it)
-Basic Php
-API queries (what are API queries and which one are needed; this was an advice from mentor @Dvorapa)
-Setup a bot account that is approved for bot rights(this would be used for testing for Pywikibot. I am currently applying for bot right in the Hungarian wiki )
-structure of the core file for Pywikibot (this would give me a good idea where to create files)

Deliverables
-Create ApprovingPages component: A form that collects the reviews from users
-Create UI for ApprovingPages
-Create Stableversions: Lists all revisions of a page that have been marked as stable
-Create UI for Stableversions
-Create StablePages: List of pages manually configured to show the stable version as the default page to unregistered users (though this can be set as the default)
-Create UI for StablePages

Timeline
May 6 to May 27
-Community Bonding
-Study all of the concepts listed in the pre-requirements
May 28 to May 29
-Design UI for ApprovingPages
May 30 to June 5
-Create ApprovingPages function
June 6 to June 9
-Collect feedback on component
June 10 to June 17
-Correct code based on feedback
-finding bugs
-bug fixes
June 18 to June 23
-Seek approval for ApprovingPages
-pull request
June 24 to June 28
Evaluation Period 1
June 29 to June 30
-Design UI for Stableversions
July 1 to July 7
-Create Stableversions function
July 8 to July 11
-Collect feedback on component
July 12 to July 19
-Correct code based on feedback
-finding bugs
-bug fixes
July 20 to July 22
-Seek approval for Stableversions
-pull request
July 22 to July 26
Evaluation Period 2
July 27 to July 28
-Design UI for StablePages
July 29 to August 4
-Create StablePages function
August 5 to August 8
-Collect feedback on component
August 9 to August 16
-Correct code based on feedback
-finding bugs
-bug fixes
August 17 to August 18
-Seek approval for StablePages
-pull request
August 19 to August 26
Final Evaluation Period and Code submit

Participation
-I would stay online in the IRC during my work hours from 10am to 4pm to communicate with my mentors
-I would use Phabricator to keep track of all bugs and fixes.
-I would post weekly blogs on every Sunday on medium.com
-I would fork the pywikibot repo and do a pull request after a component is approved by a mentor

About Me
Currently I am a second year undergraduate at Illinois Institute of Technology. I would be graduating in 2021 with a bachelor in Computer Science and I would also be pursuing a Master degree next semester through a coterminal program. I find gaining new knowledge to be fun but it’s even more exhilarating using it to make something that works. Furthermore, I believe what I do for this project will be meaningful and impactful for all the wiki communities.

Since this is my first time working with GSoC, I am expecting a lot of mistakes on my part. Generally, I am a very chill person while working with others. I am not afraid to ask dumb questions. I will accept all feedbacks and work with my mentors to solve those issues discussed in my feedback.

Past Experience
I have experience with javascript, html, css, java, python, c, and mips. Most of the hackathons I go to focuses on web based applications. The most recent hackathon is HackIllinois. It was a hackathon with a different concept where teams choose mentors from open sources to help contribute code (kinda like what GSoC is doing). The open source that I worked with was 3D web engine called vue-babylonjs and I worked on creating examples and fixing a few bugs for their website.

Note
When I was researching a bit on flagged revisions, I also found other components tailored to flagged revisions. I only picked my deliverable and designed my timeline around the three components that seems to correlate with the prompt on the phabricator post. https://phabricator.wikimedia.org/T57081#5090500
Please let me know if I need to include the other components so I can revise my proposal.

Event Timeline

Jwu96 created this task.Apr 9 2019, 4:00 PM
Restricted Application added a subscriber: Aklapper. · View Herald TranscriptApr 9 2019, 4:00 PM

Some remarks:

  • Basic Php: perhaps some Python as well
  • Collect feedback on component: perhaps you should reserve slightly more time for this
  • I would fork the pywikibot repo and do a pull request after a component is approved by a mentor: Gerrit works slightly different, you will pull request first and then ask reviewers and mentors to write down comments and thoughts. Finally once the code is approved it is merged directly by a mentor. Anyway I like you will split the work into three pull requests, the less code to review in each patch, the better. Also be prepared to create unittests for every feature you'll add.
  • I only picked my deliverable and designed my timeline around the three components that seems to correlate with the prompt on the phabricator post: Ask communities on wikis, that are using Flagged Revisions, what features would be cool to have bot support for.

@Jwu96 Thanks for your proposal! Could you also update the proposal w/ links to any prior contributions to FOSS projects or Wikimedia (if any)?

Xqt removed a subscriber: srishakatux.Apr 9 2019, 8:42 PM
Xqt added a subscriber: srishakatux.
Xqt triaged this task as Low priority.Apr 9 2019, 8:44 PM

If you would like us to consider your proposal for review, please move it to the submitted column on Google-Summer-of-Code (2019) board.

Restricted Application added a subscriber: pywikibot-bugs-list. · View Herald TranscriptApr 10 2019, 3:13 AM
Jwu96 added a comment.EditedApr 10 2019, 2:06 PM

Thank you @Xqt .
I also think that it's a good idea that I should've asked for the development guidelines of this project. I just learned something new. :)
I'll keep that one in mind for the future.

I'll try to look over those pages in the weekend since Im kinda busy with midterms right now.
Thanks for the feedback. I really appreciate it.

Jwu96 added a comment.EditedApr 10 2019, 2:15 PM

@ Dvorapa
When you say "Ask communities on wikis", which communication device is the best for that? Phabricator, zulip, or IRC?

@ Dvorapa
When you say "Ask communities on wikis", which communication device is the best for that? Phabricator, zulip, or IRC?

Wiki talk pages directly, for example Technical forums

D3r1ck01 moved this task from Backlog to Needs Review on the Pywikibot board.Apr 28 2019, 8:32 PM
D3r1ck01 moved this task from Needs Review to Backlog on the Pywikibot board.

(look for next steps in the email you'll receive shortly with an option to request for a debrief on why your proposal was not accepted)

srishakatux closed this task as Declined.May 7 2019, 12:25 AM