Page MenuHomePhabricator

Proposal: Develop a tool for displaying user contribution summary
Closed, DeclinedPublic

Description

Profile Information
Name: Nikita Tiwari
Email: tiwarinikita96@gmail.com
Github Profile: https://github.com/nikitiwari
LinkedIn Profile: https://www.linkedin.com/in/nikita-tiwari-3aa54910a/
Location (country or state): Noida , India
Typical working hours (include your timezone): 5:00 pm - 4:00 am(UTC+5:30)

Introduction
Wikipedia is basically a free source of information for the people and by the people . Here one can get knowledge about any topic and can collaborate easily with the work of others. Here is what I plan to implement as an intern in the Outreachy program for wikimedia:
This project is about developing a tool to summarize contributions of a specific user to wikipedia . It will not only help the current users in showcasing their contributions but will also encourage more users towards contributing to wikipedia and wikimedia projects thus making it better day by day.
It will be enhancing a users experience and handling with wikimedia and wikipedia and will motivate users to indulge in wikipedia and its development. Moreover users will also get to know about other contributors and gain some knowledge by building a network.
This tool can also act like a resume of a user.
Possible Mentor(s): @Tgr, @Slaporte

Have you contacted your mentors already?
Yes, I have contacted the mentors .

Deliverables
This project is divided as :
1)Investigation Phase :
It includes the research made prior to the implementation of the functionalities.
First of all it is my utmost priority to understand the project and the functionalities that have to be implemented and find out a solution to improve the existing project in the best way possible.
My main aim in this step will be to analyze the project and suggest new and improved features for this project.
I will dedicate atleast 3 weeks time before the actual coding period begins for planning and deciding what to do before actually starting coding. This phase will be done closely with my mentors considering suggestions from other community members as well.
2)Implementation Phase :
This phase includes the actual coding part of the project. In this phase I will be mainly focusing on the implementation of the above discussed features and functionalities.
This phase will include the following major parts :
Design Phase : Here I will be working on the designing part of this tool so as to make it understandable and encouraging because its the design that attracts the user first.
I will be working on planning and designing the wireframes after discussing with the mentors.
Some of the sample wireframes are attached below:

Page 1:

1.jpg (1×1 px, 392 KB)

Page 2 :

2.jpg (1×1 px, 354 KB)

Page 3 :

3.jpg (1×1 px, 318 KB)

Coding Phase: It involves the actual coding part of the project after the wireframes are approved. I will be using the following technologies to write the code for the user contribution tool:

		HTML5, CSS3, JavaScript, Node.js

I have prior experience of Test Driven Development. Therefore, I would like to follow TDD to write code during the outreachy program.

An example of the procedure for the three main pages is given below.

Page 1 includes User Profile consisting of left side panel(username, profile picture, and other such information ) , user contribution timeline at the central portion and right side panel( displaying weekly/monthly top contributors). For this the page will be divided into three sections(<div>) and then adding information to these sections using different html tags and then styling these elements .

Page 2 will be the achievement page including the left side panel as done page 1 and central part consisting of two sections : Articles Contributed and Articles Edited .This will be again be done by dividing an html page into sections using <div> and then displaying information .
Here the information to be displayed will be covered under the backend portion.Using CSS I will style how the display has to be.

Page 3 will be the contact page displaying the user information at the central portion .This information will consist of the links to various web profile made public as per user’s choice along with the information about the total number of articles written and total number of articles edited till date.
The html coding of this part will include the same procedure of dividing the page into two sections(<div>) where the left side panel will be implemented in a similar way as done for page 1 and for the central portion the information displayed will be written by using different <h> and <p> tags and styling them with CSS.It will also the backend to be done using Node.js .

4)Testing : Tests will be written alongside the code for the project. In this phase I will be testing the tool for different data inputs and checking for error detection and correction along with finding out the broken links if any and fixing them. Then again go for deploying and testing till I get the desired output. Testing phase is equally important in a project as others because at this phase we finally plan to launch the tool.Therefore we need to be careful while testing each and every page and elements used be it a text link or image.

