Page MenuHomePhabricator

Proposal: Develop a tool for displaying a user contribution summary
Closed, DeclinedPublic

Description

Profile Information

Name: Sagorika Das
IRC nickname on Freenode: sagorika1996
Github Profile: https://github.com/sagorika1996
LinkedIn Profile: https://www.linkedin.com/in/sagorikadas/
Web Profile: https://sagorika1996.github.io/resume/
Resume (optional): Link
Blog Profile: https://medium.com/@sagorika1996
Location (country or state): New Delhi, India
Typical working hours (include your timezone): 12:00 - 03:00 (UTC+5:30)

Synopsis

Short summary describing your project and how it will benefit Wikimedia projects
A collection of records that reflect your accomplishments, experiences, attributes and highlights samples of some of your best work provides tangible proof of your skills and abilities. It also motivates you to expand on your skills, knowledge, projects and experiences.

Therefore creating a tool to summarize the contributions made by a user would be a step in the right direction to encourage more users to participate in Wikipedia projects.

Due to the highly collaborative nature of Wikipedia, the value of one's participation is hard to measure for an outsider and it's very hard for contributors to take credit for the value added to Wikipedia.

Some of the key objectives of the project are:

  1. Showcase contribution as a proof of editor's skill and dedication.
  2. Summarize the data in a manner which is understandable for someone not familiar with Wikipedia contributions.
  3. Requiring opt-in from the user before making their data public and providing the user with the ability to customize the information presented about them. This is to avoid people getting negatively affected because of the way information is presented about about them.
  4. User Interface should be apt for professional purposes.

Possible Mentor(s):
@Tgr, @Slaporte

Have you contacted your mentors already?
Yes

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

NOTE: The list of features will be broken down into 4 parts. Each part is allocated two weeks time and developed in the following phases:
  1. Analyze the features and work on the design and representation of the features. Discuss with the mentors about the same. Research and resolve the working of the backend i.e figure out how the data will be collected (API, database, ORES) and presented (handling the case when data collection is slow).
  2. Backend and frontend implementation
  3. Testing
  4. Documentation
  5. Making revisions based on feedback.

Detailed timeline:

  • Nov 09 - Nov 23
    • Community Bonding Period.
    • Detailed discussion with mentors regarding project sub tasks and milestones.
    • Increasing project understanding.
    • Learning about the community and their expectations about the tool.
    • Learn about existing similar tools (eg: xtools) and ideas.
    • Improve knowledge about the technologies and environment that is going to be used for the production of the tool.
  • Nov 23 - Dec 07
    • Community Bonding continues.
    • Familiarize myself with the MediaWiki API and database layouts.
    • Come up with various features that could be included in the tool. Discussion with mentors about the same.
    • Working on the design of the selected features for the UI.
    • Defining the scope for the project.
    • Community bonding period report.
  • Dec 07 - Dec 14 (Week 1)
    • Bootstrapping the project.
    • Setting up the project: Choosing frameworks for backend and frontend, setting up the development environment and the continuous integration.
  • Dec 14 - Dec 28 (Week 2, 3)
    • Features: contribution calendar/graph, user profile overview, badges.
    • Implement the backend (data collection and presentation): types of badges and retrieval of the required data, retrieval of data for contribution calendar/graph.
    • Work on the frontend design and representation of badges, user profile, contribution graph.
  • Dec 28 - Jan 11 (Week 4, 5)
    • Features: pinned articles, top X percentile in Y category tag, contribution list with filters.
    • Implement the backend (data collection and presentation): customization of the pinned articles, collection of data for percentile tag, extraction of contribution list, types of filters.
    • Work on the frontend design and representation of the selected features.
  • Jan 11 - Jan 18 (Week 6)
    • Complete pending reviews
    • Testing and making revisions based on feedback.
    • Bug fixes
    • Code cleanup
    • Reviewing and improving documentations.
  • Jan 18 - Jan 20 (Mid term evaluation)
    • Get the initial working prototype ready.
    • Midterm self evaluation report.
    • Feedback from mentors on the progress
  • Jan 20 - Feb 01 (Week 7, 8)
    • Features: timeline of events to showcase in detail every important event in a chronological manner.
    • Implement the backend (data collection and presentation): research about various attributes, select and extract important attributes that needs to be represented in the timeline.
    • Work on the frontend design and representation of the timeline.
  • Feb 01 - Feb 08 (Week 9)
    • Provide API for the tool so that other tools can fetch and use the data.
    • Providing documentation for the APIs
    • Testing the APIs.
    • Implement OAuth
  • Feb 08 - Feb 22 (Week 10, 11)
    • Add functionality of letting the user customize the user profile and how the contributions are presented.
    • Provide with an UI similar to a settings page, where all the configurations of the tool are available to adjust.
    • Add rating feature: Define an algorithm to calculate a user's rating taking into account factors such as edit count, pages created, top editor of featured article and more.
  • Feb 22 - March 01 (Week 12)
    • Final testing and making revisions based on feedback.
    • Complete pending reviews
    • Bug fixes
    • Code cleanup
    • Complete documentation
  • March 01 - March 05
    • Wrapping up the project.
    • Final evaluation: Self evaluation and final feedback from mentors.
  • After Internship
    • After internship I will continue contributing to Wikimedia projects.

