Page MenuHomePhabricator

GSoC '24 Proposal : Wikimedia Portals codebase modernization
Open, Needs TriagePublic

Description

Profile Information

Name :Hritik Bhattacharya
Github:hritikbhattacharya
Gmail: hritik7042@gmail.com
Phabricator: Hritik25
Gerrit: hritik25
Location: Kolkata , India
Time Zone: IST(UTC+5.30)
Working hours: 3:00 PM to 3:00 AM (IST)

Synopsis:

The project aims to modernize the data layer and certain parts of the build process for www.wikipedia.org. This involves removing unnecessary dependencies, integrating Jest.js for testing, refactoring translations generation, and improving separation between the data layer and the build process. The modernization efforts will enhance the efficiency, maintainability, and performance of the website, benefiting Wikimedia projects by ensuring a more streamlined development process and better user experience.

Possible Mentor(s)
@Jdrewniak , @bwang

Deliverables

Week 1-2: Investigation and Planning
• Examine the codebase in depth in order to comprehend its architecture, structure, and dependencies.
• Determine which dependencies have been rendered unnecessary as a result of advancements made to Node.js since 2015.
• Formulate a strategy to methodically identify and eliminate superfluous dependencies, all the while safeguarding the integrity of current functionality.
• Outline strategies for modernizing the data layer and build process, such as integrating Jest.js for testing and refactoring translations generation.

Week 3-4: Dependency Removal and Jest Integration
• Conduct a comprehensive audit of dependencies in the data layer and build process.
• Remove dependencies that are no longer needed, ensuring backward compatibility and functionality preservation.
• Install and configure Jest.js for unit testing.
• Set up initial test suites for critical components of the data layer and build process.
• Write initial unit tests to cover essential functionality and extreme cases.

Week 5-6: Refactor Translations Generation
• Review the existing process for generating translations, including any dependencies or external APIs used.
• Identify opportunities for improving efficiency and maintainability in the translations generation process.
• Implement refactoring changes to streamline the process and improve code quality and also ensure smooth integration with the rest of the data layer and build process.

Week 7-8: Improve Separation Between Data Layer and Build Process
• Analyze the current integration between the data layer and the build process to identify areas for improvement.
• Determine where clearer boundaries and better separation can enhance modularity and maintainability.
• Refactor code to create clearer boundaries between the data layer and the build process.
• Enhance modularity by separating concerns and ensuring each component has well-defined responsibilities.

Week 9-10: Testing, Documentation, and Deployment
• Conduct comprehensive testing of the entire application, including unit tests, integration tests, and end-to-end tests.
• Address any bugs or issues identified during testing and ensure all tests pass successfully.
• Document all changes made to the codebase, including dependency removal, refactoring, and testing.
• Update existing documentation or create new documentation as needed to reflect changes and improvements.
• Deploy the updated codebase to a testing environment for validation by stakeholders and users.
• Monitor the testing environment for any issues or performance concerns.

Week 11-12: Finalization and Optimization
• Perform final optimizations and performance tuning to ensure the application meets performance requirements.
• Conduct user acceptance testing to gather feedback from stakeholders and end-users.
• Address any remaining feedback and fine-tune the implementation based on user input.
• Prepare the updated codebase for deployment to the production environment.
• Coordinate with operations teams to ensure a smooth deployment process.
• Monitor the production environment post-deployment to ensure stability and address any issues promptly.

Participation
I am active on Email, Zulip, Discord and Slack. I will use Phabricator and Gerrit for issue discussions and code reviews. I plan on regularly meeting with my mentor to discuss my progress and get feedback on my work. I can dedicate 45+ hours a week as I have no other commitments.

About Me

Education:
-I am currently pursuing a B.Tech in Computer Science and Engineering at Haldia Institute Of Technology, with an expected completion date of August 2025. I have maintained a YGPA of 9.4 throughout my academic journey.
Experience: I am currently working as a Software Developer at @Forward since February 2024, where I specialize in Next.js, React.js, Tailwind CSS, MongoDB, AWS, Node.js, and Chrome Extension development. Some of my notable achievements include implementing the Suitable Matches feature for the extension, enhancing UI with Framer Motion and Tailwind CSS, and orchestrating the development of a streamlined Resume Builder UI/UX design.

-Prior to this, I served as a Full Stack Developer at @Clueless from January 2023 to February 2024, where I contributed significantly to the development and management of the Clueless official website, incorporating technologies like Next.js, Tailwind CSS, and TypeScript to improve rendering time and user satisfaction.

-Additionally, I gained valuable experience as an Automation Testing Intern at @Smartinternz from December 2023 to February 2024, where I worked with Katalon Studio, Selenium, PyTest, and various scripting languages to create and execute test cases for major e-commerce websites.

Skills and Languages:
I am proficient in languages such as C++, Golang, Typescript, JavaScript, Python, and Java. Furthermore, I have expertise in frameworks like Next.js, React.js, and tools such as Docker, Kubernetes, Firebase, Git, and Katalon Studio. My experience extends to databases like MongoDB and cloud platforms like AWS and Firebase.

How did you hear about this program?
This programme was brought to my attention via online research and peer recommendations.

Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the program?
As I am currently employed and pursuing my education, I may have some time commitments, but I am dedicated to managing them effectively. I will be able to devote 40+ hours to the project during coding period.

What does making this project happen mean to you?
It means a great deal to me that this project is realised because it not only affords me the chance to utilise my expertise and understanding, but also contributes to the progression of society and technology at large.

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 am 100% loyal to Wikimedia Foundation and only plan on applying to Google Summer of Code with the Wikimedia Foundation.