Page MenuHomePhabricator

GSoC Proposal: Develop a tool for use by event organizers to track developer activity
Closed, DeclinedPublic

Description

Profile Information

Name: Aditya Jain
IRC nickname on Freenode: AdityaJ
Gmail ID: adi2007jain@gmail.com
GitHub profile: https://github.com/Jain-Aditya
Location: India
Typical working hours: Between 11 am and 6 pm UTC +5:30 (Will give more time if required)

Synopsis

Short summary describing your project and how it will benefit Wikimedia projects

There are many volunteers around the world who contribute to Wikimedia projects. This project is about developing a tool that gives a sneek peek into a developer’s contributions on Wikimedia platforms: Gerrit and Phabricator. There is already a tool called AWMD stats tool that generates monthly statistics of technical contributors to Wikimedia projects from Africa. Our project will seek inspiration from this tool but it will not only be limited to African Wikimedia community, instead it will generate statistics of all the Wikimedians around the globe.

Possible Mentor(s)

@srishakatux, @D3r1ck01, @Tuxology, @samuelguebo

Have you contacted your mentors already?

Yes

Deliverables

After the completion of internship, a new tool will be available which can provide statistics of developers’ contributions for the specified time window. This new tool will have the following workflow:

  • There will be an option to upload a csv file which will have gerrit/github/phabricator user names. Along with this, the time frame can be chosen for which we want to see the statistics.
  • After uploading the csv and choosing time frame, an API will be invoked which will parse the csv to extract usernames and then query gerrit/phabricator API to get appropriate statistics. More details about the backend part is provided in the “Detailed Implementation” section.
  • Render list and graphical view which will represent statistics of developer’s contributions and phabricator activities (fetched from their respective APIs) along with the ability to sort the data.
  • Each user will have a hyperlink which will lead to a detailed statistics view of that user (this includes displaying the past few patches along with their statuses).
  • The user of the tool will be able to export data in CSV or any other relevant formats.

I will be using Python and Flask framework for building this tool. For the initial phase, we will be collecting developer contributions from gerrit API only.

If time permits, I will work on the following things:

  1. Explore the integration with github API.
  2. Explore other formats for uploading data like excel and providing text field for entering comma separated values.

Detailed Implementation

For rendering charts, I am planning to use a javascript library (probably chart JS). I will be exploring both of them in the community bonding period. I’ll go with the one which is more active in terms of development and is well documented.

Format of CSV which needs to be uploaded:

NameGerrit username Phabricator usernameGithub username
Aditya JainAdityaJAdityaJJain-Aditya
Sam WaltonSamwalton9Samwalton9Samwalton9
Srishti Sethisrishakatuxsrishakatuxsrishti

Components to be built in the backend:

  1. CSV parser: I will be using ‘csv’ library in Python to read the csv file and collect gerrit and phabricator usernames.
  2. Collecting developer statistics: This component will take the list of usernames and time window. The script will call https://gerrit.wikimedia.org/r/changes/ API as done in the microtask 1 and will return number of patches merged on gerrit. The result will be sorted in decreasing order of number of merged patches.
  3. Collecting phabricator statistics: This component will take the list of usernames and time window. It will internally call Conduit APIs to generate statistics. This will be something similar to what we did in microtask 2.

The API which will be invoked from UI (after uploading CSV) will make use of the above three components and return the data in appropriate JSON format which can then be used by the javascript library to render charts and tables. To develop the web page, I will be using HTML along with Bootstrap for styling purpose.

Exporting statistics data:
This will be implemented completely on javascript side given that the entire data will be available when the user is visualizing graphs.

Individual user statistics page:
An API will be created which takes in gerrit and phabricator id and returns the detailed statistics which will be rendered on UI.

Timelines

May 7 - May 14

  • Community bonding period
  • Explore javascript libraries and finalize which one to use
  • Study already existing AWMD tool

May 15 - May 22

  • Initial project setup (using flask framework)
  • Refining the proposed Mockups and finalize the design.
  • Setup environment on Toolforge

May 23 - June 7

  • Start working on the UI - Build a homepage which provides option to upload CSV file and option to choose date range by providing calendar.

June 8 - June 22

  • Build component to read CSV file
  • Build component to fetch gerrit data
  • Build component to fetch phabricator data

June 23 - July 7

  • Build the API which will be used by UI home page (This will make use of all three backend components)
  • Integrate homepage with the API and render appropriate charts/tables
  • Gather feedback from the users by announcing the features on mailing lists