Milestones:

Dec 28: Week 3

  • Ramp up to technologies and frameworks, setup development environment.
  • Implemented contribution calendar/graph, user profile overview, badges.

Jan 18: Week 6

  • Added pinned articles, top X percentile in Y category tag, contribution list with filters to the tool
  • Initial working prototype is ready

Feb 08: Week 9

  • Implemented the contribution timeline
  • Provided APIs and opt-in feature

March 01: Week 12

  • Added functionality of letting the user customize the user profile, settings page, rating feature.
  • Final product is ready

Participation

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

  • I'll use Phabricator to manage the sub-tasks and also to communicate the progress by discussing the issues and getting feedback on them.
  • I'll be active on IRC and Slack during my work hours. I'll also be available on Gmail for sharing work status and related documents.
  • I plan to publish source code on GitHub and get feedback on the same.
  • I also plan to publish weekly reports about my progress.
  • I plan to have a one-on-one each week with my mentors discussing status of the tasks

About Me

Your education (completed or in progress)
I am in my fourth year of my undergrad majoring in Computer Science from Netaji Subhas Institute of Technology, Delhi. I am passionate about technology and for me, the most attractive aspect of technology is problem solving. Problem solving is a challenge I have always loved – from completing puzzles at home through to programming at university.

How did you hear about this program?
I got to know about the Outreachy program through a friend, who participated in round 13.

Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
For the first 7 weeks of the internship period, I'll have my semester break and will not be enrolled in any course at my school, therefore will be able to work full-time. From fourth week of January, my college will reopen (eight semester).
Academic Calendar: Odd Semester, Even Semester

What does making this project happen mean to you?
As I was browsing through the available project list, I got interested in this project. Wikipedia, a self-governing system that creates positive externalities. Contributing to Wikipedia is educational and it gives a sense of being part of an exciting development. It is used by millions of people around the world and I think it would be great to work on a project which has the potential to increase user contribution and make Wikipedia even better.
For the past three years I have been an active member of Computer Society of India, NSIT where my work aimed at providing free knowledge and resources to students. I have conducted numerous programming(data structures and algorithms) workshops and classes. Wikimedia can be held up as one of the best examples of a free content project, and it would be a privilege working for it.
More than anything else, I see this as an amazing learning opportunity. I am relatively new to open source but I believe that it's possibly the best way to increase one's knowledge in a particular technology. I enjoyed doing the micro-tasks and that is why I decided to take this project up.

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

Work Experience

  • SWE Internship at Google Bangalore: The project undertaken during the internship was to design and implement Onepick Nextgen Youtube Picker from scratch which improved the existing video picking experience by providing for search query autocomplete, material and responsive UI(mobile webview, sidebar and dialog compatible), simplified API, video previews and play functionalities. Some of the technologies that I worked with were JavaScript, Java, Soy, Closure, Guice, Youtube API. It taught me how to work and find my way in a large codebase. Something which I found particularly amazing was code review. My code would get reviewed by at least 3-4 people which not only improved my dev skills but also the code quality in general. I had much independance of the design choices and solutions to take and I enjoyed that.
  • Researcher at Netaji Subhas Institute of Technology: The project aimed at detecting various formats of tables in document images of different layouts and extraction of the tables' structural and textual contents. Technologies used to implement the project are Python, Tesseract open source engine. This was my first experience in doing a project in the research field and it exposed me to the field of Computer Vision. This taught me how to abide by the principles of working in a research environment, ask the right kind of questions, and deal with seemingly insurmountable problems that had no obvious solutions.

