Videoodyssee System Refactoring – GSoC’22

Introduction

Hello folks đź‘‹,

I’m Vijay. In this summer I will be working on the project ‘Videoodyssee System Refactoring’.In this first blog post I would like about my project and little bit about me.

About me

I’m Vijay Reddy , a Computer Science undergrad from India. I’m interested in Web application security, Computer Architecture and Blockchain Security. I do play CTF’s in my free time to learn about the latest security vulnerabilities and to learn new skills.

I’m new to the open source world and I found it really fascinating to work with communities around the world which are making the world a better place.I’m also fascinated by the idea of writing code which will be used by thousands of people around the world .Open source contributions will allow me to work with new people and make connections with cool people around the world which will be helpful for my career.

About Videoodyssee

In 2017 we started our video portal for freifunk at media.freifunk.net. To get videos online we have a more or less complicated upload workflow:

  1. Upload video file to a processing server.
  2. Correct video file settings.
  3. Convert video to target formats.
  4. upload to CDN and Youtube.
  5. Publish the video to the media portal.

The following systems are involved:

  1. Videoodyssee Uploader – a web portal to upload video files built with Spring Boot, Thymeleaf, CSS, JS, Ansible, and Maven
  2. Videoodyssee – the processing server, built with bash scripts and python
  3. lambdacd pipeline – controls the workflow, built with Clojure, Leiningen, and LambdaCD
  4. mirrorbits – the CDN, built with Go
  5. voctoweb – the media portal, built with Ruby, HTML, CSS, JS and puma

As of now, it is possible to upload new videos, but the process is not comfortable. So we need to improve the software.

Problems with the current Videoodyssee System:

  1. With current lambdacd pipeline we can’t have multiple workers to enable parallel video processing.
  2. The current lambdacd pipeline isn’t maintainable anymore and it has got a lot of dependency issues.
  3. Currently we don’t have any video verification steps in our publishing workflow which leads to publishing of unwanted videos.
  4. Currently there isn’t any feedback mechanism implemented in the front-end part so whenever a user uploads a video using Videoodyssee uploader, the user will not get any feedback on whether the video is uploaded , processed and published or not.

Project Milestones

  • Reimplement the video processing pipeline using a better and maintainable CI/CD tool which supports multiple workers for parallel processing:
    • Replace lambdacd pipeline with a better-maintained work flow system.
    • Update the processing pipeline scripts to make them work with the newest versions of tools like FFmpeg.
    • Reimplement the video processing pipeline with those updated pipeline scripts using the new CI/CD tool.
  • Add publishing workflow to prevent the publishing of unwanted videos.
  • Implement video processing feedback mechanism in the Videoodyssee uploader so that the user will get notified when each step of the video processing pipeline is finished.

Community Bonding Period:

In the community Bonding Period I have familiarised myself with my mentor Andi Bräu and discussed a lot about the project.

In this 3-week community bonding period , I evaluated different CI/CD tools with my mentor to find out a perfect CI/CD tool that fits best for our video processing pipeline and found out that GoCD and Jenkins will be perfect for our usage.

In the first week of the coding period, I will implement a sample pipeline using both of these tools to evaluate the performance and convenience of these tools , then I’ll choose one for implementing our video processing pipeline.

And finally , I would like to thank my mentor Andi Bräu for his incredible support and feedback.