Google Summer of Code 2018 - CloudCV

The mail on 23 April 2018 read “Congratulations, your proposal with CloudCV has been accepted” and all the hard work since the last two months was quite worth it!

What exactly is GSoC?

Google Summer of Code is a global program sponsored by Google Inc focused on introducing students to open source software development for the open source organizations. Students work on a 3-month development project with an open source organization under some mentors.

Or let’s just say this picture says it all …

GSoC Statistics

What’s next?

Getting selected in GSoC is the first step towards a long journey, next is to work my way up to the end of it. During my GSoC period I will be releasing a series of blog posts describing my progress and experince with CloudCV. This blog post is the first entry in that series!

I will try to keep my blogs as technical as possible so the reader also gets to learn something. But in this blog post let’s just talk about my project and experince till now.

GSoC 2018 Project

Origami

For GSoC 2018 with CloudCV I am working towards the Improvements of Demo Creation pipeline in Origami. Origami (previously called CloudCV-fy your code) is an AI-as-a-service solution that allows researchers to easily convert their deep learning models into an online service that is widely accessible to everyone without the need to setup the infrastructure, resolve the dependencies, and build a web service around the deep learning model.

My project mainly revolves around the following goals

  • Setting up CI/CD pipeline for Origami.
  • Propose and Implement a new demo creation pipeline for Origami.
  • Implement popular models demos using Origami.
  • Fix existing UI and Core issues.
  • Provide REST API access for Origami.

Here is a link to my GSoC proposal.

What was this phase about?

The first three weeks of the program as Google calls it Community Bonding Period is the period where the student gets to know the Organization and mentors. In an open source environment like during GSoC you cannot expect someone to come up with a product all by himself, you need help and inputs from others to build a better product and thats what this period is for, to know the community better. So most of the work one had to do during this phase is familiarize with the codebase and mentor.

CloudCV is very good at micromanagment when it comes to meetings, discussions and workflows. Every week there are 3 scrum meeting at google meet where everyone answers to these three questions

  • What was their progress?
  • What is their goal before the next scrum?
  • Is there something blocking our progress?

We try to keep is short so it does not block someone and everyone can evaluate their progress.

Apart from the scrum meetings a sheet is maintained for each GSoC student describing goals, progress and timeline for their project.

![Google sheet GSoC progress]({{ “/assets/images/phase1gsoc.png” }})

Progress

My goals during community bonding period were to update README along with Contribution guidelines for Origami and proposing and brinstorming a solution to implement CI/CD pipeline for Origami. For implementing an automated integration and deployment architecture we had lots of choices for example Jenkins, buildbot and goCD. All of these provide reliable solution for our problem.

After listing pros and cons for each one of them and keeping in mind our use case we decided to use Jenkins as our CI/CD solution due to its rich plugin support and high popularity. BuildBot also looked quite promising in this context due to its awesome python scripting support and popularity among some big open source softwares like OpenCV.

In the Next phase I will be working on setting up the CI/CD pipeline to automate deployment using Jenkins for Origami and creating a new demo creation pipeline. Stay Tuned!