Page MenuHomePhabricator

Improve the functionality of VideoCutTool
Closed, DeclinedPublic

Description

Proposal for: https://phabricator.wikimedia.org/T327582

Profile
Name : Kumar Rishav
Time zone : UTC +5:30
Email : krishavbe@gmail.com
GitHub : Kumar-Rishav-py
College: Indian Institute of Information Technology, Nagpur, Maharashtra
Location: India
Primary Spoken: Language: Hindi, English
Working hours: 1:00 pm to 9:00 pm UTC +5:30
My Resume : Kumar Rishav

Synopsis

The VideoCutTool is an important tool used by Wikimedia volunteers to edit videos on the fly and re-upload them to Wikimedia Commons. This project aims to improve the functionality of the tool by fixing existing bugs, adding new features, and improving the user experience.
The primary focus of the project will be on improving the user experience of the tool by enhancing its user interface and adding new features to make it easier and more efficient for volunteers to edit and upload videos to Wikimedia Commons. In addition, the project will also address existing issues such as preventing bitrate drop during video editing and supporting persistence of edited videos after tab refresh.
To ensure the quality of the tool, the project will include writing unit tests using Jest and React testing library and integrating it with Jenkins-bot/CI. This will help to identify and fix any potential issues early on in the development process, ensuring the tool is reliable and performs as expected.
Overall, the project will involve working with React JS (front-end), Node JS (back-end), FFMEPG (video encodings), and Mediawiki Action API, requiring knowledge of JavaScript (JSX), and ideally some experience with MongoDB using the Mongoose ORM. The improved VideoCutTool will ultimately make it easier and more efficient for Wikimedia volunteers to edit and upload videos to Wikimedia Commons, thereby increasing the quality and accessibility of media content available to the wider Wikimedia community.
Mentor(s): Gopa Vasanth (@Gopavasanth), Sohom (@Soda)

Deliverables

• Fixing the edited video back to commons.
• Improve the user experience of the tool.
• Write unit test using Jest + React testing library and integrating it with jenkins-bot/CI.
• Support to persist the edited video after the tab refresh.
• Avoid bitrate drop (quality degrading) while editing videos (T262892)

Implement the Deliverables:

  • Fixing the edited video back to commons: I would use the MediaWiki Action API to upload the edited video back to Wikimedia Commons. The process involves creating an account on Wikimedia Commons, generating an API key, and using the MediaWiki API to upload the video file with the necessary metadata.
  • Improving the user experience of the tool: I would implement changes to the user interface to make it more user-friendly and intuitive. This would involve improving the design, adding helpful tool-tips, and enhancing the feedback mechanism to provide useful information to the user.
  • Writing unit tests using Jest + React testing library and integrating it with jenkins-bot/CI: I would write unit tests for the React components and the Node.js backend using Jest and the React testing library. I would also set up a Continuous Integration pipeline using Jenkins-bot to run the tests automatically on each code commit.
  • Supporting to persist the edited video after the tab refresh: To support the persistence of edited video, I would use the Local Storage API to store the video file on the user's computer. When the user refreshes the page, the video file would be loaded from the local storage and the user can continue editing.
  • Avoiding bitrate drop (quality degrading) while editing videos: To avoid bitrate drops while editing videos, I would use FFmpeg's video encoding capabilities to ensure that the output video file is of the same quality as the original file. This would involve analyzing the original file's metadata to determine the encoding parameters and then using these parameters to encode the output video.

Timeline

