Page MenuHomePhabricator

Proposal: Tool for displaying a user contribution summary
Closed, DeclinedPublic

Description

Profile Information

Name : Yasha Singh
IRC nickname on Freenode : yasha
Github : https://github.com/yashasingh
LinkedIn: https://www.linkedin.com/in/singhyasha/
Blog: https://medium.com/@yashasingh
Resume : link
Location (country or state) : India
Typical working hours (include your timezone) : 4 pm to 3 am. India Standard Time( UTC +5.30)

Synopsis

  • Short summary describing your project and how it will benefit Wikimedia projects
    • Wikipedia evolves because of its editors who add the valuable content to it. Unfortunately our authors are unable to claim their credit for the value added to wikimedia. This project is desired to motivate wikimedia contributors by showcasing their contribution. This project will also be a public profile to attract more contributors to our organization.
    • Currently the existing tools like - xtools, guc are exhaustive and difficult to interpret by a non-wikimedian. This project will be a kind of gamification of user profile through which, users may claim their credit of the value added to wikimedia and present it to the world.
  • Mentor(s): @Tgr, @Slaporte
  • Have you contacted your mentors already? Yes, I've already contacted the mentors.

Deliverables

Describe the timeline of your work with deadlines and milestones, broken down week by week. Make sure to include time you are planning to allocate for investigation, coding, deploying, testing and documentation
Timeline

