Page MenuHomePhabricator

Outreachy 2020 Proposal: Gather & analyze user contributions on wiki & Github
Closed, DeclinedPublic

Description

Profile Information

Name: Shivani Gangadharan
Resume: https://drive.google.com/file/d/13YOl5ZXHqf9BO-i_TmmKsHBwQ4aqN1Cs/view?usp=sharing
Location: Delhi, India
GitHub: https://github.com/shivanigangadharan
LinkedIn: https://www.linkedin.com/in/shivani-gangadharan-bb893b15a/
Timezone: UTC + 5:30
Typical working hours: 10 am - 12 am UTC+5:30

Synopsis

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

Wikicontrib is an essential tool that provides a good visualization of a user's contribution to Wikimedia projects made on Phabricator and Gerrit. This tool would be extremely handy for the Wikimedia community to evaluate people solely on the basis of their contributions and efforts, thus ensuring perfectly collated results. With a click, you get all the contributions of a user and using filters, you can also restrict to view contributions of a certain time period. When given a thought, this project actually has a lot of space for embedding new features and will grow to become one of the most frequently used tools.

Following are the features proposed for this project:-

  • Counting technical contributions made to Github repositories under Wikimedia and other popular projects that are not necessarily under the Wikimedia account (e.g., WikiEduDashboard, apps-android-commons, etc.).
  • Counting technical contributions made by a user on-wiki such as modules and templates, user scripts & Gadgets, etc.
  • Fetch the best user avatar and about information from the possible venues and display it alongside the contribution statistics.
  • View total contributions of multiple users in a gallery form, for a particular Wikimedia project, that helps us decide who contributed most effectively in that project.

Necessity:
The features proposed above solves one of the major roadblocks of Wikicontrib ie., creating a larger and more accurate impact by fetching contributions made in Github as well. Since Github also very widely used, when evaluating candidates it would only be unfair if their GitHub contributions are not included for analysis. So once this essential feature is implemented, the project would already be halfway there or even more, on its journey to becoming a success.

Mentor(s): @srishakatux , @Rammanojpotla , @Tuxology

  • Have you contacted your mentors already? Yes

Deliverables

PeriodTask
Apr 27 - May 14Community bonding, fixing more issues, thoroughly exploring backend part of the codebase and becoming familiar with the tech stack used.
May 15 - May 19Build designs of the proposed features and a blueprint of their best possible implementation or workflow, and also making required changes suggested by mentors.
May 20 - May 28Work on highest priority feature of including Github contributions of Wikimedia
May 29 - June 1 Initial feedback and improve the code structure and documentation so far.
June 2 - June 8Work to include contributions on other popular repositories that are not under Wikimedia account
June 9 - June 11Ensuring the two features added so far are in sync and do not have conflicts or disturb the overall functioning and look of the tool
June 12 - June 14Building workflow for fetching best user avatar and about information from the possible venues and display it alongside the contribution statistics.
June 15 - June 22Work on fetching best user avatar feature and its proper display
June 23 - June 25Working with mentor and ensuring best implementation of newly added features
June 25 - June 27Building UI and workflow steps for viewing total contributions of multiple users in a gallery form,
June 28 - July 9Implementing multiple user-contributions in gallery view by using best code practices
July 10 - July 11Mid-point feedback along with code cleansing, comments and updating the documentation
July 12 - July 15Wrapping up all new features included so far, fixing all issues and ensuring smooth functioning of the tool. Also, working with mentor on microtasks and any issues in wikicontrib project
July 16 - July 18Build workflow and UI design with mentor for adding a new feature that enables us to view the contributions of multiple users in a single Wikimedia project in gallery form such that it enable to analyse who made the most effective contribution in that project
July 19 - July 30Work on the above feature with best code practices and documentation update
July 31 - Aug 1Feedback from mentor and resolve any remaining issues or conflicts
Aug 2 - Aug 4Building UI and workflow for expanding the tool to gather specifically technical contributions in a particular domain or stack.
Aug 5 - Aug 15Working on the above feature and ensuring its smooth accommodation in the tool
Aug 16 - Aug 18Resolving any pending issues, conflicts and final updates to documentation
Aug 19 - Aug 22Final feedback from mentor and completing suggested tasks, if any.

