Page MenuHomePhabricator

Google Summer of Code(2019): Design and Development of a tool to track developer's activity
Closed, DeclinedPublic

Description

Profile Information

Name: Somanshu Vikram Singh
Age: 18
Country : India
Working Hours : 02:30 am to 9:30 am(UTC) and from 12:00 pm to 6:30 pm(UTC)
Time Zone : (UTC +5:30) Indian Standard Time(IST)
Contact :

  1. Gmail - somanshS14@gmail.com
  2. Skype - somanshus02@gmail.com
  3. GitHub - GearGit

University: NIIT University

Course: Bachelors of Technology(B.Tech) in Computer Science and Engineering (CSE).

Synopsis

Wikimedia has a large community of developers who contribute on various platforms. The event organizers may want to track their contribution across various platforms, to do so they need a graphical view (i.e, charts, graphs, and histograms) of their contributions( for example, a graph for commits vs time, or histogram for merged and unmerged patches ). The user must be able to retrieve the desired result with 3 - 4 clicks.

Mentors: srishakatux; D3r1ck01; Tuxology; samuelguebo

Deliverables

  • UI template which will be made keeping scalability in mind, since this is the first version of the tool
  • The user can get results in a tabular list and also download the results in a CSV file along with sharing the results through Permanent Short Links.
  • Create graphs based results fetched and download the graphs in a relevant format.
  • Filter the results on the basis of various parameters(for example, sort results by the most active user).
  • Upload the tool on tool forge.
  • Documentation for using the tool and method used to fetch the data.

Timeline:**

T0: 6th May- 26th May
  • Community Bounding period, during this period I will try to join various platforms to help fellow contributors and also create blogs where I will post about my previous week’s work.
  • Get in touch with the assigned mentors, where I will clear any doubts regarding the project and finalize the tasks.
  • Finalize the frameworks and programming languages to be used in the project.
  • Also, I will be working on increasing the data retrieving process of Micro-Tasks.

I will be busy from 3rd May to 15th May due to my end semester exams. After which, I have no other commitments for the summer except GSoC.

T1: 27th May- 2nd June

Coding begins.

  • Creating a raw program which will retrieve data based on the list of usernames that user submits in CSV file.
  • The primary focus is on retrieving data from Gerrit and Phabricator only.
  • Write the weekly blog.
T2: 3rd June - 9th June
  • Creating the basic UI Template using Angular 7.
  • Integrate the program created in T1 into the web app.
  • Write the weekly blog.
T3: 10th June - 16th June
  • Connect the front end(Angular 7) with backend API ( Django ).
  • Displaying results in a list.
  • Deploying database to store the results.
  • Write the weekly blog.
T4:17th June - 23rd June
  • Adding filter option on result based on multiple options like Most active user, Most contributions and etc.
  • Debugging and resolving any errors.
  • Write the weekly blog.
T5: 24th June - 30th June
  • 24th - 28th June Phase 1 evaluation.
  • Working on the changes required after the mentor’s review.
  • Making the Web app responsive so that it can easily be used on mobile phones too.
  • Write the weekly blog.
T6: 1st July - 6th July
  • Adding the FAQ section.
  • Updating UI design to display charts based on the results of T1.
  • Write the weekly blog.
T7: 7th July - 13th July
  • Integrating Chart.js with Angular 7 (Front end) and Django (Back end) to create charts based on the results of T1.
  • Creating Charts Dynamically and creating an option to download the raw results as well as charts and graphs.
  • Write the weekly blog.
T8: 14th July - 20th July
  • Testing the website with sample data randomly picked by me.
  • Working on creating dynamic permanent shortened url links for the results obtained.
  • Write the weekly blog.
T9: 21st July - 27th July
  • 22nd - 26th July Phase 2 evaluation.
  • Working on issues listed by the mentor.
  • Write the weekly blog.
T10: 28th July - 3rd August
  • Deploying the tool on Toolforge and debugging.
  • Testing the web app after deploying for any loopholes.
  • Write the weekly blog.
T11: 4th August - 7th August
  • Detailed documentation of how the tool has been created and explain the working of each component. This will allow new contributors to easily understand the tool.
  • Feedback from the community
  • Write the weekly blog.
T12: 8th August - 19th August
  • Code clean-up for submission.
  • Extra days allocated in case of any unexpected delays. If no delays, then I will work on tasks mentioned in S2.4 and few of S3 tasks.

**Disclaimer: The above mentioned timeline can be modified based on mentor’s guidance. However the tool will be deployed on Toolforge on time.

Milestones:

1. Before Phase 1 Evaluation
I would have created the basic UI which will be further updated as per the need during the development period. The website will be functionable to an extent that if a user uploads the CSV file, the results( only from Gerrit till phase 1 ) will be displayed in a proper list, with an option to download the results in CSV file.

2. Before Phase 2 Evaluation
The website will be able to process the data faster and show how much time will it take to process the data(like a progress bar, which will dynamically update), the fetched results will be shown for both Gerrit and Phabricator. I may create the option to download from GitHub too depending on whether i am able to extract data using GitHub API or not. Also, a section will be added where the graphs will be displayed as an option to download the graphs.

3. Before Final Submission
The complete working website will be uploaded on my GitHub repository which can be forked along with proper documentation. Results obtained from Gerrit and Phabricator will be dynamically displayed along with all the charts and the website will be made responsive so that it can be easily used on mobile phones too.
Also, the FAQ section will be completed where I will be adding some question and answers which users may have when using the tool. The FAQ section can only be edited by making a pull request (this is the proposed method, it can be changed as per discussion with the mentor).
The final tool will be uploaded on Toolforge when the concerned mentor approves me to do so. However, by the final submission, the tool will be ready to upload on Toolforge.

