Page MenuHomePhabricator

Outreachy 31 Proposal for upgrading WikiEdu Programs and Events Dashboard Ruby on Rails version to 8.0.1
Closed, DeclinedPublic

Description

Profile Information:

Name: Daniel Ngene

Web Profile: github.com/DanielChristLight1999

Resume (optional)

Location (country or state): Nigeria

Typical working hours (include your timezone): 9:00 - 18:00 (UTC+1)
I am very open to flexible work hours that fits my mentor's schedule

Synopsis

The Programs and Events Dashboard is a web application built on Ruby on Rails that is used by the Wikimedia community for both learning and contributing to the Wikimedia community.

After a deep dive in the project repository and local testing and use of the application in both modes, I have made some findings alongside my contributions and created what I believe to be solid approach for upgrading the Ruby on Rails version from 7.0.7 to 8.0.x.

My plan involves an incremental upgrade where I focus on one major version at a time, whilst upgrading any associated dependencied. I plan to use the FastRuby.io Next Rails strategy since it is a tested method available.

I want to pair the upgrade with a cleanup effort on the Javascript side by resolving eslint warnings that are generated by yarn build.

Possible Mentors

Abishek Das
Sage Ross
empty-codes

Implementation Plan

I plan on following Next Rails strategy which is fundamentally a method of using dual-boot and test driven processes for the upgrade. I would approach the project with a focus on safety, traceablity and continuous verification through tests and documentation during each phase of the upgrade.

I will begin with auditing the project's dependencies and then establishing a baseline on the current Rails setup. I'll then use Next Rails dual-boot configuration to allow the application to run under two Rails version at the same time. This will make it easier for me to test compatibility as I transition incrementally to newer versions, starting with Rails 7.1 while keeping the existing 7.0.7 environment next to it.

I will then use the tools availble to me via next-rails to run compatibility tests, discover all the deprecation warnings and save them for documentation. I will then begin to find the solutions to the deprecation warning to each new version and fixing them incrementally as I go.

I will do this for each version and as I upgrade to the compatible ruby version too.

Deliverables

  • A fully upgraded and stable application running on Rails 8.0.1 and Ruby 3.3.x.
  • Improved frontend code quality with ESLint
  • An upgrade guide documentation that documents all the steps I took and challenges I faced when upgrading the application.
  • A report with a summary of compatibility updates and dependency resolutions alongsides the verification results.

Timelines

  • 08.12 – 12.12

    Review dependencies and run bundle outdated. Identify any deprecations, confirm passing tests under Rails 7.0.7, and document any new findings. Set up dual-boot environment using next_rails. Configure the project to run under both Rails 7.0.7 and 7.1. Begin the transition process.
  • 12.12 – 15.12

    Have feedback session with mentors to show progress and take any corrections and streamlined goals.
  • 16.12 – 21.12

    Perform the upgrade from 7.0.7 to 7.1 and work through other dependency upgrades and fix all issues. Submit PR for mentor feedback and revisions.
  • 22.12 – 31.12

    Perform the next upgrade from Rails 7.1 to 7.2. Resolve deprecations, adjust configurations, and stabilize the test suite. Submit PR for mentor feedback and revisions.
  • 02.01 – 12.01

    Proceed with Rails 7.1 to 7.2 upgrade. Update initializers, fix breaking changes, and test critical functionalities (jobs, mailers, and APIs). Run full suite test and fix any issues found. Submit PR for review.
  • 13.01 – 23.01

    Upgrade Ruby to 3.2 minimum and address any syntax updates, gem compatibility, and bundler adjustments. Validate test and CI performance under the new Ruby version. Submit PR for mentor feedback and revisions.
  • 25.01 – 15.02

    Continue to upgrade from 7.2 to 8.0. Resolve dependency and deprecation issues. Run full suite test. Submit PR Finalize documentation and submit the Rails Upgrade Guide. Complete last feedback fixes, merge PRs, and prepare the final upgrade summary report for submission.
  • 16.02 - 28.02

    Resolve unexpected blockers or issues and organize the documentations of the upgrade process. Write my report of the upgrade and results, alongside any new findings.
  • 01.03 - 05.03

    Final checks and feedback with mentors.

    I plan on resolving at least 5 eslint warnings daily alongside making my documentations for the day hence I didn't add it to the timeline. My timeline also includes small buffer periods to accomodate PR reviews, mentor feedback and CI fixes. I plan to work through each stage as fast as I can, finish early where possible in order to pickup some frontend design enhancements I have in mind.

