===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
| Period| Task
| ----- | -----
| Apr 27 - May 14| **Community bonding**, fixing more issues, thoroughly exploring backend part of the codebase and becoming familiar with the tech stack used.
| May 15 - May 19| Build 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 28| Work 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 8| Work to include contributions on other popular repositories that are not under Wikimedia account
|June 9 - June 11| Ensuring 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 14| Building workflow for fetching best user avatar and about information from the possible venues and display it alongside the contribution statistics.
|June 15 - June 22| Work on fetching best user avatar feature and its proper display
|June 23 - June 25| Working with mentor and ensuring best implementation of newly added features
|June 25 - June 27| Building UI and workflow steps for viewing total contributions of multiple users in a gallery form,
|June 28 - July 9| Implementing multiple user-contributions in gallery view by using best code practices
|July 10 - July 11| **Mid-point feedback** along with code cleansing, comments and updating the documentation
|July 12 - July 15| Wrapping 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 18| Build 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 30| Work on the above feature with best code practices and documentation update
|July 31 - Aug 1| **Feedback **from mentor and resolve any remaining issues or conflicts
|Aug 2 - Aug 4| Building UI and workflow for expanding the tool to gather specifically technical contributions in a particular domain or stack.
|Aug 5 - Aug 15| Working on the above feature and ensuring its smooth accommodation in the tool
|Aug 16 - Aug 18| Resolving any pending issues, conflicts and final updates to documentation
|Aug 19 - Aug 22| **Final 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 [[ https://meta.wikimedia.org/wiki/User:Shivanigangadharan | 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 GithHub. 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/187
- 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.