Participation

How I plan to communicate progress and ask for help, where I plan to publish my source code, etc:

  • I will use my currently forked repository of Wikicontrib to make commits and send PRs to the synced original repository. This way, it will be smooth to work together as well as minimize conflicts in merging PRs.
  • For effective communication with mentors, I will communicate on IRC and Zulip in my working hours and in non-working hours I’d be available on Gmail.
  • Issues or bugs related communication will be through comments on the Github issue or PR.
  • Lastly, I’ll keep adding weekly targets achieved on my meta wiki page.

About Me

  • I am a 3rd year student pursuing Bachelors of Technology in Computer Science.
  • In August 2019, I was asked to deliver a talk on open-source opportunities for women at the Sheroes office. So while preparing and researching for that talk, I got to know about Outreachy and ever since then I’ve been wanting to be a part of it. I applied because Outreachy highly encourages absolute beginners of open source to apply and learn from amazing people. And, an applicant is unbiasedly evaluated on the basis of their effort and willingness shown via contributions and communication.
  • During the Outreachy internship program, I would have no other time commitments.
  • My aim and focus is entirely on the Outreachy program with WikiMedia Foundation. I strongly believe that this will help me to become very comfortable with open source and from the experience learnt, next time I can mentor other aspirants with their open-source journey.
  • From the very moment I made my first little contribution to this project, it has and will continue to hold a huge significance for me. I want to make this project stand out, make a solid impact and I consider it my responsibility to make that happen. I have been constantly motivated by WMF and their vision. This project, WikiContrib, is an essential and handy tool that will save us a lot of time when observing a person's overall contributions on Wiki and GitHub. Plus, it is absolutely perfect for a dedicated beginner like me and has a lot of scope for expansion.

Past Experience

  • Previously, I have mostly worked with ReactJS in three of my past internships. In each of those internships, I learnt priceless lessons in my field. I learnt how to research and develop on existing code,how to use dev tools to debug and solve issues and also, I learnt how to effectively communicate with the team and mentors. I have worked with GraphQL and find it best to use as a query language in ReactJS webapps. I am also intermediately skilled in Python programming and python GUIs like PyQt4/5.
  • Here’s a tool that I built in a hackathon for searching for Augmented Reality models and placing an order for them: https://ar-platform.netlify.com/
  • Skillset: HTML, CSS, Javascript, ReactJS, Python, Git, Bootstrap, GraphQL, Google Firebase SDK
Open source contribution to WMF
  • My actual open source journey started with this Wikicontrib tool itself and there couldn’t be a more beginner-friendly and impactful project for me than this. I thoroughly explored the frontend part of the code, which was built in my favourite library-ReactJS, and then I found a bug.

Fixing overflow of blocks in total contributions:
My very first issue was that the blocks in total contributions overflowed their boundaries in large screen. So using media query and view-port width property, I sent a PR that fixed this issue and to my surprise, it was merged today.

Issue - https://github.com/wikimedia/WikiContrib/issues/131
PR - https://github.com/wikimedia/WikiContrib/pull/162

Directing browser back button to Wikicontrib landing page:
This issue opened by our admin, @Pavithraes was that the browser back button did not direct to the Wikicontrib landing page. After studying about this issue online I concluded that if not change the browser behaviour, we can surely change the path or the history stack of our website. So I used the event handler 'onpopstate' and window.history.pushState() function to change the last history location and it worked on my localhost. Hopefully, it should also work on the deployed site since I have directed it to the route '/' (which belongs to the landing page only).

Issue - https://github.com/wikimedia/WikiContrib/issues/184
PR - https://github.com/wikimedia/WikiContrib/pull/188

  • I also worked on a couple of issues that didn’t work out but did make me think on how to expand this project. Here are their links:

https://github.com/wikimedia/WikiContrib/issues/163
https://github.com/wikimedia/WikiContrib/issues/176