Other projects

  • Dynamic Gesture Recognition: The project uses a cross of Computer Vision and Machine Learning algorithms to recognize hand gestures in the wild. This is my first project in the field of Machine Learning. I started learning and understanding various concepts and algorithms of ML. The project helped me to apply the various ML concepts that I learnt in theory to practice. It taught me how to implement a model and tune its parameters. I learnt that research, feature engineering, and training process adjustment can sometimes be more art than exact science. There are lots of neat techniques that I applied to get the perfect model for the problem. Link: https://github.com/sagorika1996/Dynamic-Gesture-Recognition
  • Taxi service Management System: The project is an online Taxi Service website providing transport to people in the city. There are two interface to this web app. The administration interface where the admin can view and update all records. The project is designed using MySql, PHP, JavaScript and Bootstrap. Through this project I learned how to implement various concepts of database systems. Also I got hands on practice of converting ER diagram to schema diagram. Link: https://github.com/sagorika1996/RnR-Taxi-Service
  • I started off with coding in my first year of college and I think the best way to learn a language is to implement a mini-project. While learning Java and C, I built the following projects:
    1. Text Editor Java Applet: A java graphics based applet that facilitates editing plain text files. Link: https://github.com/sagorika1996/JEditor
    2. Bank management System: A Management System which keeps record of bank accounts and lets users place orders. It is based on the concept of file handling. Link: https://github.com/sagorika1996/Bank-Management-System

Open Source contributions

I have been a FOSS user for several years now. I always wanted to give back to the OS community and this year I had my first PR merged.
https://github.com/devtools-html/debugger.html/pull/3608

debugger.html is a hack-able debugger for modern times, built from the ground up using React and Redux. I made some more contributions to debugger.html:
https://github.com/devtools-html/debugger.html/pulls?utf8=%E2%9C%93&q=author%3Asagorika1996%20is%3Aclosed

It was a great experience to be a first time contributor, I got to learn lot of new things. It was also nice to see how people from different parts of the world come together to work remotely. Due to my contributions, I got a mention here: http://firefox-dev.tools/debugger.html/docs/updates/updates-8-15-2017.html

Micro-tasks Completed:

microtask 1: Created a tool which takes in the username and displays the recent English Wikipedia edits of that user. In this task, I have fetched the data via API calls to MediaWiki database.
Links:
https://github.com/sagorika1996/useredits-tool-review/pull/1
https://tools.wmflabs.org/outreachy-useredits/

microtask 2: Created a tool which takes in the username and shows the rank of the user if ordered by the number of edits made in Bulgarian Wikipedia. In this task, sql queries are used to fetch the desired data.
Links:z
https://github.com/sagorika1996/userrank-tool/pull/1
https://tools.wmflabs.org/outreachy-userrank/

microtask 3: Designed a simple mockup for the summary tool and also I have been brainstorming about various parameters that can be included in the tool.
Links:
https://github.com/sagorika1996/outreachy-mockup

microtask 4: A tool to display the count of featured articles where the user is among the top 10 editors. Count of featured articles for editors is maintained and stored in a file. When the user enters the username, we search the userid in the file and display the corresponding result. If the userid doesn't exists, then count is shown as zero.
Links:
https://github.com/sagorika1996/summaryTool-task/pull/1
https://tools.wmflabs.org/outreachy-sagorika1996/

Any Other Info

Add any other relevant information such as UI mockups, references to related projects, a link to your proof of concept code, etc
I will be ready to work full time from the day Internship period begins (Dec 5th) for at least 40 hours a week throughout the week. Also I would like to create a blog about the whole project.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald TranscriptOct 3 2017, 9:36 PM

@Sagorika1996: Hi, is this a Outreachy (Round-15) proposal? If so, please add that project tag via the Add Action...Change Project Tags... dropdown.
Also, please use Edit Task to edit/add missing information in the task summary. Thanks!

Tgr added a subscriber: Tgr.Oct 6 2017, 9:27 PM

Hi @Tgr!

I have started working on my proposal and will post it for review by next week. Also I thought of another microtask - create a tool which takes in the username and displays the number of featured articles in which the user is among the top 5% editors. It could later be extended and used to implement a badge or a rating for the core project. What are your thoughts on this? Shall I go ahead with this task?

Sagorika1996 updated the task description. (Show Details)Oct 13 2017, 8:18 PM
Sagorika1996 added a subscriber: Slaporte.
Sagorika1996 updated the task description. (Show Details)Oct 13 2017, 8:24 PM
Sagorika1996 updated the task description. (Show Details)EditedOct 13 2017, 8:37 PM

Hi @Tgr, @Slaporte !

This is the initial draft of my proposal and I would appreciate some feedback. What do you think of the timeline?
All suggestions are welcomed.

Sagorika1996 updated the task description. (Show Details)Oct 13 2017, 8:42 PM
Sagorika1996 updated the task description. (Show Details)Oct 17 2017, 6:17 AM
Sagorika1996 added a comment.EditedOct 17 2017, 11:38 AM

I have completed this micro-task.

Hi @Tgr!