3)Deploying : In this phase the tool will be configured and run .Here I will be looking for the proper working of the project .

5)Documentation : Finally after the successful testing , I will be writing the documentation of this tool which will be covering the details of this tool mentioning the technologies used and implementation and also the user’s manual.

TIMELINE :
Nov 09 - Dec 04
-Community bonding period.
-Understanding the proper documentation of the project and its requirements.
-Improving and Increasing my knowledge on the technologies to be used for the development of the tool.
-Brainstorming and finalizing the features of the tool.
-Design the complete wireframes of each and every part and page of it.
-Devise the logic , search and study the different algorithms that have to be used for implementing graph and ranking feature.
-Prepare the proper documentation for the complete implementation of the tool including the features,functionalities,wireframes,ER diagrams, Use-Case
diagrams,algorithms,future aspects and scope and get it reviewed.

Internship Period : Dec 05, 2017 - Mar 05, 2018

Week 01 : Dec 05 - Dec 11
-HTML and CSS coding for designing the left side panel displaying user information for each page of the tool.
-Designing and coding the nav bar of every page.
Week 02 : Dec 12 - Dec 18
-During this week, I will be having my end semester examinations therefore I won’t be able to devote much time on the project. By that time I will be working
on the following features:
-Designing the icons and elements that will be used in the tool such as the logo , badge,and icons to be used for displaying contact information of the user.
Week 03 : Dec 19 - Dec 25
-HTML and CSS coding and designing the achievements page.
-Working on the contact information part display.
Week 04 : Dec 26 - Jan 01
-Writing the tests for the above implemented features.
-Working on the database schema.
-Implementation of algorithm for displaying of user contribution timeline and how it shows the daily report through arrows as mentioned in the wireframes.
Week 05 : Jan 02 - Jan 08
-JavaScript Coding for the recent activity feature.
-Coding and Implementing the weekly/monthly top contributor on the right panel of dashboard.
Week 06 : Jan 09 - Jan 15
-Wrapping up the code and submit for review.
-Make the required changes.
-Write missing tests.
Week 07 : Jan 16 - Jan 22
-Implementing algorithm for displaying articles edited and articles contributed section.
-Coding and adding the users contribution and others contribution histogram.
Week 08 : Jan 23 - Jan 29
-Adding categorisation option on the basis of fields.
Week 09 : Jan 30 - Feb 05
-Establishing the overall ranking system in the tool base on the number of articles contributed and number of edits.
Week 10 : Feb 06 - Feb 12
-Add option to show or hide user information in his profile.
-Adding public , only me options for the contact information.
Week 11 : Feb 13 - Feb 19
-Designing the user profile part and completing the UI of the complete tool with HTML and CSS.
-Writing APIs with Express.js to enable other tools to fetch the data.
Week 12 : Feb 20 - Feb 26
-Implementation of opt-in methods (O-Auth).
-Extending the tool for all other wikis and languages.

Week 13 : Feb 27 - Mar 05
-UI making customizable for user.
-Bug fixing.
-Final Testing and Evaluation.

Other deliverables during the internship

  • Regular discussion with my mentors .
  • Communicate with other members of the wikipedia community members.
  • Blog posts on my progress every week.

ABOUT ME :
Education :I am undergraduate student,currently pursuing a degree in Bachelor of Technology in Information Technology from JSS Academy of Technical Education, Noida, India. I am in the 5th semester of my eight-semester program. I will graduate in May 2019. I am an active member of my institute’s Computer Society and Programming Club. As a member, I have attended and taken up the organization of various workshops on the Git, Open Source, C,HTML and CSS etc.
How did I learn about Outreachy?
I had a discussion with a friend in college who explained me about it.
Will you have any other commitments, such as school work, another job, planned vacation, etc. during the duration of the project?
I will have my college( sixth semester) from the last week of January.

