Page MenuHomePhabricator

GSoC 2023 Proposal: Improve the functionality of VideoCutTool
Closed, DeclinedPublic

Assigned To
Authored By
TheRealPranav
Apr 1 2023, 6:15 PM
Referenced Files
F36937792: VideoCutTool_Mock_Undo-Redo_Button.png
Apr 3 2023, 12:29 PM
F36937777: VideoCutTool_Mock_Aspect_Ratio_Preset.png
Apr 3 2023, 12:29 PM
F36937765: VideoCutTool_Mock_Aspect_Ratio_Guide.png
Apr 3 2023, 12:29 PM
F36937759: VideoCutTool_Mock_Volume_Slider_Adjust_button.png
Apr 3 2023, 12:29 PM
F36937751: VideoCutTool_Mock_FullScreen_button.png
Apr 3 2023, 12:29 PM
F36937747: VideoCutTool_Mock_Volume_Slider_button.png
Apr 3 2023, 12:29 PM
F36937739: VideoCutTool_Mock_Seek_button.png
Apr 3 2023, 12:29 PM
F36937721: VideoCutTool_Mock_Submit_button.png
Apr 3 2023, 12:29 PM

Description

Profile Information

Name: Pranav Yadav
Gerrit: https://gerrit.wikimedia.org/r/q/TheRealPranav
Zulip Chat: Pranav Yadav | User ID: 605334
Location: India
Timezone: UTC+05:30
Typical working hours:

  • Weekdays: 09:00 to 13:00 UTC+05:30 and 14:00 to 20:00 UTC+05:30
  • Weekends (if necessary): 09:00 to 13:00 UTC+05:30 and 17:00 to 19:00 UTC+05:30

Synopsis

This project aims to improve the VideoCutTool, a tool for editing videos in Wikimedia Commons, with the following broad objectives:

  • Fix all the bugs identified in the Phabricator task T327582 to improve the stability, and usability of the VideoCutTool.
  • Add new functionalities to the tool to enhance the user experience, such as video filters, text, or annotations.
  • Write and automate unit tests to ensure that the tool is functioning properly and that any changes made do not introduce new bugs.
  • Collaborate with mentors (and team) to understand the root causes of the bugs and develop solutions to fix them and implement new features.

The project will benefit Wikimedia projects by making the VideoCutTool more user-friendly, reducing the need for external software applications to edit and re-upload videos to Wikimedia Commons.

  • Possible Mentor(s): Gopa Vasanth (@Gopavasanth), Sohom Datta (@Soda)
  • Have you contacted your mentors already? Yes

Deliverables

  • The following table describes the timeline of my work with deadlines and milestones, broken down week by week, which is followed by the UI mockups which describe specifics about each specific task for new features.
  • Also, it includes the time I am planning to allocate for investigation, coding, deploying, testing, and documentation for respective tasks.