Period Task
May 4 to May 29Community bonding period. UI design for displaying the feedback messages with links to provide feedback on the suggestions. Designing UI mockups. Framing questions for the feedback form.
May 30 - June 12Research and analysis of user feedback, identify areas for improvement, and prioritize improvement. I will communicate with my mentors to establish the project goals, understand the codebase, and discuss project requirements. I will also read the relevant documentation and familiarize myself with the project's technical stack.
June 13 to June 19Implement improvements, including fixing React and Node package warnings/errors while building the tool. Begin working on implementing the ability to upload edited videos back to Commons by researching the Mediawiki Action API and working on integrating it into the application.
June 20 – June 26Add testing to the tool (T328928), write unit tests using Jest + React testing library, and integrate it with jenkins-bot/CI, by creating a test suite that covers the key functionalities of the application and integrating it with the continuous integration pipeline. Complete the implementation of the ability to upload edited videos back to Commons, by testing the integration with the Mediawiki Action API and ensuring that videos are properly encoded and uploaded to Commons.
June 26 – June 30Evaluation I
June 30 to July 7Work on improving the user experience of the tool, by updating the design and optimizing performance, using tools like React DevTools, Chrome Developer Tools, and Lighthouse. Implement streamlined editing process and make it more intuitive and user-friendly, by researching and implementing drag-and-drop functionality, and adding support for trimming, cropping, and adjusting video quality
July 8 to July 14Write automated tests to ensure that the new improvements do not introduce any bugs or regressions, by creating test cases that simulate user interactions and catch any edge cases that may have been missed.
July 28Evaluation II
August 1 to August 8Work on optimizing the tool to avoid bitrate drop while editing videos, by researching and implementing techniques for preserving video quality, such as optimizing compression, reducing frame rate, and using adaptive streaming. Write automated tests to ensure that the video quality is maintained, by creating test cases that simulate editing videos with different settings and ensuring that the quality remains consistent.
August 9 to August 15Continue to improve the user experience of the tool, based on user feedback gathered from the community, by implementing new features such as support for multiple video formats, adding keyboard shortcuts, and improving accessibility. Refactor code as necessary to improve performance and stability, by analysing the codebase and optimizing performance bottlenecks, such as reducing unnecessary renders and optimizing the use of state and props. Write automated tests to ensure that performance and stability are maintained, by creating test cases that simulate high load scenarios and ensuring that the application remains responsive.
August 16 to August 28Final testing and debugging, by writing end-to-end tests to simulate user interactions and catch any edge cases that may have been missed, using tools like Cypress and TestCafe. Prepare for submission and deployment, by writing release notes, updating documentation, and creating a package.
August 29Mentor submit final student evaluation. A blog post for my complete journey.
30 August and laterBe an active member of the community. Start code-based contributions in WMF. Explore other projects on WMF to contribute to. Participate in future programs as a volunteer and a mentor.

Project Details:

Overview:
As a contributor to the Wikimedia Foundation, I have chosen to work on the VideoCutTool project. This project aims to improve the tool used to edit videos on Wikimedia Commons. The tool is widely used by volunteers to edit videos and re-upload them to Commons. The project's goal is to add new features, fix existing bugs, improve user experience, and write unit tests.

Implementation:
VideoCutTool is built using React JS for the frontend, Node JS for the backend, FFmpeg for video encoding, and MediaWiki Action API. I will be using my knowledge of JavaScript (JSX) and experience with MongoDB and the Mongoose ORM to improve the tool's functionality. I plan to add a new feature that allows users to fix the edited video back to Commons, improve the user experience, and support the persistence of the edited video after a tab refresh. Additionally, I will focus on avoiding bitrate drops during video editing, which leads to quality degradation.

The project will be divided into the following tasks:

• Fix React and Node package warnings/errors while building the tool.
• Add testing to the tool using Jest + React testing library and integrating it with Jenkins-bot/CI.
• Improve the user experience of the tool.
• Fix the edited video back to Commons.
• Support for persisting the edited video after the tab refresh.
• Avoid bitrate drop (quality degrading) while editing videos.

Participation

