Page MenuHomePhabricator

Proposal: Improve the functionality of VideoCutTool
Closed, DeclinedPublic

Description

Profile Information

Name : Vishal Dhiman
Email : vishudhiman1900@gmail.com
Resume : Vishal's-Resume
Location: Chandigarh, India
Typical working hours:
On weekdays: 5 PM to 11 PM (UTC + 5:30)
On Weekends: 11 AM to 11 PM (UTC + 5:30)

Synopsis

  • VideoCutTool is a free web-based video editing tool whose main focus is to edit videos quickly and easily within Commons with just a few clicks, without needing to download and use external software and then re-upload.
    • The goal of this project is :
      • Adding new features / updating existing ones in the tool, to improve the user experience.
      • Fix existing bugs.
      • Write unit tests for frontend/backend
      • Reduce the build time for the tool
  • Possible Mentor(s) : Gopa Vasanth (@Gopavasanth), Sohom Datta (@Soda)
  • Have you contacted your mentors already? Yes

Deliverables

Here are the deliverables which this proposal promises to complete within the timeline.

Mid-Term Evaluation

By the midterm evaluation, the tool will be having:

  • A Pixel Perfect user interface (UI) that is visually appealing and easy to use on both web and mobile devices seamlessly.
  • Optimize the UI to reduce build time for developers, enabling them to focus on other tasks.
  • A feature that allows video persistence even after the browser tab is refreshed.
  • To address the issue of bitrate drop that occurs while editing videos to prevent quality degradation.
  • To ensure that the final video product is of the highest possible quality.
  • Add session management capabilities to the platform to store cookies and sessions.
Final Evaluation

In addition to the above-listed deliverables, the tool will also have the following features by the end of the GSOC-2023 program:

    • Enhance error notifications to provide more detailed information to the user, helping them to identify and resolve any issues they encounter.
    • Develop unit tests for both the client and server-side components of the tool using Jest or React-testing library, and integrate them with Jenkins or a similar CI/CD pipeline for continuous testing and deployment
  • Update the tool's libraries and dependencies to avoid deprecation warnings during build time

Timeline

PeriodTask
May 4 to May 28Community Bonding Period: My starting priority would be to thoroughly understand the VideoCutTool codebase and ask for help whenever needed. I would create my developer and Gerrit accounts to submit patches. I would also consult with mentors and experienced users to gather feedback on the website and identify areas for improvement beyond the project's scope. I will explore existing tasks and create new ones to enhance the UI and user experience.
May 29 to June 4Here in this period, I will analyze and identify areas of the tool that need improvement from the earlier discussions and create a plan for improving the user experience. I will start coding to implement the features.
June 5 to June 11During this period, I will work on implementing the planned improvements and optimizing the code. I will submit the code for review and feedback.
June 12 June 22During this period, I will identify the best approach for fixing the edited video back to commons. I will brainstorm different storage platforms or APIs . One approach could be to store the edited video instance in local storage.I will write the code to implement the task and ensure it is working as expected and that the video is saved in the correct location.
June 23 to July 2To enhance the user experience on mobile devices, I'll try my best approach to improve the dragging functionality of the progress bar in our video player. By implementing this feature, users will be able to easily adjust the duration of the video by simply dragging the progress bar.
July 3 to July 13During this period, my focus will be on finding a solution for the issue of bitrate drop. While there has been some improvement in this area through the T262892 task, it is clear that more research and discussion are required before it can be considered fully resolved. I understand that in any software, there is a threshold for maintaining a balance between quality and file size. It is difficult to maintain high quality at lower bitrates, But One potential solution could be to reduce the file size after editing is completed, similar to how WhatsApp compresses media files before sharing them. If this approach is feasible, it could be a viable solution to the bitrate drop issue.
July 14 to July 21During this period of time I would finish all the previous tasks up until now and clear any backlog if any exists.
July 22 to August 5Developer-friendly improvements: At this point, I have completed the major tasks on the website, which allows me to concentrate more on improving its overall functionality. Some of the enhancements that I have in mind include removing unnecessary dependencies, using 'react-toastify' instead of using react-bootstrap for notifications (a significant upgrade), and improving the existing notification box, which has some issues with text visibility. Additionally, I plan to work on editing functionalities, such as increasing video speed, adding text to the video, and giving more control over volume adjustments. By implementing these tasks, I believe that the website's usability will increase, resulting in more users performing multiple tasks on the site.
August 6 to August 15To improve code consistency and readability, I plan to add static type checks to the code base. One option for this is to use JSDoc, which is a type-checking markup language that can be useful for developers. Another option is to use TypeScript, which provides more advanced type-checking capabilities but may require an additional build step to transpile TypeScript to JavaScript. For this project, I am leaning towards using JSDoc to add type-checking, as it can provide benefits without introducing extra steps to the build process. By using JSDoc, developers will be able to quickly identify and fix type errors, improving code quality and maintainability.
August 16 to August 23Testing Using React testing library + Jest and integrating it with Jenkins-bot/CI: In the final week of the project, I will write end-to-end tests for both the frontend and backend, including testing API endpoints. - For unit testing, separate tests will be written for each component to check all possible interactions with the component, including data fetching. Jest and React Testing Library will be used for this purpose. - End-to-end testing will be conducted to mimic user interactions with the app from start to end, including edge cases, and to compare error messages and data fetching throughout the app. - The Wikimedia Commons API will be manually tested to ensure VideoCutTool interacts correctly with it by mocking API calls and checking fetched data. - Compatibility with all modern browsers and operating systems will be tested using the jest-puppeteer library.
August 24 to September 4Final Submission: I'm planning to complete all the tasks within their time frame. However, if some tasks remain unfinished, I will aim to fix them in this time frame alongside this, I’ll be addressing the code reviews received and will be working on them simultaneously, and will be going through the entire code base, just to ensure proper functionality and working of the tool.