PeriodTask
May 4-May 28Community bonding period: - Connect with community members, get to know each other, understand each other's expertise, and discuss potential approaches for new features. - Setup MediaWiki user page. - Start reading WikiMedia technical blogs. - Write bi-weekly progress reports and (or) blog posts and share with the community. - Exploring the use cases of VideoCutTool thoroughly, correlating the current interface and features with underlying code, and understanding the bugs. - Collect the development resources about the VideoCutTool, and its dependencies, and go through the related documentation. - Re-iterate on plans for tasks for both existing bug fixes and new features (Filters, Text Annotations); along with the mentors, team, and community.
May 29-June 11- Identify and fix existing bugs in VideoCutTool as per plans made in the past weeks. - Write initial tests for the same (along with respective patches). - Write progress reports and (or) blog posts and share with the community.
May 29-June 18- Collaborate with mentors, team, and community about optimal approaches and refactoring the code. - Write initial tests for the same (along with respective patches). - Thoroughly understand the code of existing (tools) implementations. - Correlate the implementations with VideoCutTool. - Proceed accordingly with implementations. - Write progress reports and (or) blog posts and share with the community.
June 19-June 22Tests Phase I - Write and automate tests for bugs under T327582 using Jest, react-testing-library, and Jenkins CI. - Iteratively write tests for files and features that are being refactored and if it is dependent on any feature. - Such that increasing the overall test coverage of the VideoCutTool codebase.
June 23-June 25Pre-Midterm Evaluation - Get the bug fixes reviewed and discuss optimizations with mentors, team, and community. - Brainstorm optimizations to implement the optimal approach possible.
June 26-June 30- Iterate on the feedback provided. - Ensure compatibility with devices and browsers. - Test VideoCutTool using tools like Browserstack and similar tools to ensure compatibility across devices and browsers. - Write progress reports and (or) blog posts and share with the community.
July 1-July 3- Discuss the impact of bug fixes and need/ideas around new features with all potential stakeholders. - Brainstorm approaches to optimize the implementations.
July 4-July 10- Identify and fix any bugs and code cleanup for Midterm Evaluation submission. - Run the tool and verify everything works as intended. - Check the bundle size and improve accordingly. - Submit for Midterm Evaluation. - Write progress reports and (or) blog posts and share with the community.
July 11-July 14Midterm Evaluation
July 15-July 20- Iterate on feedback provided. - Go through the feedback provided by mentors and fix, update, and (or) refactor the code if necessary. - Improve the UI for mobile devices (smaller screens). - Implement accessibility features like: 1. Volume Adjust buttons & sliders. 2. Aspect Ratio Guide Text Overlays and Presets (details under attached respective UI mockups). - Buffer to adjust the plans only if necessary after discussing with the mentors and stakeholders.
July 21-July 291. To keep the edited video visible after refreshing the tab, save its data in session storage. 2. Also, store the necessary data in an object and retrieve it after a page refresh. 3. Remember to clear the session storage data after the video has been saved. 4. Keep in contact with mentors throughout the implementation of this feature to make sure it's being properly implemented and no code structure issues occur. 5. Write progress reports and (or) blog posts and share with the community.
July 30-August 1Test Phase II - Write Tests for these new features (both frontend and backend, along with the respective patches): 1. Ensuring the video data is stored successfully. 2. We're able to retrieve it successfully. 3. It is retained after the page refresh. 4. It is cleared after the logout/session expires. 5. Progress is being retained/saved.
August 2-August 4Optimize and refactor the current approach for T262892 by utilizing FFmpeg's lossless editing capability to prevent a decrease in bitrate during video editing. - Thoroughly understand the FFmpeg's documentation for VideoCutTool's use-cases, understand the use of parameters, and how they affect performance. - Check for any device-specific optimizations and implement them.
August 5-August 12Implement New Features: 1. Basic Video Filters (B&W, Sepia). 2. Basic Text annotations/overlays. 3. Undo/redo Actions performed; (details under attached respective UI mockups). - With suggestions from the stakeholders. - Understand how these are implemented and used in existing tools. — The aim is to implement basic yet effective features - Document basic steps and guide for users. - Write progress reports and (or) blog posts and share with the community.
August 10 -August 13Test Phase III - Write Tests for the above new features; test cases (both frontend and backend, along with the respective patches): 1. A filter is being applied. 2. A filter is being changed. 3. A filter is being removed. 4. Text annotation is being added. 5. Text annotation is being removed. 6. Progress is being retained/saved.
August 14-August 16- Get the new feature implementations reviewed by mentors. - Ensure compatibility with devices and browsers. - Re-check the bundle size and improve accordingly if necessary, with discussions from mentors and community. - Write progress reports and (or) blog posts and share with the community.
August 17-August 20- Iterate over feedback. - Document changes made to the tool and write guide for users. - Fix new bugs if any occur.
August 21-August 28Final Week: - Add new minor yet important accessibility features: 1. Submit/Fetch/Check Button in the upload container. 2. Full Screen Mode. 3. Add proper ARIA roles (details under attached respective UI mockups). - Add tests for these features along with the respective patches. - Buffer; to fix any new bugs. - Re-check & verify VideoCutTool execution: 1. Run the tool and verify everything works as intended. - Write progress reports and (or) blog posts and share with the community.
August 29-September 3Add other Tests such as: 1. Smoke Tests for the VideoCutTool. 2. Fuzzing Tests. 3. Performance Tests. 4. Separate these tests (test-suits) from other tests (test-suits). - Discuss the respective results with mentors and community and optimize any code if necessary. Perform Final Checks: 1. Run the tool and verify everything works as intended. 2. Re-ensure compatibility with devices and browsers. - Finalize the work. - Submit the final work as per the guidelines from the GSoC website and mentors.
September 4Mentors submit final GSoC contributor evaluations.
September 5Initial Results of Google Summer of Code 2023 announced.
UI Mockups

