Profile Information
Name: Aditya Jain
IRC nickname on Freenode: AdityaJ
GitHub profile: https://github.com/Jain-Aditya
Location (country or state): India (UTC +5:30)
Typical working hours (include your timezone): between 11 am and 6 pm UTC +5:30 (will give more time if required)
Synopsis
The project aims at building a tool that facilitate collaboration on worklists of articles (the articles in a single worklist share a common idea) that could be used for campaigns, in person editing events or other similar activities. The tool imports worklist using PetScan queries and allows the client to share them with other users. Every client can view a real time information about the statuses of articles (If they are being claimed by some other users and whether they're being worked on or already done).
Detailed Approach:
- Use MySQL database to store the worklists and the list of articles along with their statuses (Status being whether the article is free, claimed or completed). We will also store the user information who is working on which article.
- Use Mediawiki OAuth for authentication.
- The worklist will be associated with a PetScan query ID (which will be entered by the user one time while creating the worklist).The import API will use this ID to fetch the list of articles and dump into the database.The worklist table will also contain a ‘created_by’ column (which will be the mediawiki username) which can be later used for restricting certain actions only to the worklist creator.
- Since the PetScan results can change over time, we will be having a background scheduler (implemented using CRON job) which will call the import API at certain intervals of time to get the updated list of articles. There will be cases where some articles get missed in the new PetScan response. For the initial phase, we will simply consider the new list of articles and discard the old ones corresponding to a worklist. (The statuses of the articles will not be lost given the article ID is same). However, in future we could think of something like history of worklist by preserving the previous state as well. Additionally, we can give a refresh button on the worklist page to fetch the updated list when desired. The manual refresh can only be done by the worklist creator to avoid too much of unnecessary load on the server.
- Once the worklist is created, the link will be generated which can be shared with other users. The create API will return the newly created worklist ID and javascript will simply append that ID to the worklist detail url something like http://worklist-gsoc.org/worklist/1234' (Instead of using sequential number as ID, we can use some randomized strings later on). This link will be a webpage which displays the worklist details such as title, creator and the list of articles associated with the worklist and their current status. (These details will be fetched from the database).
- To show the latest statuses of articles to the users without having them manually refresh the page, we can use javascript polling to request the server for giving the latest information at certain intervals of time.
- For Styling, I am planning to use bootstrap CSS. I will be using python for backend. Also I will be exploring some python framework like Django or Flask during the community bonding period.
- If time permits I would be creating metrics or progress reports for the results of the worklist. The basic version could be displaying the total number of articles in a worklist and the number of articles which are successfully completed, in progress, not yet claimed. The stats can be collected by applying some GROUP BY clauses over the articles table.
UI mockups
Mentors: @Surlycyborg,@Harej
Timelines and Deliverables
April 23 - May 10
- Community bonding period.
- Design the database schemas and doing some investigation.
May 12 - May 23 (I have my end term exams so I won't be able to contribute during this period)
May 24 - June 10
- Creating the basic skeleton of the project.
- Work on creation of worklist. This includes creating the UI for entering worklist details (such as title and petscan query id) and making a create API for this.
June 11 - June 25
- Work on the worklist details page. This will fetch the list of articles along with their statuses from the database and display it.
June 26 - July 10
- Providing the feature for claiming the articles and updating their statuses.
July 11 - July 15
- Implement javascript polling to display the updated information to the users.
July 16 - July 30
- Implement cron job to refresh the list of articles in a worklist.
August 1 - August 15
- Wrapping up things done so far.
- Bug fixes and Documentation.
Participation
I will work hard on this project and bring it to completion. I will be using github to publish my source code. I will be in touch with my mentor through email, IRC. I will be giving frequent updates to my mentor and ask for help when I am stuck.
About Me
I am currently in the sophomore year of B.tech in Computer Science and Engineering at Bundelkhand Institute of Engineering and Technology, Jhansi (UP), India. I heard about this program in a campus session of open source development. Although the odd semester starts in August first week but I will be able to commit enough time for the project as there are no exams during this period.
Past Experience
I had started exploring open source from Feb 2018 and am enjoying it. I have experience in php, javascript, MySql, MATLAB, C++. I have done the following contributions to mediawiki:
T188737: https://gerrit.wikimedia.org/r/#/c/416220/ (Merged)
I have successfully completed my microtask for this project:
https://github.com/Jain-Aditya/gsoc2018-microtask
I have hosted the demo on toolforge. The link is:
https://tools.wmflabs.org/t187305-demo/