== Profile Information
Name: Formasit Chijoh Fokunang
Nickname: formasit
Github: Formasitchijoh
Email: formasitf@gmail.com/manoica2023@gmail.com
Phone Number: +237-675-718-328
Location: Cameroon
Time Zone: Cameroon (GMT + 1)
== Meeting with mentors:
I am reachable anytime through email, slack, and any communication channel
GMT + 1, 6:00 AM to 10:00 PM
= Synopsis
== [WikiEducation Dashboard] Improve the Wiki Education Dashboard test suite
Wiki Education Dashboard is a Ruby on Rails application that provides server-rendered fronted and contains a with a mixed React and Redux. It provides tracking and statistics for hundreds of thousands of editors on Wikipedia and other Wikimedia wikis.The Dashboard codebase uses a comprehensive suite of Ruby tests, including unit and feature tests, to maintain functionality.However, the current test suite is inefficientfails often, taking approximately 35 minutes to run (on GitHub CI), and is overall fairly fragile, with intermittently failing tests ,.This project seeks to enhance the maintainability, scalability, and developer experience by improving the test suite's performance .The focus will be on taking a broad approach to improveimproving quality and performance of the test suite, optimizing execution times, and increasing test coverage. Strategies such as parallelizing tests, refining data setup, and refactoring slow tests will be employed to achieve a more reliable and performant platform. Improving the Dashboard test suite will drastically improve the developer experience and making the platform performant and scalable
== Mentors
Sage Ross(@Ragesoss), Sulagna Saha(@saha23s)
== Deliverables
The aim of this project is to address the core issues of maintainability and reliability by identifying patterns of intermittent test failures and their root causes. It will also focus on increasing test run speed and ensuring comprehensive test coverage across the application. The project will improve the platform's overall performance, making it more maintainable, scalable, and enhancing the developer experience, The following will be my area of focus.
1. Identifying tests that fail intermittently
2. Identifying tests (or sets of tests, or aspects of test suite configuration) that contribute substantially to execution time
3. Areas of the code with significant holes in test coverage
4. Tests that are not easy to understand or should be refactored or rewritten
===== Also, I wish to stretch the goal of the project by
1. Establish a test suite that passes 20 consecutive runs on CI, ensuring stability and reliability by minimizing flakiness and inconsistencies in test outcomes.
2. I aim to optimize the test suite execution to ensure it completes in under 20 minutes
3. Complete the remaining 1% of untested LOC, bringing the platform to 100% line coverage for improved reliability and maintainability
4. I aim to increase the JavaScript/JSX statement coverage to 80% if time permits
== Implementation Details
The primary focus will be evaluating the test suite and its recent CI logs to identify intermittently failing tests, their causes, and tests that significantly contribute to long execution times. The project will also target areas of the codebase with gaps in test coverage, rewriting both the tests and underlying code as needed. Additionally, tests that are difficult to understand or prone to flakiness will be refactored. Proper tests will be implemented to catch failures caused by external APIs or third-party resources, updating the codebase to handle these cases. These improvements will allow new contributors to easily identify edge cases, quickly debug failing tests, and reduce overall build time on GitHub CI
= Phase 1 (Deliverable before phase 1 evaluation):
* Evaluate the existing test suite and its recent history of continuous integration (CI) logs to identify tests that fail intermittently
* Evaluate and identify third party resources that causes test to fail
* Identify areas of the code with significant holes in test coverage
= Phase 2 (Deliverable before phase 2 evaluation):
* Run each test in isolation to identify test that contribute substantially to execution time
* Ensure that all existing tests cover edge cases adequately
* Writing tests to fix code with holes in test coverage, in the codebase and fixing all possible bugs.
* Rewrite tests that are not easy to understand or should be refactored or rewritten
= Phase 3 (Deliverable before final evaluation):
* Establish a test suite that passes 20 consecutive runs on CI and complete under 20 minutes
* Complete the remaining 1% of untested LOC, bringing the platform to 100% line coverage
* Write a guide to assist developers in navigating and diagnosing issues in failing tests
* Implement a more intuitive and easy to understand reporting strategy for error logs and where exactly the error is from
== Future Goals:
Will be implemented if all above-mentioned milestones are achieved and completed successfully and approved by the mentors, also desired to be taken up after Outreachy.
*Increase the JavaScript/JSX statement coverage to 90%
*Continue monitoring the system platform to ensure all test pass properly and are effective and handle new code
== Participation
I intentd to use the project’s slack channel as the main communication channel and also through emails, as per the mentor’s convenience. I’ll equally github as the main means of contributing code where I will push commits to my forked project repository and making Pull Requests as and when requiredown clone of the repository. I’ll be using GitHub’s issue tracker for feature requests and bugs and communicateing through this Phabricator task , I would be glad toequally help other contributors and users solve their issues and help the maintainers in reviewing Paid the process of reviewing my Pull request by writing good and understandable commit and pull Rrequests messages.
=About Me
== Education
I am a software engineering graduate from the University of Buea, set to graduate this December. During my studies, I gained proficiency in Python and Rust, test driven development, which sparkenabled my passion fore have a strong knowledge software development. I was introduced to and began contributing to free and open-source software during my sophomore year, and I have continued ever since. The open-source community provides a collaborative and welcoming environment where I can practice and improve my skills without bias or limitations. I am particularly passionate about learning and ensuring that everyone has access to free, quality education. Contributing to Wikimedia and the Wiki Education Dashboard allows me to support this initiative in my own small way
== How did you hear about this program?
I learned about Outreachy from a mentor who has contributed to wikimedia through Outreachhy and GSOC over the years and suggested it was a great opportunity for me to learn and apply my skills in an industry project. I have applied to Outreachy for five times , the first two times I was accepted but didn't go pass the contribution phase and the last 3 I wasn't accepted.
== Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
I have no other commitments as i am done with my degree program. I would like to spend time with my family from 24th of December to the 1st of January but I can accommodate any important task during this time.
== Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
I don't have any other commitments, I don’t have any summer plan other than Outreachy. The Outreachy project phase takes the highest position on my priority list
== What does making this project happen mean to you?
I strongly believe in contributing in my own way to improve athe challenges I have faced, enabling others to benefit from my experiences, my first PR to the platform ran for over 50 minutes and it failed. I struggled to understand the reason for the failure, as I did not clearly identify where the error originated and found it difficult to interpret the error messages. This process took me an entire day to resolve after seeking help from my mentors, Sageross and Abishecks, who were very approachable and provided valuable guidance. and gave me guidance on what the issue was. Over the course of the development i have realized other contributors also have this challenge and for a newcomer it is very overwhelming, So improving the test suites of the dashboard will help improve the developer experience and help newcomers better understand the error they are having and what is the possible cause and how to fix them.
Furthermore, these improvements will enhance the overall performance of the dashboard, ensuring a seamless user experience and enabling students and instructors to maximize their use of the platform for education and knowledge transmission.
From a professional point of view, I have recently begun learning Ruby on Rails as part of my development skill set. Additionally, I am focused on writing comprehensive and efficient tests to improve system performance, maintainability, and scalability. I believe this project will allow me to apply my knowledge, enhance my skills as a tester, and contribute to significant FOSS projects while gaining direct access to mentorship.
== Past Experience
I am passionate about performant system that are maintainable and scalable, having been passionate about Software development since my Solphomore yearsecond year in university since then I have been working continuously on personal projects and some open source projects. I have always been interested in building software that are reliable and has practical scale implications, and Open source has provided me with the platform to do so. I make commits with clean commit messages and well structured Pull Requests, I make commits with clean commit messages and well structured Pull Requests - something which I feel is very crucial for any open source project.believe this helps me communicate my understanding of the task and help my mentors in the review process
= Coding Skills:
== Programming Languages and Frameworks:
Fluent in HTML, CSS, JavaScript, Ruby., Python
Proficient in Ruby on Rails and experienced with Django (Python) and Java.
Strong knowledge of OOP and MVC architecture.
Experienced with front-end frameworks such as React, Next.js, and Redux.
Proficient in testing tools: RSpec, Jest, and Capybara.
Familiar with CI/CD practices and tools.
Strong concepts of Git; can adapt to other version control tools if required.
Good analytical and problem-solving skills.
Effective communication skills for collaboration in a team.
Understanding of Agile methodologies
I have earned a great amount of experience with the codebase of the project. Also, I have made quite a few pull requests now and most of them have been merged. My contributions were focused towards writing unit test , fixing existing bugs,
Here is a list of my contributions:
== Wikimedia Contributions:
https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5973
https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5965
https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5974
https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5978
https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5985
https://github.com/WikiEducationFoundation/WikiEduDashboard/pull/5986
Other Contributions
== Unstructured Studio
https://github.com/unstructuredstudio/zubhub/pull/736
https://github.com/unstructuredstudio/zubhub/pull/778