Participation

  • I will utilize Gerrit for all activities related to development. I will also ensure the main codebase is always stable and working as expected.
  • I will be available to collaborate with my mentors during my working hours.
    • Weekdays: 09:00 to 13:00 UTC+05:30 and 14:00 to 20:00 UTC+05:30
    • Weekends (if necessary): 09:00 to 13:00 UTC+05:30 and 17:00 to 19:00 UTC+05:30
  • I will use Zulip Chat to communicate with them and respond promptly to any messages or requests for updates.
  • I will use Phabricator to manage bugs and subtasks for the project. I will create tasks for each bug or feature request and update their status regularly as I work on them. The Phabricator will help me keep track of my progress and ensure that all issues are addressed promptly.
  • In addition to being available on Zulip Chat during my working hours, I will also be available via Gmail to be contacted during non-working hours. I will respond to any messages or requests as soon as possible, but I may be unable to provide immediate assistance outside my working hours.

About Me

I am a final-year student pursuing my Bachelor's degree in Computer Engineering, a four years degree spanning eight semesters, from St. Francis Institute of Technology (SFIT), University of Mumbai, Maharashtra, India. I have completed Data Structures and Algorithms, Cryptography and Cyber Security, Web Development, Databases, Software Engineering, Machine Learning, Blockchain, and other CSE courses.

This is the first time I'm applying for Google Summer of Code. I learned about the Google Summer of Code program through blogs and posts on the internet and in detail from remote mentors. They shared their experiences and motivated me to apply for it this year.

I plan to commit full-time to the Google Summer of Code program and will not have any other work or vacation commitments during the program duration. Apart from semester exams in early/mid-May, I will be free to work on the project. I will prioritize the project and work collaboratively with the mentors and Wikimedia team(s) to achieve the project objectives.

I am not planning to apply for both Outreachy and GSoC programs at the same time. Currently, I am only planning for Google Summer of Code. And after a little bit more research about Outreachy and according to my schedules and commitments, I will consider applying for Outreachy to organizations that align with my interests and skills, and if the projects have a significant social impact.

As a longtime user of Wikimedia Projects/Services, I understand the importance of having a user-friendly tool for editing videos on the platform. Participating in this project and contributing to the development of the VideoCutTool will enable me to make a meaningful impact on the Wikimedia community and empower users to create and edit high-quality videos on the platform. It will also help me enhance my technical skills and gain valuable experience working on an open-source project with experienced and diverse mentors and the team.

Past Experience

  • Contributions (feature or bug fix) made by me for Wikimedia projects during the application phase:
  • Personal Projects:
    1. Covid19Helper (Prototype) - Online E-Commerce store for Medical Supplies. During Covid-19 pandemic the lack of Medical Supplies motivated me to build this prototype.
      • Tech Stack: ReactJs, MongoDB, NodeJS, MaterialUI. Also effectively utilized JavaScript, HTML, and CSS.
      • I learned state management in ReactJs and best practices for MongoDB for authentication.
    2. Educational Discussion Forum (Video Demo) - Full functional, feature rich Discussion Forum. (Group Project)
      • Tech Stack: PHP, MySQL, Apache Tomcat. Also effectively utilized HTML and CSS.
      • I learned PHP from scratch for this project, and I enjoyed the process. Today I see major frameworks shifting to PHP-like architecture.
    3. Weather App (PWA) - It is a Progressive Web Application (PWA) that provides Weather Information fetched from OpenWeatherMap API
      • Code: https://github.com/Pranav-yadav/weatherapp-pwa
      • Tech Stack: ReactJs, Express, NodeJs. Also effectively utilized JavaScript, HTML, and CSS.
      • I learned API integration best practices during this project, and the enjoyed the process of utilizing JavaScript.
  • Open source projects that I have contributed to:
    1. @facebook/react-native: React Native is an open-source UI software framework created by Meta Platforms, Inc.
      • I am actively contributing to the rewrite of the Parsers Modules; part of react-native-codegen, used by React Native to parse the ReactJs code into Native code for both IOS and Android. Over 12 PRs have been merged at the time of writing and currently working on a task of publishing an internal lib as a package on npm.