How does the tool work?
Since this tool is going to be used by event organizers who may have a lot of work on their hands, this tool will allow them to get results in 2-3 clicks. Along with this, there are separate sections for each website(separate section for GERRIT,PHABRICATOR and GITHUB), so that the user can easily upload a CSV file and fetch the results.
As soon as results are fetched, the user will have an option to view, download or share the results. By providing these three options in the dashboard itself, unnecessary confusion can be eliminated. To sum it up:

  1. Visit the website.
  2. Either upload a single username or a CSV file with multiple usernames.
  3. You will get the option to retrieve data for different dates from each website(For example, for Gerrit user may need data for one year while user may need data for 3 months for Phabricator.).
  4. Click on “Get Results”.
  5. Wait for the data to be fetched.
  6. View the results or download them directly or share them through permanent short links.
  7. When you view the results there will be an option to generate and download the Charts for the results.
  8. The data will be stored in JSON format on the database for permanent short links to refer to.

LINK TO DETAILED PIPELINE ALONG WITH UI/UX TEMPLATE

Why do I want to work with Wikimedia?

Since Wikimedia is a huge organisation, they select many students for various projects, therefore being new to open source, I immediately thought of applying at wikimedia along with some other organisations.
After interacting with mentors I narrowed down to WikiMedia. The mentors were helpful and easy to reach, unlike the other organisations which I was trying for, therefore I went ahead with WikiMedia. Even if I dont get selected at least I now have a basic idea of working in an open source organisation. Therefore, I will continue to actively contribute to Wikimedia.

Why did I took this project?

Google Summer of Code is my first and only experience with open source development. I choose this project as I have worked on web development prior to this in a TEDx event that took place in our university and also I am learning python in my current year(first year), so I thought that it will be a great opportunity to work on my subjects as well as get some real life implementation of what I knew.
I tried to work on micro tasks mentioned on the phabricator page, which i was able to complete and reviewed by the mentors. This only fueled me up to work on this project.

What are my prior contributions to wikimedia?
To be completely honest, I have no prior contributions in this organisation, as this is my first(sophomore) year. I came to know about GSoC from youtube before coming to college but i did not know how to start contributing or which organisation to contribute in until the organisation were listed(i.e 27th February,2019).

What projects I have undertaken?

Currently i am working on a GUI based software which will assign invigilators to examination halls in such a way that is fair and also not hectic for invigilators. This software will be used in university if it works as per the requirement by the Examination Cell of University.(I cannot attach a hyperlink for the project as it is a university project).

Along with this I have worked in Tech team in TEDx NIIT University, I usually worked on the frontend along with some backend. The website may not be online as the event has ended about a month ago.

When will I start working on the project?
I have already started with the basic UI for the tool, which has been uploaded on my Github profile. Along with this I have also completed one of the micro tasks and uploaded the same on my Github profile(except the second task, as I am improving its efficiency).
I will continue with making the micro tasks more efficient(along with working on extracting information from github for a given username), so that the results can be processed quickly along with creating the UI template, till 6th May(results are announced). I have my end semester exams from 3rd May to 15th May, so I may not be able to communicate as often, however I will try my best to communicate. I will be available every day after 15th May from 02:30 to 18:30 (UTC).

What Frameworks/Programming languages will I be using?
Frontend - Angular 7, HTML and CSS.(Intermediate knowledge)
Backend - Django.(only the basics, I understand the working of django and how it handles requests).
Other - Chart js for creating charts dynamically, MongoDB for database and Python for fetching the results (Intermediate knowledge).

Did I complete the Micro Tasks mentioned on phabricator?
Yes I have completed the first task and improving the efficiency of second task along with creating a basic UI template and uploaded all of them on my Github profile(except the second one).

Did I contact the mentors before submitting the final proposal?
Yes, I have been in touch with the mentors on Zulip chat almost everyday and they helped me in clearing my doubts.

Event Timeline

Ssomansh renamed this task from Development of a tool to track developer's activity to Google Summer of Code(2019): Development of a tool to track developer's activity.Mar 28 2019, 4:08 AM
Ssomansh triaged this task as Medium priority.
Ssomansh raised the priority of this task from Medium to Needs Triage.Mar 28 2019, 1:28 PM

Hi @Ssomansh! Thanks for writing this proposal. The timeline is quite good 👏I just have a few comments and observations:

  • In the title, instead of the title "Development of a tool to track developer's activity" we can probably say "Design and development a tool to track developers' activity"
  • In this question, "What projects I have undertaken?" you mention two projects that you have undertaken. Are there archived links to the website or publicly available links to the projects? If you have contributions external to Wikimedia, mention them as well, sample code if merged in other projects or your own projects.
  • Thanks for a nice and detailed presentation of the proposed pipeline 🎉
  • You mentioned that you are working currently on the few micro-tasks. It would really help if you can add some initial work on the UX research and design/mockups. It need not be polished at the stage, just a few ideas even if they are drawn on pieces of paper.
Ssomansh renamed this task from Google Summer of Code(2019): Development of a tool to track developer's activity to Google Summer of Code(2019): Design and Development of a tool to track developer's activity.Apr 8 2019, 1:04 PM
Ssomansh updated the task description. (Show Details)

Thanks, @Tuxology for the feedback. The projects that I am working on is for the University use and therefore I cannot publish it on GitHub. However, the TEDx website that I was working on is live currently here. I have made the required changes in the task details

If you would like us to consider your proposal for review, please move it to the submitted column on Google-Summer-of-Code (2019) board.

(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)