Embracing “open source” at a for-profit business, and why it is a better idea.
By: Arnav Gupta
Tags: Edtech, Programming, Open Source, Software Development, Coding Blocks

The team: Open Source is a culture

I have a strong background in working with large open source projects. I always loved delving into projects like the Linux kernel, the Android OS, frameworks like JBoss, the Arduino ecosystem, to name a few. The “how did they put it together” question always fascinated me, and soon after starting to use these systems, I would find myself looking in and trying to find what I can tweak or tinker with. What started with trying to overclock my first Android phone, lead me to work with and for mobile OEMs like Sony and Micromax, and there are a bunch of Micromax phones out in the wild with significant parts of the Launcher, Camera and Lockscreen coded by me. Off late I have been involved with less low-level-system, and more application oriented projects like FOSSASIA’s open-event project and the JS framework Vue.JS

Being in touch with a vast network of similar open source enthusiasts, and being someone who very vocally and unabashedly embraces the open source community, automatically many of our recent hires at Coding Blocks have been people just like me — Harshit (Harshit Dwivedi) and Aayush (aayush arora), FOSSASIA contributors, who are first rate android and web developers respectively, Umair (Umair Khan), (he just left, after a 10 month stint with us, to work for Flock @ Directi), who headed our engineering products, being an AOSP and FFMpeg contributor with an enviable github profile, Prajjwal, who is the a living incarnation of the geekiest stereotypes you see in the Silicon Valley sitcom (we hired him literally because I immediately liked that fact he had a git repo for all his system configuration .dotfiles), and Anuj who was a core contributor to JBoss, has started a programming club at Noida, and runs a bunch of Java related programmes at our Greater Noida location.

Some of CodingBlocks’ team of bright and young interns and developers

The culture rubs off. Most of our interns (almost all of whom are former Coding Blocks graduates — and the best performers in their classes), are also growing into software developers with strong independent profiles, with lots of interesting open source and released-in-the-wild projects under their belts. The list includes Abhishek (Abhishek Gupta) , Siddharth (Siddharth Dungarwal) , Rishabh (Rishabh Khanna) , Bhavya, Apoorva, Naman, Varun, (another)Abhishek, Piyush among many others.

Open is better than closed. Always

What I believe, the biggest advantage, working in open, brings to the table, is that people can relate to what you’re doing, suggest improvements, and actually contribute to your product directly via code submission, and get a sense of fulfillment out of it.

Android Developer Day and GSoC meetup with JP Souchak and Akash Shukla from Google.

We ran a programme — BOSS (Bountiful Open Source Summer), in the lines of Google’s Summer of Code programme, and got such a great response, that we surprised ourselves. Our online IDE was built entirely by outside contributions, with almost 0 employee time spent on it.

There are so many other projects, that are open source on our github that actually form part of the core set of tools on which our e-Learning infrastructure runs.

“Intellectual Property” — really now ?

I have had the fortune of speaking at quite a few large tech conferences like JSFoo, DroidCon, 50p, Fragments. One common theme among them ? Or rather two? a) They are some of India’s best tech conferences with really really good set of talks and topics. b) They are all hosted by HasGeek. Kiran, Zainab, Hari, Sandhya, Karthik and everyone else from HasGeek has always been an inspiration for me, the way these guys have been running it, and I always used to wonder why and how they have built all of the tools they use in a transparent and open source fashion. They even have a slack channel where everyone can join in and chime in to various threads of discussions going on. I only realised the power of openness when I couldn’t use the DroidCon 2015 app properly, and ended up spending weeks sending PRs and improving.

It is easy to pass remarks like “businesses cannot open source their proprietary technology”, and act like lawyers with something stuck up your ***. It is what we have been seeing and hearing all the time “intellectual property”. It is what we have inherited from the 90’s Microsoft dominated software legacy. But the fact is today, open source is eating up the software world. What are the frameworks and platforms popular today? What is it that is used to build 2020 century products ? Android, ReactJS, Electron, NodeJS, Swift, Kotlin . . . you name it — they are all open source technologies. Some are supported by large companies, some are even the very backbone of large software companies (Android is big deal for Google, similarly Swift for Apple). And they are not just “open sourced”. They are actively “built in open source”, with huge amounts of public scrutiny, public code reviews, and entirely external contributions. The king of open source haters, Microsoft, couldn’t stay away from this, and open sourced .NET core, and is investing into technologies like Typescript, which is a fully open source outing for them.

Does that mean Google is open sourcing their PageRank algorithm or Apple is open sourcing the latest Bionic chip kernel source? Or is Facebook showing their hand on how they manage the real-time data layer (they only show your React, the frontend, and a convoluted pHp based HVVM backend engine — but what powers the data layer? Except from GraphQL, that magic sauce is secret). So, yes, there is a place for “intellectual property” and “proprietary code” arguments. But for the thousands of small startups building me-too products, which are just CRUD apps consuming a REST API, seriously, there is nothing to hide here. Make it open source, embrace the community, get people involved. Spread some ❤. Lastly, I would say this — if your ‘IP’ lies in your frontend, I don’t think you are building any great “tech product” out there my friend.

Open Sourcing = Best way to enforce good code standards™

Building products open source, has an advantage that is unparalleled. When we open source our projects, it adds the responsibility to keep to easy to understand for the “outsiders”. Guess what, better documentation for “outsiders”, also means better documentation for “insiders”.

A meetup of GSoC students and mentors in Delhi, organised at Coding Blocks

Also, from a security standpoint, most of our projects have become potentially more secure, by open sourcing them. And no, I am not speaking of “more eyes on it” type of security. When you publish your code out in the open, you are forced to decouple your passwords, your keys, your certificates from the logic. You do not rely any more on “security by obscurity”, which is a very bad habit, closed source projects tend to develop.

Also when you know you will be receiving external contributions, you automatically invest into continuous integration and deployment, automated reviews and other automation measures. The technical ‘credit’ (yeah I just coined this, opposite of technical debt) you accumulate by having CI/CD from day 1, is unimaginable in the long run.

Your “content” isn’t your USP. Your delivery is.

This, in the ed-tech industry, is something I realised, and was surprised to see, how very few people actually get. The fact is, there are many many many many people out there, who have become successful, have lived their lives, are content with what they have and now want to give back™. You cannot commercially compete with people who have no financial motivation. So whatever your education business be — whether you are teaching people to code, or basic math or science, THERE WILL ALWAYS BE BETTER CONTENT AVAILABLE FOR FREE. Let that just sink in.

We teach people how to build Android Apps. What about the code that I write in class, should I share it with the students openly, or only allow access through a secure channel? Well guess what, there already are better examples available on the internet.