Below PRs are not directly merged on GitHub, rather managed on internal FB phabricator, hence GitHub shows as closed, instead look for Merged label and/or Squash commit comment added by the bot under the PR discussions.
  1. @sunflower-land/sunflower-land: Sunflowerland is a No. 1 Web3 Game on Polygon (Matic) Mainnet (Blockchain). I was an active contributor until the previous year. i.e. until the launch of the game. A huge number of PRs have been merged.

Learnings, and skills

According to me, one the best aspects of contributing to Open Source is one gets to learn something new with each new PR and from code-reviews, and knowing that your code is deployed and used by/serving millions and even billions of people.

  • While contributing to significant projects like React-Native and many others, I learned and am learning a lot about JavaScript best practices, Code Quality, and Robust Error handling and importance of Unit Tests/Test-Suits.
  • My main motive to contribute to Open Source is solving real-life problems with significant social impact toward better humanity and lifelong learning.
  • My current tech stack includes mainly but is not limited to ReactJs, TypeScript, JavaScript, Express, NodeJs
  • Databases: MongoDB, MySQL, Redis, and SQLite.
  • CSS Frameworks: TailwindCSS, MaterialUI, and Bootstrap.
  • I practice DSA and problem solving using C++ and Java
  • I have been using Python extensively for Machine Learning (ML) and Deep Learning (DL) activities.
  • In my free time; I love reading Tech/Engineering blogs, Swimming, and playing with our pet dog :)

Event Timeline

Hi @TheRealPranav, As the deadline for GSoC is quickly approaching in less than 48 hours (April 4th, 2023, 18:00 UTC), please make sure that your proposal on Phabricator is complete and has been submitted on Google's program website in the recommended format. Once you have done so, kindly move your proposal from the "Proposals in Progress" column to the "Proposals Submitted" column on the Phabricator workboard by simply dragging it. If you have any inquiries, please do not hesitate to ask.

Hi @Gopavasanth, thanks for the ping.
Just wanted to ask if is there any specific format for GSoC pdf file that needs to uploaded apart from the guidelines from WikiMedia?
Also, the direct print doesn't detect text so links are not clickable.
Is it allowed & correct to directly print (to pdf) the proposal and upload it on GSoC website?
Cc: @Soda

Also, let me know if you find anything incorrect or if there is need for improvement in the proposal.

TheRealPranav renamed this task from GSoC 2023 Proposal: Revamp of VideoCutTool to GSoC 2023 Proposal: Improve the functionality of VideoCutTool.Apr 3 2023, 12:55 PM

This looks great, only one/two small concern,

  • AFAIK, you can still code during August 28-September 4 so feel free clarify what you want to do during that time
  • Personally you shouldn't have a period to remove non-functional code and logs. These should not introduced into the code in the first place. Each commit should be fairly self contained, removing obseleted code and not spurious logs.

Thank you.

  • Yeah. I'll clarify about that.
  • Definitely. Obsolete code should not be introduced at the first place.

Addressed your feedback and updated the proposal.
Thank you.

@TheRealPranav We are sorry to say that we could not allocate a slot for you this time. Please do not consider the rejection to be an assessment of your proposal. We received over 100 quality applications, and we could only accept 9 applicants. We were not able to give all applicants a slot that would have deserved one, and these were some very tough decisions to make. Please know that you are still a valued member of our community and we by no means want to exclude you. Many applicants who we did not accept in previous rounds have become Wikimedia maintainers, contractors and even GSoC students and mentors this year!

Your ideas and contributions to our projects are still welcome! As a next step, you could consider finishing up any pending pull requests or inform us that someone has to take them over. Here is the recommended place for you to get started as a newcomer: https://www.mediawiki.org/wiki/New_Developers.

If you would still be eligible for GSoC next year, we look forward to your participation!