Participation

I plan to communicate progress and ask for help, as well as publish my source code:

  • I will use Gerrit for code reviews, feedback, and managing source code.
  • I will use Zulip when I need assistance or need to discuss tasks.
  • I will use Phabricator for maintaining/tracking bugs and tasks.

About Me

  • I am pursuing B. Tech in Computer Science and Engineering (CSE) at UIET Maharshi Dayanand University Rohtak. I am currently in the final semester of the program.
How did you hear about this program?
  • I started writing code during my initial years of college. I have built various projects, and have collaborated on others as well. I learned about GSOC from my seniors who got accepted into GSOC. I talked to them, which made me realize how fun and exciting open source can be. So, I researched more about GSOC and started my preparation for the same.
Will you have any other time commitments, such as school work, another job, planned vacation, etc, during the duration of the program?
  • I will have my semester examination (early June) and practicals (end of May). Other than that I am free to contribute to Open Source.
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)?
  • No, I plan on participating only in Google Summer of Code 2023, with Wikimedia Foundation.
What does making this project happen mean to you?

I started contributing to open source in the past year only, and have been wanting to explore more in this field. With VideoCutTool, I shall be exploring this new world and will be helping others, making their work easier, like in this case editing their videos and displaying the results live to them. It will also give me hands-on real-time developer experience, which will be helpful for my career growth.

Past Experience

  • As an SDE Intern at a product-based startup, I have been actively contributing to various tasks assigned to me, utilizing my skills and knowledge in software development. Additionally, during my previous internship, I also made significant contributions to several projects, although the repositories were private, preventing me from publicly displaying my work.
  • While I understand the importance of showcasing my abilities through tangible examples, I am unfortunately unable to share my contributions publicly due to the private nature of the repositories. Nevertheless, I remain committed to demonstrating my capabilities through my current and future work and welcome any opportunity to discuss my experiences in further detail.

Other Projects

FaconApp
  • I have developed a mobile-first web application that caters to the needs of retailers and third-party customers to sell products online. This application has been built keeping in mind the requirements of the client and has primary features such as Login, Register, and Payment Method to make the online purchasing experience seamless for the users.
  • The application has been designed with two scenarios in mind - the user scenario and the admin scenario. This web application is a one-stop shop for online purchases, and its user-friendly design ensures that both the admin and the regular user can make use of its features with ease. The robust features, such as the admin panel and profile settings section, make it an ideal choice for retailers and customers who want to sell and buy products online.
Pizza-Shop
  • The development of a mobile-first web application for purchasing products online, with primary Login, Register, and Payment Method features, is a significant achievement in today's digital world. This application has been designed to cater to two scenarios, the user and the admin, to enhance user experience and improve efficiency. The real-time notification feature of this application is particularly noteworthy, as it keeps users updated on the status of their orders, from order placed to order shipped and delivered. While the application was mainly developed for pizza stores, its scalability allows it to cater to any business that requires an online purchase platform. Overall, this application is a game-changer in the e-commerce industry and promises to revolutionize online purchasing.

Event Timeline

Hi @Vishudhiman1900, 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.

Hey, feel free to expand on how the specific deliverables would be implemented

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