I have started working on my proposal and will post it for review by next week. Also I thought of another microtask - create a tool which takes in the username and displays the number of featured articles in which the user is among the top 5% editors. It could later be extended and used to implement a badge or a rating for the core project. What are your thoughts on this? Shall I go ahead with this task?

Tool description
Link to Tool: Tool
Link to Code: PR

@Sagorika1996

About your response to the following question:

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

From second week of January, I'll have my college (last semester). A full time student has to take 27 credits but since I'll be taking up an internship, I have to take only 12 credits therefore I can dedicate enough time for the project.

"Enough time" does not help convey that for how long you will be away or busy with your college during the internship period. As pointed out by Outreachy organizers, could you clarify more in your proposal that "You will not be in school full-time for at least seven consecutive weeks between December 5, 2017 and March 5, 2018? School weeks include all weeks during a school semester and during an exams session, including short breaks and weekends. Full-time school means being enrolled in school during a semester when you are taking more than half of the credits a typical student takes" (quoting from email shared by Outreachy).

Thanks!

@Sagorika1996 Ignore my previous comment for now, I've contacted Outreachy organizers about the eligibility criteria and hoping to get some information for you by tomorrow!

srishakatux renamed this task from Develop a tool for displaying a user contribution summary to Proposal: Develop a tool for displaying a user contribution summary.Oct 18 2017, 6:23 AM

Hi @srishakatux!

After checking from last year's academic calendar, college starts from the fourth week of January for eight semester and not the second week. So for the first 7 weeks (5th Dec onwards) of the internship program I'll not have any other commitments and will be able to work full time.

Sagorika1996 updated the task description. (Show Details)Oct 18 2017, 7:15 AM
Sagorika1996 updated the task description. (Show Details)Oct 19 2017, 4:30 PM
Sagorika1996 updated the task description. (Show Details)Oct 19 2017, 9:59 PM

@Sagorika1996 Okay! that sounds good to me! :) Rest, leaving the discussion up to you and @Tgr. thanks!

Is this expected to be a private tool (only showing your own contributions) or a public one (you can view the contributions of any user)?

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

Some of the key objectives of the project are:

  1. Showcase contribution as a proof of editor's skill and dedication.
  2. Summarize the data in a manner which is understandable for someone not familiar with Wikipedia contributions.
  3. Provide a mechanism to reward participants for their work and decrease the feeling of discouragement.
  4. Setting some goals and specific tasks for participants as it can lead to increase in participation.

#1 and #2 are central goals of the project. #4 is a very different thing from presenting what the user has already done, and IMO unrealistic to fit into the same three-month project. (If you are interested, there is past research and an ongoing engineering project about it.) I'm not sure how to interpret #3. Do you mean that, by doing #1 and #2 we will reward participants? In that case it shouldn't be a goal of its own. Or do you have specific features in mind that would serve this goal?

One additional goal that I think is important is to avoid accidentally dicouraging people (for example by summarizing their participation in a way that they dislike, or highlighting parts of it that are embarrassing). A simple way of achieving that is to require opt-in from the user before making their data public; there might be other ways.

Another thing that's worth stressing IMO is that this is aimed at professional environments (your boss, your university professor etc). This is relevant both for design (you might want to use a CV-like structure for example) and for functionality (you might want to heavily filter things; if the user works as a mathematician, allow them to configure the tool to only show data about their edits in articles that are mathematics-related).

The project can be divided into following phases:

  1. Increase my understanding and knowledge about the project. Establish and analyze various features that can be added to the tool after discussing it with mentors.
  2. Since the main motive of the tool is to showcase contributions in a easy-to-understand format, design plays a crucial role. In this phase, I'll work on the designs and discuss them with the mentors. I'll also try and get them approved.
  3. Implementation.
  4. Testing
  5. Documentation
  6. Making revisions based on feedback.
  7. Stretch Goals

We prefer agile methodology over waterfall; this image hopefully explains the difference. So the phases should be feature/functionality goals, with you doing design, implementation, testing, documentation and incorporation of feedback each week.

Detailed timeline:

  • As said above, I think it would be better to have one or more specific feature/functionality goal for each week. Testing, desing etc. can happen countinuously along the way. Also, the best way of learning a technology is using it - IMO it's better to leave two weeks for a task than to have separate "learn about X" and "do X" goals.
  • Leave some time for setting up the project. This involves choosing a framework (on the long run probably more effective than writing fully handcrafted code), choosing your tools, setting up your development environment, setting up continuous integration. Unless you already have a set of tools you are familiar with, and want to use those, I'd expect this to take a couple days at least.
  • You should probably leave the last 2-3 weeks as stretch goals / overrun just so that it is easier to recover from delays.

