===Profile Information
Name: Sharon Kessio
Username: Kessio sharon
Web Profile: [[https://github.com/kessio | sharon Kessio ]]
Resume (optional): [[https://docs.google.com/document/d/14o2t8TtV_ZWD2ksvuAAXQUxOxVufm9uxJC4S8pbQ9mo/edit?usp=sharing | Resume]]
Location (country or state): Nairobi, Kenya
Typical working hours (include your timezone): 3:00 p.m. - 11:00 p.m. (UTC+3) Open to flexible hours in order to improve communication with the mentors.
===Synopsis
The goal of this project is to develop a Ruby gem that can analyze Wikidata edits and extract statistics about what changed. Currently, there are no tools available to accurately determine the number of qualifiers added, the number of references added, and other such statistics. This library will be used to improve Wikidata statistics on Wiki Education Dashboard and Programs & Events Dashboard, and can also have other applications.
The proposed solution involves writing code to fetch JSON representations of a Wikidata item and isolate the differences between revisions. A diverse set of example edits representing different kinds of changes will be explored to research the statistics that can be extracted from the JSON differences. Methods will be created to generate these statistics and a suite of tests will be written to demonstrate that the example edits are processed correctly.
The project will be coordinated with mentor(s) to publish the gem, with a stretch goal of integrating it into Wiki Education Dashboard. The library will be useful for researchers and data analysts who want to extract valuable insights from Wikidata edits.
- ** Possible Mentor(s):**
Sage Ross
- **Have you contacted your mentors already?** :
Yes
===Deliverables
Timeline
==== May 29 - June 4
- Orientation and onboarding
- Get familiar with Wikidata and its API documentation.
- Research existing tools and libraries for parsing Wikidata revisions
==== June 5 (Feedback 1)
- Discuss progress made and any challenges faced
- Receive feedback from mentor(s) on approach and plan for next steps
==== June 6 - June 18
- Write code to fetch JSON representations of a Wikidata item and isolate the differences
- Test code with a small set of example edits to ensure accuracy
==== June 19 - June 25
- Research various kinds of changes that can be made to a Wikidata item
- Compile a diverse set of example edits representing different kinds of changes
==== June 26 - July 2
- Research what statistics can be extracted via JSON differences and create methods for generating these statistics
- Start writing tests to ensure that the statistics generated are accurate
==== July 3 (Feedback 2)
- Discuss progress made and any challenges faced
- Receive feedback from mentor on the code, tests, and plan for the next steps
==== July 4 - July 16
- Continue writing tests to ensure that the code works as expected
- Refine code and methods based on feedback from mentor
==== July 17 - July 23
- Add methods to efficiently fetch and analyze large batches of Wikidata edits at once
- Test these methods on a small batch of Wikidata edits to ensure accuracy
==== July 24 (Feedback 3)
- Discuss progress made and any challenges faced
- Receive feedback from mentor on the efficiency of the code and plan for the next steps
==== July 25 - August 6
- Continue testing and refining the code and methods based on feedback from mentor(s)
- Prepare documentation and examples to help users understand and utilize the gem
==== August 7 - August 20
- Coordinate with mentor to publish the gem and integrate it into Wikidata or Wiki Education Dashboard
- Write a blog post or tutorial explaining the features and functionality of the gem
==== August 21 (Feedback 4)
- Discuss progress made and any final adjustments needed before the end of the internship
- Receive feedback from mentor on the final deliverables
==== August 22 - August 25
- Make final adjustments and wrap up loose ends
- Submit final changes
==== Conclusions
Overall, the development of the Wikidata gem is a valuable contribution to the Wikidata community, providing users with a powerful tool for analyzing Wikidata edits and extracting detailed statistics. The effort and dedication put into this project will result in a reliable and efficient gem that has the potential to benefit a wide range of users.
==== Participation
I have forked and made contributions to the WikiEduDashboard Repository on GitHub
I'm currently a member of the Wiki Edu Dashboard slack channel where I have been communicating during the application process and intend to use it during the internship
=== About Me
===== Education:
`Completed Formal Education:`
**Machakos University**
Bsc. Information Technology (2015 - 2019)
**Microverse: Remote Full Stack Web Development Program** (June 2022 - March 2023)
Spent 8hrs a day mastering algorithms, data structures, and full-stack development while simultaneously developing projects with JavaScript, React, Redux, Ruby, and Ruby on Rails.
**How did you hear about this program?**
One of my connections on Linkedin posted about it on her page.
**Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?**
No! I will be fully available for this internship
**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 have only applied for Outreachy
**What does making this project happen mean to you?**
This is my first time participating in and contributing to an open-source project. At first, it looked challenging to me, as I was stepping out of my comfort zone. However, once I successfully ran the WikiEduDashboard codebase on my machine and wrote my first pull request, I felt thrilled and motivated to continue making more contributions. As a recent Bootcamp graduate, I believe that participating and contributing to the open-source community is the best way to gain real-life experience.
The amount of time and effort that will go into making this project happen will broaden my knowledge, improve my software development skills, and act as a launchpad for my career as a software engineer. Like many others in the world, I have been a user of Wikimedia services, and it will be an honor and a great achievement to be among the people developing and improving Wikimedia projects.
=== Past Experience
**My Achievements**
[[https://medium.com/@kessio | I run a blog on medium where I talk about Technology]]
[[Partcipant of OpenGenus | https://iq.opengenus.org/author/sharon/]] I'm a participant of OpenGenus, an opensource organization where we research and write articles explaining various programming concepts along with codebases.
[[https://www.tiktok.com/@juniordev_ke?lang=en | I run juniordev_ke]] A tiktok account where I give advice, tips and resources to aspiring software developers in Kenya. I vlogged about [[https://www.tiktok.com/@juniordev_ke/video/7188858421137935621?lang=en | Outreachy internship]] the video got over 225k views.
**Please add links to any feature or bug fix you have written for a Wikimedia project during the application phase.**
- https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5337 [Merged] - I discovered a bug in the search results query for campaigns while exploring the WikiEduDahsboard project code base. When no campaigns were searched or there were zero campaigns in the database, users would see the message "No results found for '[missing "%query" value]'." Because this technical error message was confusing and unhelpful to users, I contacted the project mentor to discuss a possible solution for the bug. I was able to track down the source of the bug and develop a solution. I modified the query to check for empty search results or a lack of campaigns in the database which also updated the message displayed to users accordingly. After testing my fix thoroughly, I submitted a pull request and it was approved and merged into the codebase.
- https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5334 [Open] I worked on enabling the Rspec/MultipleDescribe Rubocop rule for the WikiEduDashboard folder, which helps to improve the code quality and maintainability of the project. This rule checks for multiple top-level 'describe'. They should be nested if it is for the same class or module or separated into different files, which makes the code more organized and easier to read. I carefully reviewed all the files in the WikiEduDashboard folder and fixed any violations of this rule. This involved reorganizing and restructuring the code in some cases with no functionality changes made. This resulted in cleaner, more readable, and maintainable code. Throughout the project, I had the pleasure to work with the mentor and the Wiki Ed community on the Slack channel. I believe their guidance and advice were invaluable in helping me understand the project codebase and navigate any challenges that arose.
- https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5335 [open] Enabled Rspec/ExampleWording Rubocop linter rule
- ** Describe any relevant projects that you've worked on previously and what knowledge you gained from working on them**
[[https://budgeter-uk8t.onrender.com |Budget App Rails]] - [[https://github.com/kessio/budget-app-rails | Code]] - This is a mobile web application that allows users to add and keep track of their spendings. This project was made using ruby on rails and bootstrap for styling.
=== Skills
- HTML, CSS, JavaScript
- React Redux
- Ruby
- Ruby on Rails
- PHP