**Name**: Lalit Suthar
**IRC Nick**: lalit97
**Working hours**: 11 AM to 6 PM and 10 PM to 12 AM (UTC +5:30)
> Short summary describing your project and how it will benefit Wikimedia projects
Wikimedia commons has a large number of Images divided into different categories. There are some competitions held by ISA in which users who are top contributors win some prize.
This may push some participants to enter ‘wrong’ or ‘unclear’ information which needs to be verified.
Solution for this is to create a tool where org-admins can verify the depicts made on images. which will allow org-admins to `accept` or `decline` claims made by users. This tool will help in streamlining all the images according to categories reducing the erroneous data.
> Possible Mentor(s)
> Have you contacted your mentors already?
Yes I have contacted Eugene233 on Zulip.
Tool will perform the following tasks at the end.
- Sign in functionality with OAuth for org admins.
- Display a category based search for Wikimedia commons images. (Phase 1)
- Users can explore images from each category. (Phase 2)
- Providing an interactive platform to `accept` or `reject` depicts on Images. (Phase 3)
- Add a page to show contribution history of different moderators.
- Leaderboard for depict verification activity.
=== Implementation Details
- **Sign up using O-auth**
The tool will let admins sign-in using the O-auth application of Wikimedia.
- **Category based searching**
There will be a search bar on the home page which searches through all the
categories present in Wikimedia commons. The search will have autocomplete feature
We will get categories using `commons` api and will be displayed using React.
- **Displaying images from a category with depicts**
After selecting an image category , the user sees a list of images from that category.
We will display a paginated list of images which will be sortable based on the image's creation time. Admin can pick any image and verify depict claims of that image.
We will get Metadata of an image using commons api. https://commons.wikimedia.org/wiki/Commons:API/MediaWiki
- **Contribution History & Leaderboard of Activity**
History of contributions will be stored for each user in the database (mysql/postgresql/mongodb). Any user can view any user’s history of depict claims verification activity.
We Will create a global leaderboard and leaderboard across categories for verifying depict images and scores will be assigned for each verification in a uniform way.
* **Technical details, Documentation, Testing and Deployment**
** The code will be hosted on Gerrit.
** We will use Python as a coding language and Django framework for implementing the tool. For customizations required, I will make a custom dashboard using Django.
** Frontend interactions and development will be done using ReactJS.
** Technical documentation for each backend feature and Unit tests for each module will be written using python’s unit test library.
** It will be deployed on Toolforge.
=== UI Mockups
Img: home page
Image Pick Page
Depict claim page
| **Period** | **Task**
| May 4 to June 1 | (Community Bonding Period) Phase deciding period, where I will brainstorm and discuss which features should be prioritized. Will be planning all the implementation details of which libraries to be used for building the tool. Also will be the finalizing strategy that the following verification can be considered as the final step for depict claims.
| June 1 to June 7| Setting up the project. Implementing Oauth based login.
|June 8 to June 14 | Implement Category searching with auto-completion feature. Design responsive home page and interactions with React.
| June 15 to June 21 | Deploy the phase I to follow Iterative development strategy. Complete documentation and tests upto phase I.
| June 22 to June 28 | Implement Category Images list page with pagination. Make it responsive.
| June 29 to July 3 | First Evaluations
| July 4 to July 10 | Write unit test cases for the category list page. Take feedback from mentors and fix bugs.
| July 11 to July 17 | Document all the features upto phase II. Deploy all the features on toolforge upto phase II.
| July 18 to July 26 | Implement Depict claim View. Design Detail view with responsive design.
| July 27 - 31, 2020 | Second Evaluations
| August 1 to August 7 | Implement user activity history page. Write unit tests for the history page.
| August 8 to August 14 | Implement global leaderboard for depicts claim. Deploy on Toolforge and get feedback from the community and users.
| August 15 to August 21 | Work on Performance improvements and finish end to end functional and unit testing. Iron out features and fix bugs which are reported. Write Documentation for phase 3.
| August 21 to August 24 | Code cleanup as per reviews before submitting for final evaluations. Complete Documentation.
| August 31 to September 7 | Final Evaluations
- I will use Gerrit to version control my code. Each Phase will be a new branch, and will be deployed in an iterative cycle.
- I will get feedback on code and functionality after each deliverable.
- I will be active on Zulip and IRC to communicate with mentors.
- I will talk to mentors on zulip for any design decision, feature implementation, bug or code review discussion.
- I will write blog posts regularly about my experience and learnings from this project on Medium ([[ https://firstname.lastname@example.org | lalit suthar ]]).
Tell us about a few:
> Your education (completed or in progress)
Pursuing my B.Tech 4th year in Information Technology major at Government Engineering College Bikaner.
> How did you hear about this program?
I have been contributing in open source from last year and I heard about the program from my seniors who also have been actively working on open source projects.
> Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
I will have my semester exams possibly in June (shifted due to Covoid-19) . I have no other time commitments during this summer. No vacation planned as well. I will be staying at home.
> 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)?
No, I am applying for Google Summer of Code only.
> What does making this project happen mean to you?
Wikimedia commons belongs to data which helps users across the globe to access information which is open and free for everyone.
It’s collaborative nature helps people to volunteer for the depicts claim, It's a powerful tool which is with the power of community.
Building a layer on top of that to verify all the depict claim submissions is a great contribution opportunity as a developer.
Making this project would mean helping the community be more efficient in depict claims.
I have made some projects using django and reactjs. But I was looking for an impactful project in which I can apply and improve my skills in both frontend and backend further. So this project is exactly what I am looking for and it will help in growing my self confidence in web development. It will also give a great platform to learn by developing for a real use case and to learn from user feedback.
- Language : Python
- Frameworks : Django, ReactJs, Bootstrap
- Version Control : Git
- Database : Mysql, Sqlite
- Libraries and Tools : Django Rest Framework, React-Redux, Celery, Redis, Selenium
- [[ https://github.com/lalit97/krishna-lessons | Krishna Lessons ]]: Twitter Bot which posts one verse from Bhagavad Gita daily. Made using Python and Tweepy library. Live at https://twitter.com/krishnalessons
- [[ https://github.com/lalit97/feedfetcher | Feedfetcher ]]: News aggregator application, which collects summary of news from different categories from given RSS feed urls. It processes the RSS feeds asynchronously to get news content. Built using Python, Django, Django Rest framework & Celery.
- [[ https://github.com/lalit97/Blog-app- | Blog App ]]: Simple blog application made using python, django.
- [[ https://github.com/lalit97/Tic-Tac-Toe | Tic Tac Toe ]]: Simple Tic-tac-toe game built using Vanilla Js.
- [[ https://github.com/lalit97/college-site | College Website ]]: Updated version of Govt. Engineering College Bikaner website using Reactjs.
==== Open source contributions
- [[ https://github.com/Ritsyy/findAroundYou/issues/9 | Upgrade django to version 1.11.19 or later ]]
Pull Request: [[ https://github.com/Ritsyy/findAroundYou/pull/11| # 11]]
==== Problem Solving Profiles
- [[ https://www.hackerrank.com/lalit122 | Hackerrank ]]
- [[ https://www.hackerearth.com/@lalit122/ | HackerEarth ]]
- [[ https://auth.geeksforgeeks.org/user/lalit97/practice/ | GeeksForGeeks ]]
==== Wikimedia Contributions
| Status | Phabricator Ticket | Title |Pull Request
| Merged | [[ https://phabricator.wikimedia.org/T239503 | T239503 ]] | Handle modification of application status from INVALID to anything else | [[ https://github.com/WikipediaLibrary/TWLight/pull/429 | #429 ]]
| Open | [[ https://phabricator.wikimedia.org/T212767 | T212767 ]] | Provide error message when navigating to Not Available resources | [[ https://github.com/WikipediaLibrary/TWLight/pull/427 | #427 ]]
| Merged | [[ https://phabricator.wikimedia.org/T218857 | T218857 ]] | Add more links to activity feed | [[ https://github.com/WikipediaLibrary/TWLight/pull/414 | #414 ]]
| Open | [[ https://phabricator.wikimedia.org/T170113 | T170113 ]] | Add 'Back-to-top' button for partners list page | [[ https://github.com/WikipediaLibrary/TWLight/pull/410 | #410 ]]
| Open | [[ https://phabricator.wikimedia.org/T226369 | T226369 ]] | Add condition to check user is current coordinator | [[ https://github.com/WikipediaLibrary/TWLight/pull/406 | #406 ]]
| Merged | [[ https://phabricator.wikimedia.org/T234551 | T234551 ]] | Show Error on 'Mark as Sent' page for automatic-send partners | [[ https://github.com/WikipediaLibrary/TWLight/pull/405 | #405 ]]
| Merged | [[ https://phabricator.wikimedia.org/T193334 | T193334 ]] | Add placeholder text to Review filters | [[ https://github.com/WikipediaLibrary/TWLight/pull/404 | #404 ]]
| Merged | [[ https://phabricator.wikimedia.org/T243746 | T243746 ]] | Add function to handle file name given as url | [[ https://gerrit.wikimedia.org/r/c/labs/tools/VideoCutTool/+/573354 | #573354 ]]
| Merged | [[ https://phabricator.wikimedia.org/T243311 | T243311 ]] | Change 'VideoTrim Settings' position above the 'Step2' | [[ https://gerrit.wikimedia.org/r/#/c/labs/tools/VideoCutTool/+/569217/ | #569217 ]]
| Open | [[ https://phabricator.wikimedia.org/T216400 | T216400 ]] | Allow wildcard project searches | [[ https://github.com/Samwalton9/hashtags/pull/15/ | #15 ]]
| Open | [[ https://phabricator.wikimedia.org/T216399 | T216399 ]] | Allow hashtag project searches | [[ https://github.com/Samwalton9/hashtags/pull/10/ | #10 ]]
===Any Other Info
- Tool used for Mockups [[ https://balsamiq.cloud/ | Balsamiq Cloud ]]