July 8 - July 15

  • Implement the detailed user statistics page (This includes creating the API for getting statistics for a particular user and building the UI).

July 16 - July 30

  • Build feature for exporting the results as CSV

August 1 - August 26

  • Documentation and bug fixes
  • Move the github repository to gerrit
  • I will also utilize this time to implement any additional features (which are feasible within the given time) and filing them which are suggested by the users as the feedback.

Participation

  • For sharing status and discussing ideas, I will be using phabricator. I will be active on Zulip and gmail during my working hours.
  • I will be writing blog for sharing my experience and progress on this project. I plan to do it after every evaluation.

About Me

Your education

I am a third year Computer Science undergraduate student at Bundelkhand Institute of Engineering and Technology, Jhansi (India).

How did you hear about this program?

I heard about this program in a campus session regarding open source development.

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

I will be completely free till mid-July. After that my college will start but I will still be able to give 7-8 hours on weekends and 3-4 hours on weekdays as there wouldn’t be any exams during that period.

We advise all candidates eligible for Google Summer of Code and Outreachy to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?

I am only applying for Google Summer of Code with Wikimedia organization.

What does making this project happen mean to you?

I am passionate about problem solving and software development. I have been using Wikipedia since childhood and it always helped me in understanding complex things and has proven to be the best resources among others available on the Internet. What wikipedia today is just because of its community. Building this tool will definitely help Wikimedia community to grow more and this feeling motivates me more towards its development. Also, till now I haven’t worked on any project that would impact millions of people. This project gives me that opportunity and, at the same time, challenges me to learn and grow.

Past Experience

I have been learning Software Development and Algorithms since my freshman year and I am enjoying it so far. I have mostly worked on Python, Django, Flask, MySQL, Postgres, Javascript, Heroku.
Following are some of my personal projects:

  • Discussion-Forum: A django application that uses MySQL database. It allows admin to create categories for which user may start any discussion. Also other users can post comments on that discussion. The link to the repo is: https://github.com/Jain-Aditya/DiscussionForum
  • Book-Review app: A flask application that allows logged-in users to search for books by their author name or by ISBN number. I have used Postgres database for this application which is hosted on Heroku. This application fetches the book ratings and reviews from the API provided by goodreads. The link to the repo is: https://github.com/Jain-Aditya/Book-Review

Contributions to Wikimedia

I have been exploring Wikimedia projects since January 2018. So far I have explored and fixed some bugs of Pywikibot, Worklist tool, Library-Card-Platform and Hashtags.

Microtasks Completed

  1. Microtask 1: https://github.com/Jain-Aditya/GSoC-Microtask-1
  2. Microtask 2: https://github.com/Jain-Aditya/GSoC-Microtask-2
  3. Microtask 3: Mockups have been added in this microtask.



Event Timeline

AdityaJ created this task.Apr 2 2019, 4:56 PM
Restricted Application added subscribers: Sadads, Aklapper. · View Herald TranscriptApr 2 2019, 4:57 PM
AdityaJ updated the task description. (Show Details)Apr 2 2019, 4:59 PM
AdityaJ updated the task description. (Show Details)Apr 2 2019, 5:05 PM

Hi @AdityaJ Thanks for writing this proposal. I just have a few comments:

  • In the deliverables, you have mentioned CSV as the only option to upload user data. It might be good to explore other formats to search users using this tool, and as such could be worth mentioning.
  • Between May 7 and June 7 (and before you propose to finish a initial UI implementation), it may be nice to actually think the UX through. I suggest some time can be allocated for initial UX research as well.

Hi, Thanks for the review!

you have mentioned CSV as the only option to upload user data. It might be good to explore other formats to search users using this tool, and as such could be worth mentioning.

I am thinking to first start with CSV as the only option. If time permits, I will explore other formats like excel and providing text field to enter comma separated values.

  • Between May 7 and June 7 (and before you propose to finish a initial UI implementation), it may be nice to actually think the UX through. I suggest some time can be allocated for initial UX research as well.

Yeah, that makes sense.

I will update the proposal considering both the points.

AdityaJ updated the task description. (Show Details)Apr 6 2019, 6:24 AM
AdityaJ updated the task description. (Show Details)Apr 7 2019, 3:58 PM
AdityaJ updated the task description. (Show Details)Apr 8 2019, 12:54 PM
AdityaJ updated the task description. (Show Details)Apr 9 2019, 5:15 AM

(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