Page MenuHomePhabricator

GSoC19 Proposal : Tool to cut videos in Commons
Closed, DeclinedPublic

Description

Profile Information

Name : Sominee Gupta
IRC nickname on Freenode : littleBuddhaa
Personal Web Page : https://littlebuddhaa.github.io/
Github : https://github.com/littleBuddhaa
Resume : Resume Link
Location : India (UTC +5:30)
Typical working hours : 3PM to 1AM (UTC +5:30) and 6PM to 1AM (UTC +5:30) (on college days)

Synopsis

  • Wikimedia Commons offers data in huge amount and variety, being shared every second. Since downloading a video, editing it (like cutting, cropping etc.) requires a lot of time, data and efforts. To tackle such problem, this tool will exclusively be made for Commons, from scratch. The project aims at making a tool which cuts and ccrops the video online, without making the user download it. The video can further be used directly to post on Wikimedia Commons. It will be easier and faster for the volunteers who edit videos locally, and want to use a part of a video in another Wikipedia Page. It will also benefit the users who want to download a small part of any Commons video.
  • Mentors : @Doc_James , @Hassan.m.amin , @Rogueassasin123 @maskaravivek
  • I have contacted the mentors already here T217503

Deliverables

Phase I Deliverables

  • Early and robust design of the tool
  • Creating Tasks in Phabricator.
  • Create boilerplate UI templates and start Backend APIs
  • Register/login using OAuth with mediawiki account
  • Access and upload videos via Wikimedia Commons
  • Support trimming Video based on timestamps with basic UI
  • Support cropping predefined Aspect Ratio of videos with basic UI

Phase II Deliverables

  • Support Custom (free) cropping of video
  • Supporting preliminary validations (user authenticity, duplication, original video validation etc.)
  • Improving the UI for both cropping and trimming feature
  • Populating metadata for new videos
  • Override via tool: title, file description, file categories
  • Prepopulate some data using original video: To be decided
  • Track derivatives using metadata
  • Video Processing progress tracking
  • Writing easy-to-read documentation and user guide of the tool.
  • Create a Commons page about the tool for receiving suggestions for future enhancement.

Timeline

PeriodTask
May 6 to May 27 Community bonding period. Studying existing tools for uploading/accessing media to/from commons. Study external tools for cropping video and identify key features. Learn more about ToolForge and study few existing tools already hosted. Planning the design of the new tool including both the frontend and the backend. Adding and structuring the corresponding tasks in Phabricator.
May 27 to May 31Creating early and robust design of the tool. Create tasks in Phabricator. Learn about Mediawiki OAuth and Commons API
June 1 to June 8Create the initial UI template, and start working on backend APIs. Implement Register/Login using OAuth with Mediawiki Account.
June 8 to June 16Access and upload videos of Wikimedia Commons to the server using URL of video. (or URL of page since it is easier for the user (to be decided). In this case, scrape for the video link in the page). \n Initial validations and error handling--> link exists, video belongs to Commons. Extract useful information from the link (title, id, format etc)
June 16 to 22a) Support trimming of Video based on timestamps provided by user (using FFMPEG) . b) Support cropping of Video based on predefined aspect ratios, also using FFMPEG. (reference https://ffmpeg.org/ffmpeg-filters.html#crop ). Minimal UI implementation.
June 22 to June 24Testing Round 1: Unit tests, integration tests, bug fixes and documentation.
June 24 to June 28Phase I evaluation
June 28 to July 10Implementing proper UI for trimming of video. Showing a visual timeline with stills of the video. Implementing a slider for starting and ending point. Playing a part of segment of the video. UI reference similar to https://online-video-cutter.com/
July 10 to July 21Implementing UI for custom cropping of video. Provide the user a free window layer over the video.
July 21 to July 27Testing Round 2: Unit tests, integration tests, bug fixes and documentation.
July 22 to July 26Phase II evaluation
July 26 to August 7a) Populating metadata for new videos i Override via tool: title, file description, file categories etc. ii) Prepopulate some data using original video. b) Posting the new video to Commons using its API. Check for duplicate, handle errors.
August 7 to August 14a) Video Processing progress tracking for the user b) Writing easy-to-read documentation and user guide of the tool.
August 15 to August 19Testing Round 3: End-to-end tests for the tool, robustness and performance testing and bug fixes
August 19 to August 26Freeze the code. Create a page in the Wikimedia Commons on our tool where people can suggest new features. Announce the tool to the Wikimedia community somewhere on Commons.
August 26Mentors submit final student evaluations.
September 3Final results of Google Summer of Code 2019 announced

