Page MenuHomePhabricator

Develop a tool for use by event organizers to track developer activity
Open, Needs TriagePublic

Description

Background information

Wikimedia uses Bitergia's analytics tool for the technical community metrics. This tool provides useful information and is convenient for community managers who are familiar with its every know-how. However, this tool is cumbersome to use for others (e.g., sponsorship committee reviewers, event organizers, etc.) as it requires too many steps to obtain statistics for a topic and there is a bit of learning curve to get comfortable with the tool.

AWMD stats tool generates monthly statistics of technical contributors to Wikimedia projects from Africa. Seeking inspiration from this tool, the goal of this project is to design and develop a proof of concept that demonstrates what an extended version of AWMD tool for use by others in the Wikimedia movement would look like. See #28 on Github.

Project summary

This project is about developing a tool that gives a sneak peek into a developer’s contributions on Wikimedia platforms: Gerrit, Phabricator and Github. The first version of this tool will:

  • Allow uploading data which might be a list of users with their Wikitech/Gerrit, MediaWiki/Phabricator, and Github usernames in a CSV format.
  • Fetch users contributions within a specific timeframe from Gerrit, Phabricator and Github via corresponding APIs. The initial focus could be on the quantitative data and to focus on minimal criteria (e.g., for Gerrit, it could be just obtaining a number of patches merged on Gerrit for a user). Pulling data from Github might be a tough nut to crack because of various reasons, and we might be ignoring it in the first version.
  • Present the information in a list and/or graphical view format with the ability to sort the data by the most active user.

This tool will be hosted on Toolforge, and you will be designing, developing and deploying it from scratch :)

Skills required

Basic familiarity with Python and Web APIs

Microtasks

  • Write a program in Python to fetch for a user number of patches merged within a specific timeframe on Gerrit. Host the code in a repository on Github. Anyone can work on this task. When you've finished, add a link to your repo in a comment on this Phabricator task.
  • Task Statistics: Write a program to fetch all tasks a given user is subscribed to in Phabricator (Maniphest). Prepare a list of all such tasks for a given Month of an year and summarize the findings by creating a "tasks subscribed to vs time" table or histogram. For example for the January Month, there would be a table as follows:
User Stats: Srishti
+------+---------------+
| Week |  Subscription |
+----------------------+
|  1   |      11       |
|  2   |      13       |
|  3   |      21       |
|  4   |      32       |
+------+---------------+