Participation

I have already setup the development environment and made contributions that helped my understanding of the codebase. I plan to create branches for each upgrade phase and to focus on clearly defined milestones for each branch with clear commits and descriptive messages.

I'll ensure that each Pull Request will specify the exact scope of my proposed changes and try to make them as focused as possible. I will also communicate actively on the Slack channels and any other means of communication preferred by my mentors and also being as flexible as possible to suite the time of my mentors.

About Me

Education

  • WASSCE - WAEC Certificate (City College, Enugu)
  • BSC - Applied Biochemistry (Enugu State University of Science and Technology)

    I graduated from the university in 2023 but whilst in school, I worked as a freelance web developer and after graduation, I went on to study with ALX Foundation for software engineering under a scholarship from Master Card Foundations. I have since continued to work on freelance projects from referrals. I also created a small group where I help new developers find their feet in the space by guiding them through the right study materials and correct progression.

How did you hear about this program

I first heard about it on twitter and then a friend from my ALX Program also told me about it and applied but at the time, I wasn't able to make a very good application since I was still studying with ALX.

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 planned time commitments and intend to engage in a full work and learning experience. I only have to take 2 days off for family on Christmas and New year day.

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)?

I only plan on applying for Google Summer of Code march next year since applications are not open now.

What does making this project happen mean to you?

I believe this project to be an excellent opportunity for me to properly break into the open source space. A great learning experience and satisfying achievement to see that I contributed to something used by so many. To me this is more than just upgrading the application, it is a milestone of many in the open source space of which I fell in love with during the contribution phase here. Getting to discover how a lot of people, from all over the world can cleanly contribute to a project, got me fascinated. I definitely plan on riding this momentum to continue contributing even after the internship to this and other projects I find interesting.

Past Experience

My journey as a developer started about 4 years ago as I built web and mobile applications with a focus on React applications, API developments using Node.js and working with other databases like PostgreSql, MongoDB and Redis. I have limited experiece with the open source community as I only studied the space and haven't contributed, but I strongly believe in this project being the perfect entry point. I have completed a couple of personal projects on Ruby and Rails in the past 3 months and have a basic understanding of building and deploying an application.
During the contribution phase, I gained a lot of experience with this project's codebase especially in the aspect of a test suite and can confidently write tests for features I develop both on React and Rails.

My Contributions

Any other info

I plan on documenting my journey on twitter with periodic tweets on my progress which includes challenges faced and solutions I found.

Event Timeline

Daniel_Ngene renamed this task from Outreachy 31 Proposal for upgrading WikiEdu Programs and Events Dashboard to 8.0.1 to Outreachy 31 Proposal for upgrading WikiEdu Programs and Events Dashboard Ruby on Rails version to 8.0.1.Oct 26 2025, 12:00 AM

A little feedback, 3 - 4 days to complete the project is not realistic. As you said, blockers might arise so ideally you should account for that in your timeline. The internship spans around 11 - 12 weeks and although you might complete the project earlier, you should still be engaged for at least more than half of the entire period.

Thank you so much for the review @empty-codes. I grossly underestimated the amount of work it would take to finish the project. I have now after a deep dive into the project codebase and making so contributions, rewritten my proposal.
If there are any oversights on my end or other things I should take into account I would truly appreciate your feedback. Thanks again!