Open source contributions in other organizations
  • Here are links to some of my other contributions that involved a potentially large codebase:-

https://github.com/intermine/InterMine-Data-Browser-Tool/pull/81
https://github.com/shivanigangadharan/mobile-ms
https://github.com/lingonsaft/hacktoberfest/pull/1914
https://github.com/DSC-BVP/Hacktoberfest/pull/122

Do you see any risks/concerns involved with implementing the planned features?
On thoroughly analysing all the features that I have proposed in this project, none of them would pose any risk to the tool in general. Also, the participation method that I have planned is such that even if there are any minor conflicts, they can be easily identified thereby making it easier to resolve. One concern would have been to perfectly accommodate my 4th proposed feature, of viewing multiple user contributions in gallery form, but I have also allotted enough time in my internship schedule to plan and build its UI so that is also not a cause of worry. Other than that, my only concern would be to make this project the best version of itself, and I strongly believe that it will happen.

Lessons learnt
By contributing to Wikicontrib, I learnt a lot about writing readable code in ReactJS and the many different ways in which we can create components and add their properties.
It is only now that I realise how challenging it can be for a newbie to make their mark in open source and also that what a huge boost it will give to one’s career and their comfort level in working with huge code bases. Having said that, making those first contributions to open source surely helped me discover my determination to never give up and strive harder to give my best.

Event Timeline

@shivanigangadharan Thanks for creating this proposal! I would like to remind you that the deadline for final submission is in ~24 hrs. Make sure you finish the bits and pieces of this proposal before the deadline here on Phabricator and also submit the application on the Outreachy site :)

@shivanigangadharan Thanks for creating this proposal! I would like to remind you that the deadline for final submission is in ~24 hrs. Make sure you finish the bits and pieces of this proposal before the deadline here on Phabricator and also submit the application on the Outreachy site :)

Surely, I am almost done with it, thanks a lot for taking out the time to review it. I'll complete the last two parts also asap. Please let me know if there's anything I can do to make my proposal stronger. Thank you very much!

Pavithraes closed this task as Declined.EditedMay 5 2020, 7:53 PM

@shivanigangadharan We are sorry to say that we could not accept your application this time. Please do not consider the rejection to be an assessment of your proposal. We received around 27 quality applications, and we were not able to give all applicants a slot that would have deserved one. These were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many candidates who we did not accept in 2019 have become Wikimedia maintainers, contractors and even Outreachy interns and mentors this year!

If you would like a de-brief on why your proposal was not accepted, please let me know as a reply to this comment or on the ‘Feeback on Proposals’ topic of the Zulip stream #gsoc20-outreachy20. I will respond to you within a week or so. :)

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for the next Outreachy round, we look forward to your participation!

@Pavithraes Thank you very much for following up on my proposal. I completely understand and believe that the selected candidates truly deserved it.

Yes please, I would really love to know where did I go wrong in my application, whether it was number/quality of contributions or the final application or the proposal. A de-brief would be very helpful for me in applying to the next round.

Looking forward to contributing more to the organization! :)

Thanks a lot.

@shivanigangadharan Thank you for your application and for all your amazing contributions! I see that you have included all the required sections in your proposal, which is good. :)

You seem to have created the proposal a day before the deadline, which might've not given you enough time to get feedback from your mentors. My first suggestion would be to start working on your proposal early for the next round and get ample feedback from your mentors. It takes time to craft a solid proposal.

Next, the selected candidate (see proposal) made ~13 contributions to the project and I noticed that they were very active on Zulip and GitHub. All of these helped their overall application. I'd recommend that you focus on making more number of contributions in the next round, while maintaining the good quality of each contribution. I also suggest you continue contributing to FOSS projects between now and the next round. This will not only add to your past experience in your proposal, but will also help you quickly understand new projects and make fast progress.

I look forward to your contributions and if you're eligible for the future rounds, I hope to see you as an intern soon!

Hi @Pavithraes! I really appreciate you reviewing and explaining my shortcomings in such detail. You're absolutely right here, I'll surely keep these things in mind in the next round. Thank you very much for your efforts!