It is not necessary to use this exact table format. You can use the Conduit API for this purpose (See https://phabricator.wikimedia.org/conduit/)

  • UX Research and Design Mockups: Even though, coming up with a UX and mockup at an early stage of the project is aggressive, it can be interesting to follow some design thinking and identify UX around some elements (landing pages, search functionality, and time duration filtering etc.) For this particular microtask, create a preliminary mockup for the first few screens (2-3) of this application/tool while identifying a use case and user-flow which they fulfill. Example use-case: How would a user of this tool search for a given developer and how can 3-4 key stats for the developer (commits vs time, Phabricator tasks commented on vs time) be summarized? What would be shown on the screen if one of these stats have to be explored further Bly clicking them? Do not create high-fidelity mockups - just wireframes. Some tools that can be used are: Pen and paper, Evolus Pencil (https://pencil.evolus.vn/) , quickMockup (https://jdittrich.github.io/quickMockup/)

Note: The above UX task will not be reviewed right now and is intended to go in the students’ proposal directly for a later evaluation. If you need guidance on it, reach out to @Tuxology on Zulip

Get in touch with mentors on Zulip

As a question in the topic Phab:T202233 Developer metrics tool under https://wikimedia.zulipchat.com/#narrow/stream/180873-gsoc19-outreachy18

Mentors

@srishakatux, @D3r1ck01, @Tuxology, @samuelguebo

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald TranscriptAug 19 2018, 11:38 AM
srishakatux renamed this task from Expand awmd-stats tool for use by other event organizers in the Wikimedia movement to Develop a tool for use by event organizers to track developer activity .Sep 12 2018, 1:02 AM
srishakatux updated the task description. (Show Details)
bd808 added a subscriber: bd808.Oct 14 2018, 9:19 PM

Pretty sure this project will need a little bit of scoping in order for us to know exactly what we want. It's kinda vague now so I'll think about this and write down something once it's ready!

In my understanding this is exactly what Event Metrics is about. Hence please don't duplicate work but team up? :)

@Aklapper But Event Metrics is focused on editing related events only?

What we are looking for is a customized version of AWMD stats to help track patches from developer events. What you think?

@Aklapper But Event Metrics is focused on editing related events only?

Right, now that I took a closer look at https://meta.wikimedia.org/wiki/Community_Tech/Event_Metrics . Sorry! :) It still makes me wonder if it could be made more generic / configurable / reusable to also allow covering developer events, or if that is entirely out of scope. Because I'm always afraid of reinventing wheels.

What we are looking for is a customized version of AWMD stats to help track patches from developer events. What you think?

I guess I'm curious to learn more details about "Though https://wikimedia.biterg.io provides useful information, it requires some understanding of how it works; a series of steps to execute before obtaining statistics for a particular event, it is not that easy to load participants data into the tool, and it is cumbersome to keep track of participants activity frequently over time via this tool.", preferably on https://www.mediawiki.org/wiki/Talk:Community_metrics

D3r1ck01 updated the task description. (Show Details)Jan 25 2019, 3:34 PM
D3r1ck01 updated the task description. (Show Details)

Hi @srishakatux I am interested in this project. This is what I understand from the task description and by looking at the repository:

  1. This tool fetches data from gerrit, stores the contributions into database and use it for serving future requests (I am not sure if it stores each patch's data or aggregates the data monthly before storing).

How is this specific to AWMD? Looks like if I add my name in contributors.json, I should be able to see my contributions on the tool right?

Will this project going to be in GSoC'19 ?

Yes @AdityaJ currently the names are hardcoded with the AWMD Community members.

Hey, I am Muhammad Usman. I would like to take this project up for GSoC.

  • I was looking for any tasks that would familiarise me more with AWMD.
  • I have already cloned the repo and going through the code.

Thanks.

Hello @Gopavasanth, @Usmanmuhd, @AdityaJ, thanks for interest on this project. It's currently under-going some scoping, so, more details about the project will be coming in next days once the scoping is done. For the mean time, feel free to lookout for good first bug to get started with some contributions into Wikimedia :)

FYI, there is already a prototype of the tool, see here: https://tools.wmflabs.org/awmd-stats/.

D3r1ck01 updated the task description. (Show Details)Feb 26 2019, 1:57 PM
srishakatux updated the task description. (Show Details)
srishakatux added a subscriber: Tuxology.

@D3r1ck01 As a follow-up to our conversation earlier today, I've updated the task description with more details clarifying the scope. Also adding @Tuxology who is willing to mentor and share his design expertise with students :)

@AdityaJ @Gopavasanth @Usmanmuhd This project is ready now, you can read more details in the task description.

srishakatux updated the task description. (Show Details)Feb 28 2019, 4:55 AM
samuelguebo updated the task description. (Show Details)Feb 28 2019, 11:55 AM

@D3r1ck01 As a follow-up to our conversation earlier today, I've updated the task description with more details clarifying the scope.

Great! Thanks!

I have completed microtask and hosted my python code here

@Gopavasanth Thanks Gopa for working on this! Give me 2-3 days to review our code.

lalit97 added a subscriber: lalit97.EditedMar 1 2019, 11:03 AM

Hello @srishakatux I am interested in this project. I have created a repository on micro task here.

Hi, I am Avanish. I am interested in working on this project. I am looking up the codebase and doing the required reading right now. I am looking forward to working on this project.

Tuxology updated the task description. (Show Details)Mar 4 2019, 2:42 AM

Hey @Gopavasanth and @lalit97 Thanks for completing the microtask. I have left some comments for you on your commits (@Gopavasanth: here and @lalit97: here)

📢 More Microtasks : I am also adding a few more micro-tasks for other prospective students and contributors . See the updated description of this task

lalit97 added a comment.EditedMar 4 2019, 7:36 PM

@Tuxology Thanks for review :) I have made the changes according to your comments at here

Hi, this is Nikhil. I'm interested in working on this project. I have completed the 2nd microtask, i.e. Task Statistics. The corresponding repo can be found here.

@Tuxology Can I start working on microtask 1 or 2 or have @lalit97 and @Nikhil07prakash have completed the task?

Rammanojpotla added a subscriber: Rammanojpotla.EditedMar 6 2019, 7:59 AM

Hey, @srishakatux I am Rammanoj, I am really interested in working with this project. I have made few patches to Mediawiki. I have solved the first micro task, you can find it here. I will be waiting for any comments on the task.

@lalit97 @Nikhil07prakash @Rammanojpotla Thanks for your work on the tasks! While @Tuxology
takes some time to review your work, you can continue to learn more about Wikimedia projects: https://www.mediawiki.org/wiki/New_Developers. I think contributing code to fix small bugs might be a good place to start: https://www.mediawiki.org/wiki/Good_first_bugs. If your patch for a bug fix ends up getting accepted, you can mention about it as well in your GSoC application :)

May be in a week from now, you can start working on the mockups..

@Ssomansh Yes, you can also work on the same microtasks.. your implementation approach might be different than others. Be honest, and don't view the coding solution submitting by others as that might influence your approach :)

AdityaJ added a comment.EditedMar 7 2019, 7:01 AM

@srishakatux I have completed first and second microtasks. The link to their repositories are this and this respectively.

@srishakatux Task 1 is completed and Task 2 is almost done. Please do review my code.

@Ssomansh and @Nikhil07prakash I've reviewed your code submissions for microtasks. I may have left a few comments in the code, but overall they look nice. Keep on experimenting with similar stuff 👏 If you are starting on the UI/UX tasks and need some help, let me know.

srishakatux added a comment.EditedMar 11 2019, 5:21 AM

@Rammanojpotla and @AdityaJ Thanks for working on the microtasks! I've reviewed your code submissions and left a general comment. It was great to see your script generating cool statistics :-)

srishakatux added a comment.EditedMar 11 2019, 5:30 AM

@lalit97 @Ssomansh @Nikhil07prakash @Rammanojpotla @AdityaJ @Gopavasanth As there is still time between now and the application deadline, if you like, you can fix some small bugs on other projects. Read more here: T202233#5006363.

You can also explore the UI/UX microtask, but you don't need to share the outcome with us for review. The mockups you develop will go in your proposal. If you've any questions about this process, you can ping @Tuxology on Zulip.

Tuxology updated the task description. (Show Details)Mar 11 2019, 5:34 AM

@Tuxology Thanks for the review. I have taken note of the minor change that you have suggested and will include it in the code.
Actually, I'm not starting with the UI/UX task now, as I'm working on some bugs on other projects, specifically Pywikibot, as suggested by @srishakatux. I'll get in touch with you, once I start working on my application.
Once again thanks for your time...

@Tuxology Thanks for reviewing the code. I had a small doubt if all the programs are made where the developer's activity can be tracked,(for example, Gitter, Phabricator, and Github) it won't take more than a week or so to develop the program. So what else is expected from this project than just getting the info based on the username? Please elaborate on this part as it will help in the GSoC proposal.

Thanks, @srishakatux and @Tuxology for the reviews, and I am really sorry for the delay in updating with the second task. I have completed the second task, you can find it here. Can any of you review it, please?

@Tuxology Thanks for reviewing the code. I had a small doubt if all the programs are made where the developer's activity can be tracked,(for example, Gitter, Phabricator, and Github) it won't take more than a week or so to develop the program. So what else is expected from this project than just getting the info based on the username? Please elaborate on this part as it will help in the GSoC proposal.

@Ssomansh Great question! There is going to be a lot more to it. See the project summary in the task description. Uploading data from a CSV and excel sheet, displaying the data in a list and graphical format (e.g., charts), sorting data, Github piece will be a bit tricky to deal with, exporting results/ saving different datasets, hosting the tool on Toolforge, etc. If there is time, another piece could be doing a bit of research understanding from potential users of this tool what they would like to see. So there is lot :)

@Nikhil07prakash @Rammanojpotla Sweet!

Would this be a simple key-value list and the keys are always consistent across all and any events? If not, JSON might be way saner than CSV...

Ssomansh added a comment.EditedMar 15 2019, 8:00 PM

@sris

@Tuxology Thanks for reviewing the code. I had a small doubt if all the programs are made where the developer's activity can be tracked,(for example, Gitter, Phabricator, and Github) it won't take more than a week or so to develop the program. So what else is expected from this project than just getting the info based on the username? Please elaborate on this part as it will help in the GSoC proposal.

@Ssomansh Great question! There is going to be a lot more to it. See the project summary in the task description. Uploading data from a CSV and excel sheet, displaying the data in a list and graphical format (e.g., charts), sorting data, Github piece will be a bit tricky to deal with, exporting results/ saving different datasets, hosting the tool on Toolforge, etc. If there is time, another piece could be doing a bit of research understanding from potential users of this tool what they would like to see. So there is lot :)
@Nikhil07prakash @Rammanojpotla Sweet!