I realize coming up a timeline when you are new to a project is pretty hard. It might help to split things into high-level areas and think how that areas can be further broken down to goals, then assings a few goals to each week. For example you might start with something like this:

  • learning (about the community and their expectations, about existing similar tools, about existing similar ideas (by searching Google, Phabricator, the wikis)
  • environment (technologies / tools you plan to use - you might want to read some high-level best practices document such as PHP The Right Way or best practices for extensions (even though you are not writing a MediaWiki extension, some of the advice there is pretty generic)
  • data collection (what information sources are there, that can help you explain the user's contributions, and how do you collect data from them? some pointers: the query API, the database, ORES)
  • data presentation (how will the site interact sith the reader? If data collection is slow enough that it can't happen real time (probably), how will you handle that?)
  • configuration (how will the site interact with the owner of the account that's being viewed? What functionality is needed for managing that?)
Sagorika1996 updated the task description. (Show Details)Oct 21 2017, 8:55 AM

@Tgr thank you so much for your detailed feedback! As per your suggestions, I have made the required changes. I hope to have your feedback on this as well.

#1 and #2 are central goals of the project. #4 is a very different thing from presenting what the user has already done, and IMO unrealistic to fit into the same three-month project. (If you are interested, there is past research and an ongoing engineering project about it.) I'm not sure how to interpret #3. Do you mean that, by doing #1 and #2 we will reward participants? In that case it shouldn't be a goal of its own. Or do you have specific features in mind that would serve this goal?

Well #3 and #4 were specifically for the features badges and rating. Badges/Rating would be a way to reward participants for their work. And similarly we could specify some tasks which is required to get those badges or increase one's rating. Although I agree with you, setting up specific tasks/goals wouldn't fit in this 3 month project.

Another thing that's worth stressing IMO is that this is aimed at professional environments (your boss, your university professor etc). This is relevant both for design (you might want to use a CV-like structure for example) and for functionality (you might want to heavily filter things; if the user works as a mathematician, allow them to configure the tool to only show data about their edits in articles that are mathematics-related).

Now that I think about it, badges/rating would be rather difficult to implement (Wikicredit, Article Importance) since this tool will be used for professional purposes and we would want the badges/ratings to be accurate and precise depiction of one's contribution.

Hi @Platonides! This is supposed to be a public tool where you can view the contributions of any user, but as pointed out by @Tgr we don't want people to get negatively affected by how information is presented about them. Therefore we'll provide some sort of opt-in for making the data public.

Sagorika1996 updated the task description. (Show Details)Oct 21 2017, 9:55 PM

Thanks fo the answer, @Sagorika1996!

Sagorika1996 updated the task description. (Show Details)Oct 22 2017, 1:26 PM
Tgr added a comment.Oct 23 2017, 1:49 AM

Now that I think about it, badges/rating would be rather difficult to implement (Wikicredit, Article Importance) since this tool will be used for professional purposes and we would want the badges/ratings to be accurate and precise depiction of one's contribution.

Writing something that's both easy to understand and captures an editor's own understanding of their accomplishments is a quite hard task; I don't think it's realistic to expect to get it done in three months. This is mostly an exploratory project, to see if it's possible to come up with something that's good enough to be interesting, and justifies further investment. So using simplistic approximations to measure the degree of authorship or article importance is OK, IMO.


  1. Avoid the feeling of discouragement by taking opt-in from the user before making their data public and providing the user with the ability to customize the information presented about them.

Could you rephrase this? I think it's pretty hard to understand what the feeling of discouragement refers to here.


  • there is some glitch with the week numbers; I think it should be Jan 25 - Feb 08 (Week 8, 9), then week 10, 11, then week 12.
  • Configuration of the tool doesn't really explain why that takes two weeks. I assume that refers to letting the owner customize how their contributions are presented; that could be described more clearly.
  • OAuth needs to come before customization (otherwise how do you identify the owner?). The caching layer might be necessary way earlier (I don't think it's worth calling out in a separate bullet point, it's part of writing the data collection backend). Caching, OAuth and the API are all pretty simple things, they probably don't take two weeks. You might use some of the time at the end to do user testing / getting feedback (ideally that should happen continuously before/during development, but realistically in a one-person project it probably won't).

@Tgr thanks for your comments! I have made the required changes.

Sagorika1996 updated the task description. (Show Details)Oct 23 2017, 7:10 PM

@Tgr

I have made some changes in the design mockup micro-task. Please have a look at it.
https://github.com/sagorika1996/outreachy-mockup/blob/master/README.md

Thanks.

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

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