Name: Gourishankar panda
Major: Computer Science
Email: gouripanda4@gmail.com
Github: https://www.github.com/gouri-panda
Linkedin: https://www.linkedin.com/in/gouri-panda-b6482a166/
Contact: +91-8249766641
Timezone: IST (GMT+5:30)
===Background work and Programming Skills
I am a second-year student. I'm pursuing a degree in Computer science. I use mostly Android studio for development. I am proficient in java and comfortable in Python.
Java easily lets me convert my ideas into code. I like it mainly because it is a very well structured language which gives you the freedom to do so many things dynamically. I like Java a lot. I have a very great experience reading tutorials on Java and also blogs.
I started programming as an Android developer, I used Django all the time which made me familiar with Python in the beginning. I know how to use Git and Github. If I am stuck, I go to Google and always come back with a solution. I have participated in many Hackathons and won prizes at Hackathons.
===Past Experience And The Project
I know about Open source since the fall of the previous year. Since then I love open source.
I learned a lot from open source projects. I have developed many android apps and published some to Google Play Store.
*[[ https://github.com/gouri-panda/WhatsTheWeather | Weather app ]] This app helps you see the weather forecast of any cities.
*[[ https://github.com/gouri-panda/SumoTwo | Messaging app ]] In this app you can chat your contact list and group chat and much more.
*[[ https://github.com/gouri-panda/womansafety_womansafety | Women safety app ]] This app is designed to ensure safety for women. And many more.
I also participated in (kwoc) Kharagpur Winter of Code. In there I contributed many projects some of them are [[ https://github.com/SaumyaSingh1/Fitofy-India | Fitofy-India ]], [[ https://github.com/AbhilashG97/Melonicious | Melonicious ]] , [[ https://github.com/ardovic/Open-Source-Android-Weather-App | Open-Source-Android-Weather-App ]],[[ https://github.com/oss2019/instigo-android | instigo-android ]].
===The Problem and Motivation
A new section called Leaderboard next to Achievements can be created. This leaderboard will show User’s Avatar, Name, and Score. The score could reuse some numbers from achievements, but should only count edits done with the mobile app because otherwise, Vicuna/etc users will dominate the top of the leaderboard even if they don't use the mobile app.
Listing in the leaderboard only the users who have ever opened the achievements activity. We will keep track of that information server-side. So the leaderboard would only list app users who have an interest in this kind of game.
We can add auto-scroll to the user's current rank and highlight it so that users don't have to look at all results to see the rank, also a button can be added which will automatically jump to the user's rank on clicking.
Tapping the name of a user in the leaderboard should open the gallery of that user's pictures, probably as a browser URL for now. Knowing they are being watched by their peers will probably reduce the temptation to "cheat" (for instance by uploading 1000 pictures of the same spoon).
The user's name should be highlighted.
The length of the leaderboard could be dynamic, for instance, if I am 3rd it could be 10 people, but if I am 13rd it could be 20 people. Or just make more people appear when scrolling down.
There could be weekly (last 30 days) rankings, yearly (last 365 days) rankings, all-time rankings.
To make it more visually attractive. Users like to personalize their avatar, so we could also offer the option to select one of the user's uploads as an avatar picture, but that may lead to more selfies, so this option could be a privilege to unlock (only users who are above level 5 for instance).
===Implementation
The leaderboard lists should probably be calculated on the server where we currently perform achievement calculations, and cached (re-serve the same results if less old than 1 hour). The user will probably upload a few more pictures in 5 minutes and come see the leaderboard again. So we could recalculate only that user's new scores (and let the other people's scores stay the same until the next hour comes). In other words, only the users who keep looking at the leaderboard would have their score grow at smaller intervals than 1 hour. That 1-user-only recalculation itself should be cached something like 1 minute because a picture can not be neatly uploaded in less time, and to avoid useless server load.
We can automatically add the user in the leaderboard, once he performs any of these actions:
login
or upload
or nearby upload
In our backend, we will have:
A list of users(with option 1 or 2) for whom we need to calculate statistics
Periodically fetch the statistics (every 1 or 4 hours). Update the statistics in our tools forge DB
When the Commons app does an API call to get leaderboard info, serve the statistics using tools forge DB instead of calculating real-time.
Mockups
Since I don’t know much about design. Whatever the community will decide I will go for it. I believe that the project has some design guidelines. Here are some basic screenshots from GitHub discussion [[ https://github.com/commons-app/apps-android-commons/issues/2074 | #2074 ]].
===Availability
Do you plan to submit any other proposal apart from this one?
No, I am only submitting this proposal.
===Do you have any other plans this summer?
No, I don’t have any other plans this summer. If I will select in GSoC.
===How many hours per week can you dedicate to this?
I would be able to devote 40 - 50 hours a week during the project since I have no other big project devoted to the summer. My summer vacations start on 29 April and I'll not be engaged in vacations. My academic year would begin by July 17, but for the first month, I would still be able to devote around 40 hours since I love this project.
===Timeline
**Community Bonding Period **
**Goal: Community Bonding**
* The principal focus in this period would be studying in detail the functionalities Wikimedia API and also Community.
* I'll ask guidance from my mentor upon the functioning of the Wikidata API Client library that is the most crucial part of my project.
* If possible, I would also start coding in this phase only, so that I get a head-start.
**Week 1 - Week 2**
In this period, I'll update the UI current achievements activity to the first tab and leader board to the second activity. Discuss,
Design and implementation of API. How should they Calculate and displaying ranks about users(all-time, monthly, weekly).
**Goal:**
Create a UI for the Leader board and implement the code API.
**Week 3 - Week 4**
In this period, I’ll design and implementation of API based on 2nd option(i.e uploads, nearby)and use the APIs to fetch the Leaderboard screen.
**Goal:**
Fetch the results from the API using Retrofit. Adjust the UI to display the result.
I'll also be writing tests along with it
**Midterm Evaluation**
Fix bugs if any
**Week 5 - Week 7**
Complete Unit Test for API. Add pagination in the leaderboard screen to load more data.
**Goal:**
Add Loaders and Improve UX. Add Pagination.
**Week 8 - Week 10**
Add duration filters on the leaderboard screen. And show results based on the user selection. Change the UI to show 3 results uploads, nearby, used and Unit Testing.
**Goal:**
Update the UI and UX and write code for uploads and nearby and used and
Write some Unit Testing.
**Week 11 - Week 12**
Unit testing and finding the bugs and solving the issue.
**Goal:**
Write Unit tests and finishing/fixing bugs for existing so far.
===Previous Contribution And Issues
I am still exploring the commons-app now. So far I have made [[ https://github.com/commons-app/apps-android-commons/pull/3522 | #3522 ]] and [[ https://github.com/commons-app/apps-android-commons/pull/3418 | #3418 ]] Pull Requests to the project and they both already merged. Also, I opened two issues i.e [[ https://github.com/commons-app/apps-android-commons/issues/3531 | #3531 ]] and [[ https://github.com/commons-app/apps-android-commons/issues/3520 | #3520 ]] out of which one is closed and one is open.I’m currently working on the one assigned issue [[ https://github.com/commons-app/apps-android-commons/issues/3547 | #3547 ]].
===How do you envision your involvement with Commons after the GSoC?
I will continue my journey in Wikimedia as contributing and also I'll keep on seeing the work done by me and fixing issues if they emerge in the future.
===What is your ideal approach to keeping everybody informed of your progress, problems, and questions throughout the project?
In order to keep the Wikimedia community update with my progress, I would maintain a blog. I would update the blog at the start of every week on Monday with my accomplishments for the previous week and targets for the next week. I found this approach quite useful for my GSoC2020 project.
I have my own ideas that I plan to implement as extensions to this registry, thus contributing long term.
I have specifically listed down each week’s deliverables by being as specific as possible. I would aim at sticking to each week’s goals.
===Is there any special reason why we should pick you?
I have a special connection with the project. This would probably ensure a higher level of commitment. Besides that I have my own ideas that I plan to implement as extensions to this registry, thus contributing long term.
===Why Commons
I’ve already been participating in the Wikimedia community for a while, mainly with small Commons features. Compared to the other online communities I’ve participated in, Wiki is the most welcoming, and I enjoy being a part of it. Till now I haven’t had a chance to do anything major here, and I feel that GSoC is a great way for me to do a major project. I feel that I can have a better impact by implementing core features in a budding better media application over enhancing an existing application.
===Notes
* I have no commitment during summer which means I'm free to work completely on my project.
* I am very enthusiastic about my work being beneficial to other people in the open-source community. I'll be more productive these days. I'll keep on seeing the work done by me and fixing issues if they emerge in the future.