I had another doubt related to the UI of the website.

  1. Do we need to save the Graphical data that has been created when user submits the CSV/Xml file, If so then how can we access the database of toolforge(since it will be uploaded on tool forge)?
  1. Should there be a sign up/log in?
  1. How will this web tool be deployed on Toolforge(will we be given a some special access or will we just create an option to redirct the page to the tool itself)?

P. S: i did search about it but it wasn't clear to me, that's why I am directly asking the mentors.

Tuxology added a comment.EditedMar 19 2019, 12:58 AM

@Ssomansh Great questions! Me and @srishakatux brainstormed a bit about this.

I had another doubt related to the UI of the website.

  1. Do we need to save the Graphical data that has been created when user submits the CSV/Xml file, If so then how can we access the database of toolforge(since it will be uploaded on tool forge)?

I think we don't necessarily want storage of data at this point - however, links to graphical views can be good. In its first phase, the main features of the app could be loading data, visualize data and generate reports and save reports. One thing that can be done is create temporary or permanent anonymized shortlinks which can be used to share the graphical views. There is at least 1 way I can think of doing this without needing any DB interaction. Add whatever way you seem fit in your proposal as well. There is no single correct way.

  1. Should there be a sign up/log in?

The idea is to not create a complex workflow for the tool user. For that, Bitergia instance already exists where complex lucene queries can be made and myriad of widgets exist. The goal is simplicity and easy of use without any login related workflow. Having said that, I would encourage you to put in your proposal an implementation approach you would like to take :) We can always refine it later.

  1. How will this web tool be deployed on Toolforge(will we be given a some special access or will we just create an option to redirct the page to the tool itself)?

Regarding hosting a tool on Toolforge, there is a lot of good information already to help you get started:

P. S: i did search about it but it wasn't clear to me, that's why I am directly asking the mentors.

No worries 👍

@Tuxology Thanks for replying. I have sent you and @srishakatux the project details and the timeline on Zulip. Please go through it to get an idea of what I have in mind for the web app.

Update to week 1:

Performed UX research, designed few wireframes and mockups to the tool. Hosted the tool workflow and ideas here. I would be happy to see some suggestions and comments about the current workflow. For more information about the weekly work, you can visit the blog.

Hosted the tool workflow and ideas here.

@Rammanojpotla: Can you please provide more context on that wikipage? Imagine that you are a reader of that page who knows absolutely nothing. You may want to explain that this is a project in progress and does not exist yet, where to find its code, where to find task management / planning for developing Contraband, who works on that project, how to get involved, replace any "they" and "we" and "the tool" in that text by something clearer. Just ideas. Thanks.

Thanks for the suggestions @Aklapper, will update the wiki page.

mmodell added a subscriber: mmodell.Tue, Jul 2, 4:18 PM