TimeTask
Nov 9 - Nov 24Community bonding period, understanding the community and it’s workflow, continuous discussion with mentor regarding parameters to be displayed for user contribution summary tool. Understanding other similar tools such as guc and xtools.
Nov 25 - Dec 2Familiarize myself with production environment, collecting all the basic dependencies for the project. Propose badges-design, page UI and getting them reviewed.
Dec 3 - Dec 9Initiating the project, installing all the dependencies in toolforge environment, setting up continuous integration (travis CI), configuring templates and static files (frontend framework- materialize). Start work on design template (UI) of the profile page
Dec 9 - Dec 20End semester examination. Developing first set of features which include list of user articles, listing pages created by the user, and presenting them in a user-friendly manner in accordance to the mockup (as of now) shared under microtask3 (link).
Dec 21 - Dec 24Getting articles section reviewed, Bug fixes, creating minimal UI for articles.
Dec 25 - Dec 30Initiate second set of features which include enhancement of profile pages UX/UI, contribution graph, it’s design and implementation. One such implementation of contribution graph was built during wikimedia data-design challenge (https://nstoler.com/wikihistory ). Since it resembles with github’s contribution graph, I plan to modify it, breaking it down by months and arranging days like in a calendar.
First Evaluation (Dec 31 - Jan 3)Completed articles section where we display user’s edited articles, featured articles and most viewed articles, basic contribution timeline ready to be populated.
Jan 4 - Jan 9Working on cache layers, deciding whatever data to be stored in browser cookies, if required/possible use CDNs, manage application cache, database cache and selecting suitable TTLs. Discussion on how to expand the tool to global wiki instead on single wiki (smallish wiki).
Jan 10 - Jan 20Start developing second set of features which include user edit count, separate-ranks values, percentile, assigning badges. I plan to cover them one by one each day and parallely getting them reviewed.
Jan 21 - Jan 25Displaying above parameters in django templates, bug fixes, updating UX/UI of profile page, and updating parameters code as per suggestions.
Jan 26 - Jan 31Focusing on UX/UI of profile page, updating templates, applying materialize framework, bug fixes.
Second Evaluation (Feb 1 - Feb 4)Completed the functionality of parameters to be displayed, populating contribution graph, cache layers implemented, UI implementation, coping up with backlogs (if any).
Feb 5 - Feb 7Developing third set of features which include providing API and implementation of O-Auth. (For APIs, I plan to use Django Rest Framework), getting each step reviewed parallely.
Feb 8 - Feb 10Initiate implementation of opt-in methods(O-Auth).
Feb 11 - Feb 13Testing APIs, bug fixes, and considering reviews. Setting up documentation using Sphinx on read the docs.
Feb 14 - Feb 25Working on dashboard similar to ‘preferences’ tab provided by wikipedia https://en.wikipedia.org/wiki/Special:Preferences. Providing check for each feature to be displayed for making it customizable.
Feb 25 - Feb 28Updating UX/UI of preferences page, getting it reviewed.
Final Evaluation (Mar 1 - Mar 5)Completed opt-in methods, UI made customizable for user, Overall evaluation, Bug-Fixes.

Timeline Overview

Before main internship period (Nov 9 to Dec 5)

  • Getting design mockups, badges and list of achievement parameters approved.
  • Initiate the project, setup required dependencies (tentatively django-web framework, flake8 for revising coding conventions, toolforge python library, materialise framework etc).
  • Setting up continuous integration service (TravisCI).
  • Study similar tools and database.
  • Since I will be having my end-semester examination, I will start implementation of articles section where we’ll display user’s edits and articles.

First set of features (Dec 5 to Dec 31, week 1-3 )

  • Displaying user edits and articles ( most viewed, featured, latest edits etc ).
  • Implementing contribution timeline graph ( will be populated later .)
  • Working on UX/UI of pages and parallely getting them reviewed.
  • Selection of badges.
  • FIRST EVALUATION (Dec 31 - jan 3)

Second set of features (Jan 4 to Jan 31, week 4-8 )

  • Setting up cache layer (managing browser cache, application cache (layers L1, L2 andL3) database cache, selecting suitable cache strategies etc ) I choose this step for discussion first since algorithm and queries to fetch the parameters such as rank would depend on this.
  • Calculating and making tool for achievement parameters- user rank, edit count, percentile etc. These achievement parameters will be finalised considering the following points- Contributor's health concern , WikiCredits, Measuring value added
  • Populating contribution graph.
  • Focusing on UX/UI of the page.
  • SECOND EVALUATION (Feb 1 - Feb 4)

Third set of features (Feb 5 to Mar 1, week 9-12 )

Miscellaneous

  • Since this tool is going to be a proof/showcase of contribution made by a user, I plan to provide a URL of type- tool.wfmlabs.org/tool_name/{user_name} which can be shared by user.
  • The sources for data collection- database layout , API link 1, link 2 and API testing, ORES for collecting information about article quality.
  • To generalise the tool for all wikis I have thought of following way- Directly use the primary language (en, ka etc) set by user under 'Internationalisation section' of profile preferences to decide primary database for fetching contribution data (This is just a proposed method I thought of).

Participation

Describe how you plan to communicate progress and ask for help, where you plan to publish your source code, etc

  • I’ll brainstorm and then discuss every feature and milestone using phabricator subtask and use phabricator to communicate my progress.
  • I will also write blogs every two weeks about the task completed and publish it on https://medium.com/@yashasingh .
  • For the purpose of help, I would communicate on phabricator and for tool related queries I would contact on IRC #wikimedia-cloud channel.
  • I would use github to publish my code. I will put my code in form of PR for the purpose of review.

About Me

Tell us about a few:

  • Your education (completed or in progress)

I am pursuing pre-final year in B.Tech (Computer Science) from JSS Academy of Technical Education, Noida.

  • How did you hear about this program?

Heard about the outreachy programme from a senior at my college, who had completed GSoC this year.

  • Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?

I will have my end semester exams tentatively from 7th to 21st december. I have mentioned this in my timeline. To cope with work in exam time, I intend to start right from november till before my exam period and work vigorously after the exam end. I’ll have regular classes from first week of february. But, since I’m taking an internship, my college will support and I’ll have sufficient time to dedicate to project.

  • What does making this project happen mean to you?

Wikimedia is the organisation, that is continuously working to provide free educational content to the world. I’m impressed with the activeness of the organization and the mentors who are quite helping. This project under wikimedia is web based, of which I’m quite familiar and will help me to contribute easily. Making this project happen will mean having contributed to the society and people who support free education.

Past Experience

Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them. Describe any open source projects you have contributed to as a user and contributor (include links). If you have already written a feature or bugfix for a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so

Open Source project

Any Other Info

I would love to contribute to the project even after the Outreachy period ends and provide help in all manner to contributors.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald TranscriptOct 3 2017, 9:18 PM
Tgr added a subscriber: Tgr.Oct 6 2017, 9:26 PM

Hii @Tgr

I had a confusion , in the outreachy application , under eligibilty section :
8(i) - Are you enrolled in school between December 5, 2017 and March 5, 2018?

Does school include university as well ? Just making sure.

Also,

Regarding point 8(v),

8(v) - Given the information you provided above, can you certify that after subtracting the credits, if any, that you will receive for Outreachy, you will take no more than half of the typical number of credits a full-time students takes at your school for at least seven weeks between December 5, 2017 and March 5, 2018?

Please explain this a little. I am unable to comprehend it precisely.

Thank you.

@Yashasingh School; meaning any educational institution you are attending, so yes university too.

@Yashasingh School; meaning any educational institution you are attending, so yes university too.

okay ma'am.

Tgr added a comment.Oct 6 2017, 10:31 PM

@Yashasingh basically the Outreachy organizers think it's not realistic to work full-time on Outreachy when you also have a more-than-half-time university course going on. So you'd have to find out what the standard number of credits are for your next semester, such as a recommended course plan, and check if the number of credits you'll take are less than half of those (not counting any credits that you get for the Outreachy project).

@Yashasingh basically the Outreachy organizers think it's not realistic to work full-time on Outreachy when you also have a more-than-half-time university course going on. So you'd have to find out what the standard number of credits are for your next semester, such as a recommended course plan, and check if the number of credits you'll take are less than half of those (not counting any credits that you get for the Outreachy project).

Okay sir, got that. Thank you!

Yashasingh updated the task description. (Show Details)Oct 17 2017, 11:58 PM
Yashasingh added a subscriber: Slaporte.
Yashasingh added a comment.EditedOct 18 2017, 12:11 AM

Hello !
@Tgr , @Slaporte

Here is my proposal draft for Outreachy. Please review and provide suggestible edits and improvements.

Tgr added a comment.Oct 19 2017, 11:10 PM

Regarding the timeline: almost all the work here is in "Implementing toolforge tool for above achievement parameters." and "writing code for making UI user customizable and allow selection feature". These are going to be a lot more work (and somewhat less predictable) than e.g. adding caching. They need more time and ideally should be broken into smaller pieces (although if customizability is a stretch goal then it's fine not to spend too much effort on planning it). Granted the first is sort of broken up already, with a separate devising/brainstorming period, but generally thinking about something for a week and then doing it for a week is not that effective - often you realize that something is not going to work as intended while doing it. So I'd break it up with more focus on the functionality then the "work phase" instead: spend some time on mapping the possiblities (starting with a week of planning makes sense, although I would call it research rather than brainstorming, it will mostly involve looking at code and suggestions other people have written in the past), based on that determine a list of features / information types, put them into three buckets, then implement bucket 1 on week 1, and so on.

This is an interesting project, but since I'm not participating directly, I'm removing my project. I'll stay subscribed, though, and I may be able to help with questions about editing-related data.

Also, @Yashasingh, are you aware of Aaron Halfaker's conceptual work on Wikicredit and measuring value added? He's done a lot of thinking about how to measure and attribute productive contributions; some of the metrics he's worked with may be too elaborate for the time you have, but even then they might be thought-provoking.

@Neil_P._Quinn_WMF The suggestions are highly useful ! Thank you. I'll consider them while designing my tool.

@Neil_P._Quinn_WMF The suggestions are highly useful ! Thank you. I'll consider them while designing my tool.

You're very welcome! And, by the way, welcome to the Wikimedia community. It's nice to have you :)

Yashasingh renamed this task from Tool for displaying a user contribution summary to Proposal: Tool for displaying a user contribution summary.Oct 21 2017, 10:17 AM
Yashasingh updated the task description. (Show Details)

Regarding the timeline: almost all the work here is in "Implementing toolforge tool for above achievement parameters." and "writing code for making UI user customizable and allow selection feature". These are going to be a lot more work (and somewhat less predictable) than e.g. adding caching. They need more time and ideally should be broken into smaller pieces (although if customizability is a stretch goal then it's fine not to spend too much effort on planning it). Granted the first is sort of broken up already, with a separate devising/brainstorming period, but generally thinking about something for a week and then doing it for a week is not that effective - often you realize that something is not going to work as intended while doing it. So I'd break it up with more focus on the functionality then the "work phase" instead: spend some time on mapping the possiblities (starting with a week of planning makes sense, although I would call it research rather than brainstorming, it will mostly involve looking at code and suggestions other people have written in the past), based on that determine a list of features / information types, put them into three buckets, then implement bucket 1 on week 1, and so on.

@Tgr
Thank you for reviewing my application. I've updated the timeline and divided the features into three sections. I hope the entire timeline will be more effective now and much more practical .
Please review.

Tgr added a comment.Oct 22 2017, 8:22 PM

I would swap the research into existing tools and proposing a design: you need to develop a good understanding of the problem domain before knowing what you want to design. You might even want to start with a minimal design and put most of the design work into the second phase of the project, when you already have a good idea of what kind of information you can collect/display.

The API and OAuth integration should be pretty simple (1-2 days each) - readonly APIs tend to be easy, and OAuth is mostly just picking the right library. The configuration menu OTOH will probably end up being something much more complex than a list of checkboxes. So I'd optimize phase III time for that.

Other than that, looks good.

Yashasingh updated the task description. (Show Details)Oct 22 2017, 8:37 PM
Yashasingh updated the task description. (Show Details)Oct 22 2017, 9:13 PM
Yashasingh updated the task description. (Show Details)Oct 22 2017, 9:55 PM

@Tgr
Thank you very much sir for your comments.

I would swap the research into existing tools and proposing a design: you need to develop a good understanding of the problem domain before knowing what you want to design. You might even want to start with a minimal design and put most of the design work into the second phase of the project, when you already have a good idea of what kind of information you can collect/display.

True sir. I've have now swapped the proposal of design mockups with study of existing tools, so that first I may better understand the scope of problem and go on to implement minimal UI, in my first phase.

The API and OAuth integration should be pretty simple (1-2 days each) - readonly APIs tend to be easy, and OAuth is mostly just picking the right library. The configuration menu OTOH will probably end up being something much more complex than a list of checkboxes. So I'd optimize phase III time for that.

I've optimised the phase III time as per your comments.

Also, I've added a Timeline Overview just after the timeline section where it lists all the features in different phases and all my approaches.
Please review.
Thank you.

Tgr added a comment.Oct 23 2017, 1:23 AM

Thanks! Looks OK to me.

Thanks! Looks OK to me.

Alright Sir. Thank you. :)

@Tgr

Sir,
As a suggestible Microtask 4, I have developed a tool which provides edit quality and article quality analysis of last 5 edits made by user in English-Wiki using ORES API.

Tool link- link
PR:- link

Please review.
Thank you.

Yashasingh updated the task description. (Show Details)Oct 31 2017, 7:44 PM

@Tgr

I have made the required changes in Microtask 4 (github).
Please review.

Thank you.

@Tgr

Sir,
I have created a new tool (suggestible microtask 5) which shows the viewcount of last five edits made by user in current year.
Please review.
Tool - link
Code - link
Thank you.

Tgr added a comment.Nov 9 2017, 2:54 AM

Hi Yasha,

I'll look at it, but as I said in T174528#3728973 the selection is already over; these microtasks were meant as a selection mechanism (since for real tasks multiple people couldn't work on the same thing, and having the same task for everyone made comparisons easy). If you want to work something for practice or getting familiar with the environment, it would be much better to find a real task (e.g. for existing Toolserver tools). I'm not sure what's a good way of finding an entry-level task, but the fine people at #wikimedia-cloud or #wikimedia-devrel can probably help.

Hi Yasha,

I'll look at it, but as I said in T174528#3728973 the selection is already over; these microtasks were meant as a selection mechanism (since for real tasks multiple people couldn't work on the same thing, and having the same task for everyone made comparisons easy). If you want to work something for practice or getting familiar with the environment, it would be much better to find a real task (e.g. for existing Toolserver tools). I'm not sure what's a good way of finding an entry-level task, but the fine people at #wikimedia-cloud or #wikimedia-devrel can probably help.

Thank you @Tgr for your review and this information. I'll try taking up the real tasks and continue.

Tgr closed this task as Declined.Nov 11 2017, 8:02 PM

Thanks for participating in Outreachy! Unfortunately this proposal wasn't selected.