Page MenuHomePhabricator

Wikimedia Portals codebase modernization
Open, Needs TriagePublic


Profile Information

Name: Nikhil Saini
Location: India
TimeZone: IST (GMT +5:30)
Preferred Communication Method: Email, Video Conferencing and Call
Typical working hours: 12:00PM-2:00PM, 5:00PM-5:00AM


The project aims to modernize the Wikimedia Portals codebase, which generates, one of the most visited websites globally. It involves cleaning up, refactoring, adding tests, and updating outdated dependencies. Through code cleanup, refactoring, and performance optimization, the project aims to enhance the reliability, performance, and maintainability of the Wikimedia Portals codebase.

Benefits to Wikimedia Projects:

Enhanced Performance: By optimizing critical sections of the codebase, the project will improve the loading speed and responsiveness of, enhancing the user experience for millions of users accessing Wikimedia projects.
Improved Reliability: Adding comprehensive test coverage ensures the reliability of the codebase, reducing the likelihood of bugs and errors that could impact the availability of Wikimedia projects.
Maintainability: By refactoring legacy code and adhering to best practices, the project will make the codebase easier to maintain and contribute to, facilitating future updates and enhancements to Wikimedia projects.
Compatibility and Stability: Updating outdated dependencies ensures compatibility with the latest technologies and libraries, improving the stability of Wikimedia projects and enabling the adoption of new features.
Community Engagement: Through documentation and collaboration with mentors and the Wikimedia community, the project fosters community engagement and knowledge sharing, empowering contributors to participate in the ongoing development and improvement of Wikimedia projects.

  • Possible Mentor: Jan Drewniak (WMF), Bernard Wang (WMF)
  • Phabricator task: T358885


Week 1-2: Community Bonding Period (10 hours)

  • Engage with mentors and the Wikimedia community (3 hours)
  • Set up development environment (2 hours)
  • Familiarize yourself with the existing codebase (5 hours)

Week 3-4: Initial Investigation and Planning (15 hours)

  • Perform a thorough analysis of the codebase (6 hours)
  • Create a detailed project plan (4 hours)
  • Update outdated dependencies and address immediate issues (5 hours)

Week 5-6: Refactoring and Code Cleanup (25 hours)

  • Refactor legacy code (12 hours)
  • Remove deprecated features and unnecessary dependencies (8 hours)
  • Ensure backward compatibility (5 hours)

Week 7-8: Testing Infrastructure Setup (20 hours)

  • Set up testing infrastructure using Jest.js (8 hours)
  • Write initial test suites (6 hours)
  • Integrate automated testing into the workflow (6 hours)

Week 9-10: Performance Optimization (25 hours)

  • Profile critical sections of the codebase (8 hours)
  • Implement performance optimizations (12 hours)
  • Conduct performance testing (5 hours)

Week 11-12: Finalization and Documentation (35 hours)

  • Finalize code cleanup, refactoring, and optimization (15 hours)
  • Complete test coverage for critical functionalities (8 hours)
  • Document code changes, testing strategies, and best practices (12 hours)

Week 13: Buffer Week (10 hours)

  • Address any remaining issues (5 hours)
  • Review project progress with mentors and gather feedback (3 hours)
  • Ensure project deliverables are ready for submission (2 hours)

Week 14: Final Submission and Presentation (10 hours)

  • Submit finalized project deliverables (4 hours)
  • Prepare presentation summarizing project outcomes (4 hours)
  • Participate in final evaluation process (2 hours)


Progress Updates:

  • Weekly Reports: I will provide weekly progress reports summarizing the tasks completed, challenges encountered, and next steps planned. These reports will be shared with mentors via email or through a designated communication platform such as Slack or Discord.
  • Task Tracking: I will utilize project management tools such as Trello or Asana to track tasks and their status. This will allow mentors to monitor progress in real-time and provide feedback as needed.
  • Regular Meetings: Scheduled meetings with mentors will be held bi-weekly or as needed to discuss progress, address any concerns, and seek guidance on upcoming tasks.

Seeking Assistance:

  • Mentor Communication: I will reach out to mentors promptly whenever I encounter challenges or need clarification on project requirements. This can be done via email, instant messaging, or during scheduled meetings.
  • Community Forums: If I encounter technical challenges beyond the scope of mentor expertise, I will seek assistance from relevant online forums such as Stack Overflow or the Wikimedia community forums.
  • Code Reviews: Regular code reviews with mentors and community members will be conducted to gather feedback, identify potential issues, and ensure code quality.

Source Code Publication:

  • The source code will be published on a public version control platform such as GitHub or GitLab. This will allow for transparency, collaboration, and contributions from the community.
  • Regular commits and updates will be made to the repository to reflect progress and changes made during the development process.
  • Issues and feature requests will be tracked using the platform's issue tracker, allowing for community involvement and prioritization of tasks.

About Me

  • University: Chitkara University (2022-present)
  • Degree: Bachelor of Engineering
  • Field of study: Computer Science Engineering
  • Current year: 2nd Year (4th Semester)
  • CGPA: 9.1
  • Making this project happen means a significant opportunity for me to contribute to the modernization of the Wikimedia Portals codebase, enhancing the reliability, performance, and maintainability of It represents a chance for personal growth and development as I deepen my understanding of modern web development practices, refine my technical skills, and gain hands-on experience with real-world challenges. Additionally, contributing to open source and the community is deeply fulfilling, allowing me to give back to a community that has provided me with valuable resources and knowledge. Successfully completing this project under the mentorship of experienced developers from the Wikimedia Foundation not only adds value to my portfolio but also enhances my credibility within the industry, opening doors to new opportunities and future collaborations. Ultimately, the most significant aspect of making this project happen is the impact it has on users worldwide, improving their experience on a platform that serves as a valuable resource for millions of people seeking knowledge and information.

Past Experience

Emotion Detection App using AI:
In this project, I worked on Python libraries for AI development and trained the model which had the efficiency of 91.7% and i also displayed this project in Hackathon and grab the slot in Grand Finals of Hackathon.
Tech Stack: JavaScript, HTML, CSS, Python, NodeJS
Real Estate Website Using Mern Stack
I have gained a deep understanding of the specific requirements and challenges associated with real estate websites, including property listing management, search functionality, user authentication, and interactive user interfaces. My proficiency in building robust backend systems with Node.js and Express.js, coupled with my expertise in frontend development using React.js, enables me to create scalable and responsive web applications tailored to the needs of real estate businesses. Additionally, my experience in database design and management with MongoDB ensures efficient data storage and retrieval, crucial for handling large volumes of property listings and user information.
Tech Stack: JavaScript,ReactJS, Redux Toolkit, MongoDB, ExpressJS, NodeJS