Participation

  • This tool will run on Toolforge as decided by the mentors. All the source code and contribution will occur there.
  • During working hours I will be available to communicate over Zulip, IRC, Phabricator, whatever suitable to the mentors. I can also be contacted on Gmail during working or non-working hours.
  • I will update the mentors frequently about the tasks and deliverable.
  • I'll stick around even after the completion of GSoC internship. I'd like to see this tool being hosted, improved upon and be useful to the users. Also, I will explore and contribute to other Wikimedia projects after GSoC.

About Me

  • Your education (completed or in progress)

I am currently a 3rd year student in Indian Institute of Information Technology, Allahabad, where, I am enrolled in a Dual Degree course consisting of Btech in IT and Mtech in Human Computer Interaction.

  • How did you hear about this program?

I heard about GSoC in the initial years of my college from the seniors. There has always been an encouraging culture towards open source here. GSoC being one of the most prestigious opportunities to learn and explore, I wanted to be a part of it. This is the first time I am applying 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 one college group project worth 10 credits to be completed during the summer vacations (2Hrs/day). Apart from that, I will prepare for upcoming campus internships held after the vacations (2-3Hrs/day).

  • 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 came to know about outreachy a little too late, and could therefore not invest efforts there. I haven’t applied for Outreachy.

  • What does making this project happen mean to you?

I love Web Development! I was instantly attracted to the project when I discovered it. And since this project is to be made from scratch there is freedom to explore on your own and improvise. I also get to do the UI for a video editor-like tool, something that I haven’t done before and I am greatly looking forward to. Also, this is a tool which will be helpful to many Wiki users hence I’d love to be a part of it!

Past Experience

  • I have worked in Python, C, C++, Java, Flask, Angular, Html, CSS, Javascript, PHP. All the websites I have worked on are listed in my Github. I have gained experience in Web Development over a course of time, which now I really enjoy.

I created a mini project in Python-Flask for this project. It solves a part of this video editing tool. This project takes the URL of a video hosted online, uploads to the server and asks the user for start and end time for the cropped video. The cropping is done using FFMPEG. And the new video is again stored back to the server.
I implemented this project to get a basic understanding of workflow and using FFMPEG, and get suggestions from the mentors. Also, during the making, I had thought of various other extensions that could come handy.
I have a demo for this attached in the above link provided.

  • Other Open source organization contributed to :

I have been associated with Systers since a past few months now. Systers is a community under Anita B.org, encouraging the participation of all women involved in technology. It is the first open source organization I’ve been a part of. I follow their mailing list, and attend their open community sessions whenever I can. Some of the contributions I’ve made :
https://github.com/systers/systers.github.io/pull/350 - This is the major contribution I made to Systers opensource website, integrating it with Github’s REST API.
https://github.com/systers/systers.github.io/pull/354 - Improvements in the same.
https://github.com/systers/systers.github.io/pull/360 - Involves JSON response request handling in Angular.
https://github.com/systers/systers.github.io/pull/357 - Angular service for autoscroll functionality.
https://github.com/systers/systers.github.io/pull/347 - UI enhancements
https://github.com/systers/systers.github.io/pull/348- UI enhancements

Any Other Info

Related Objects

Event Timeline

@LittleBuddhaa Awesome work! I've read your proposal and no further changes are required :) you can move your proposal to the submitted column. Thanks!

Thank You for the review @Hassan.m.amin., I'll draft it right away. :)

(look for next steps in the email you'll receive shortly with an option to request for a debrief on why your proposal was not accepted)