To ensure effective communication and collaboration, I plan to use various channels of communication such as email, instant messaging, and video conferencing. I will communicate with my mentor on a weekly basis to provide updates on my progress and discuss any challenges I may encounter. Additionally, I will participate in weekly meetings with the Wikimedia Foundation community to seek feedback and guidance.
For communication, I will use channels such as Wikimedia Phabricator, and Wikimedia mailing lists to communicate with the Wikimedia community. I will also maintain a blog to document my progress and any challenges I may face, as well as to provide updates on my project milestones.
Regarding code publishing, I plan to publish my source code on GitHub, which is a widely used platform for open-source projects. I will maintain a public repository for my code and will ensure it is well-documented with clear instructions on how to run and deploy the tool.
Lastly, to ensure seamless collaboration and project management, I plan to use project management tools such as Trello and Asana to track my progress and manage my tasks. This will help me to stay on track with deadlines and ensure timely delivery of the project

About Me

I am currently in the 2nd year of my Bachelor in Technology Degree from the prestigious Indian Institute of Information Technology, Nagpur (IIITN). I have been tinkering with code since high school. I love working on web apps, making web apps more enjoyable and interactive. I have spent many of my nights up hacking on such projects. I also enjoy Web development and have developed many projects also.

What inspired me to work on this project is that, as an individual who is passionate about open source software development and believes in the power of technology to drive positive change, I was inspired to work on this project for several reasons.
Firstly, I have always been interested in video editing and find it to be a valuable skill for both personal and professional endeavours. Therefore, the opportunity to contribute to the development of a video editing tool that is widely used by the Wikimedia community was something that immediately caught my attention.
Secondly, I am a strong believer in the importance of open access to knowledge and information. Wikimedia Commons is an excellent example of this ethos in practice, as it provides a platform for the sharing of media files, including videos, with anyone who has an internet connection. Contributing to a project that supports this mission was an opportunity that I felt compelled to pursue.
Lastly, the challenge of improving the VideoCutTool and adding new features appealed to me as a developer. The project involves working with several technologies, including ReactJS, NodeJS, FFMEPG, and the MediaWiki Action API, which presented an opportunity to expand my technical skills and knowledge.
Overall, the chance to work on a project that combines my interests in video editing, open access to information, and software development was a significant motivating factor for me to pursue this opportunity.

My Resume : Kumar Rishav

Past Experience

I have experience in working with C++, C, Python, HTML5, CSS3, ReactJS, NextJS, TypeScript Among databases I mostly worked on mysql and MongoDB. Among OS I mostly work in windows and Linux .
Some recent project I worked on:
Create a web application that automates the room allotment process for my college. The application will handle payment processing and allow users to select their preferred room and occupancy level. You will use HTML, CSS, and JavaScript for the front-end, Node.js for the back-end, and MongoDB for the database. The application will also feature a room availability calendar, room change requests, and automatic email notifications for payment confirmation and room allocation.
The Shopping Website project is a web application built using HTML, CSS, JavaScript, Git, MongoDB, NodeJS, and ExpressJS. It allows users to purchase organic products online by placing orders through the website. You implemented features like user login, add to/remove from cart, and admin functionality to add and manage products. The project showcases your web development skills and collaborative abilities.
The Sorting Visualizer project is a web application built using JavaScript, HTML, CSS, and Bootstrap 5. You developed this application using React hooks to visualize various sorting algorithms like Quick Sort, Merge Sort, Insertion Sort, Bubble Sort, and Heap Sort. Additionally, you upgraded the visualization to include Recursion, Divide and Conquer algorithm, Heap, and other relevant concepts. The project showcases your skills in developing interactive web applications and your ability to work with various sorting algorithms.

Event Timeline

Improve the functionality of VideoCutTool

RishavKumar088 renamed this task from Insert project title here to Improve the functionality of VideoCutTool.Apr 3 2023, 6:35 PM

The proposal looks good, I think it would be great if you could expand more on how you would implement the deliverables

Hello sir,
I have done suitable changes based on your suggestion. Kindly review and give your suggestions .

Thank You
Kumar Rishav

Hi! GSoC application deadline has passed. If you have submitted this proposal on the GSoC program website and would like your proposal to be considered for review, please move it from the "Proposals in Progress" to the "Proposals Submitted" column by clicking and dragging it on the workboard:
https://phabricator.wikimedia.org/project/view/6344/. TY!

@RishavKumar088 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!