What classes and for how many credits are you taking in each one of the semesters that overlap with the internship dates? How many credits does a full-time student typically take a semester at your school? Please attach or provide a link to a curriculum that supports this information (required).
As a full time student I take the complete 25 credits.
https://aktu.ac.in/pdf/syllabus/information_tech_240815.pdf

What does making this project happen mean to you?
Being a part of wikimedia’s project is itself a big learning opportunity for me.
Wikimedia not only provides free education to the world but also helps people in learning. Being new to open source I seek to learn as much as I can through this project. Therefore the completion of this project means learning new technology , contributing to open source , being a part of this community and helping the people through this project.
PAST EXPERIENCE :
Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them. Describe any open source projects you have contributed to as a user and contributor (include links). If you have already written a feature or bugfix for a Wikimedia technology such as MediaWiki, link to it here; we will give strong preference to candidates who have done so

Work Experience :
Code contribution on various languages like C, JAVA and Python and Technical Content Writer at geeksforgeeks.org .
Other Projects and Open Source Contribution:
NCS-JSS :https://github.com/ncs-jss A contributor in this organisation . It’s my Institute’s society of which I am an active member.
Q_hub : a web application for my Institute for generating question paper.
Designing and working on its front end part using HTML , CSS.

Micro-tasks :
Microtask 1: Create a tool which takes in the username and displays the recent English Wikipedia edits of that user.
I have created this tool and have fetched the data via API calls to MediaWiki database.
Link: https://github.com/nikitiwari/tool_srish_wikimedia_toolforge/pull/1
Microtask 3: Make a simple design mockup for the contribution timeline.
Link: https://phabricator.wikimedia.org/F10264611

Event Timeline

Hi @Tgr @Slaporte ,
Sir, This is my proposal for applying for this project in Outreachy (Round 15).
Please review it and let me know the changes if any.

Thanks.

Sir , I have also completed the application form but I cant find the link option under eligibility section of applicants. Can you please help me with this?
Thanks

-Write missing tests.

There probably shouldn't be missing tests if you are using TDD :-)

-Adding cache layer to the tool with serviceWorkers and Redis.

Client-side caching is not really helpful here, so no point in using service workers.

-Adding security feature to the contact information by encrypting using bcrypt.

All information handled by the tool is going to be public (there is no point in storing it otherwise), so there is little point. In any case, bcrypt is a hash function, not an encryption method.

Sir,

-There probably shouldn't be missing tests if you are using TDD :-)

There might be missing tests if using TDD because I am not that fluent in TDD and have started with only the basics of testing in node.js for now.

-Client-side caching is not really helpful here, so no point in using service workers.

We can cache the static resources like CSS file, images etc.

-All information handled by the tool is going to be public (there is no point in storing it otherwise), so there is little point. In any case, bcrypt is a hash function, not an encryption method.

Here with providing security I mean if a user wants to add his/her phone number but does not wants it to be public we can add a security option for this and also a resume generation option as well like if a user wants a soft/hard copy of his/her contribution summary to present it to someone , a complete informaton will be generated including the ones hidden in security.

-Client-side caching is not really helpful here, so no point in using service workers.

We can cache the static resources like CSS file, images etc.

Browsers do a good enough job of that, as long as the cache headers are properly set in the responses of the server. Using service workers would be an unnecessary overcomplication.

-All information handled by the tool is going to be public (there is no point in storing it otherwise), so there is little point. In any case, bcrypt is a hash function, not an encryption method.

Here with providing security I mean if a user wants to add his/her phone number but does not wants it to be public we can add a security option for this and also a resume generation option as well like if a user wants a soft/hard copy of his/her contribution summary to present it to someone , a complete informaton will be generated including the ones hidden in security.

That makes sense, but I don't think it's worth the effort - it adds little to the application compared to how much time it is to implement.

Sir,
I have removed the cache layer part and updated the proposal.
Please review it.
Thanks

@Tgr sir,
Please let me know if any further changes are required.

Thanks,
Nikita

Thanks for participating in Outreachy! Unfortunately this proposal wasn't selected.