Emmanuel Apau is Chief Technology Officer at Mechanicode. He’s been in the DC tech space for 10 years, mostly doing software development, DevOps, and AWS certified work.
He has worked extensively with open-source technology as a part of his consultancy and projects.
We asked Emmanuel to provide a beginner’s introduction to:
- What open-source technology is and why the movement is so popular
- The benefits of open-source technology (particularly for startups)
- Best practices and advice for getting started with open-source
What is open-source vs. proprietary technology?
Open-source is coding done in a public setting. There are codebases in GitHub or GitLab where anyone can go in and look at the source code. It’s free. Anyone can make a pull request to merge updates or make their own custom edits to the application.
A popular enterprise example is Kubernetes. It’s super open, super popular, and backed by the Google team.
Proprietary, on the other hand, is more of a black box software development methodology where you don’t provide the source code to anyone. Maybe you provide an API so people can interact with your application, but no one knows what’s going on in your back-end.
It’s usually a paid service being built by a company.
What are some benefits of open-source technology? Who receives value from open-source – startups, enterprises, up-and-coming developers?
I’d say all of the above are benefiting from open-source technology.
As developers, we tend to reinvent the wheel a lot. If you have a conversation with 10 developers, you’ll find out that a lot of us have built the same features over and over again. These open-source libraries help expedite that.
Let’s say you want to build a content management system (CMS). There are a lot of content management systems out there. And a lot of them are still being built by proprietary teams.
But you can go to open-source.
For example, if you’re a Django fan, there’s one called Wagtail that I’ve used in the past. It’s completely open-source and they’ve built a CMS that you can lift and install into your own ecosystem and customize from there.
It dramatically speeds up development time. You’re not reinventing the wheel. There are a bunch of common features you can use and then customize additional features you need.
I’ve used Wagtail for the Consumer Finance Protection Bureau website. It shows that open-source tools are being widely used by agencies, universities, and many more enterprise scenarios.
Apple used Xcode to develop iOS and cross-platform applications. It was something they guarded in their safe house for a long time. Recently they decided to make Xcode open-source. Do you think developers are pushing this open-source movement or are consumers demanding more?
If I had to pick, I’d say developers are the ones pushing the agenda.
A lot of times, to bring a new tool into your development ecosystem, you have to fight for it. You need to justify its benefits.
Being open-sourced can alleviate that argument because we can see the code. We can see if there are bad-actor features going on. We can see if there are any holes. We have full control over what we’re bringing into our ecosystem. Contrast that with a black box tool where you don’t know what it’s doing behind the scenes.
I view open-source libraries as a toolbox.
Institutions are building toolboxes and saying “Here, we have all these tools. Go and build something cool with it.”
People get hung up building their own tools instead of building the product.
In the past decade, you’ve seen open-source platforms like Linux, Android, and ChromeOS. Do startups and enterprises benefit more from open-source vs. closed IP?
I would say so because the main thought at a startup is to “build things quickly and test.” It’s hard to build things quickly when you’re still building the toolset.
You can skip a lot of steps in getting your product to the finish by using open-source tools.
Plus, you likely don’t have a lot of money when you’re a startup. You might not be able to afford the proprietary tools. Open-source tools have helped speed up the time for startups to go from MVP to a final product for sure.
You’ve dabbled in your own open-source technologies. What are some of the best industry practices when using open source tools?
First, I hope that open source tools begin to focus on documentation more.
That’s always been a sore point when it comes to open source libraries.
If I have a tool that I’ve built for myself, documentation might not be high on my list because I understand what’s going on. But people might need more detail to get a full understanding of your software.
I wrote a blog recently about standing up multi-cluster elastic search using Open-Distro. I felt I needed to write the post because their documentation was a little lacking to resolve some of the nuances I had when trying to spin up a cluster.
Second, have your issues sorted by difficulty, and labeled by type if you want collaboration.
There’s a minimalistic Python webserver tool called Falcon. They do a great job of sorting their issues out on GitHub so you know the simple issues you can knock out quickly and the more complex problems with the server that you can be aware of or even help them with.
You can look at their repo, identify the issues, and create a plan from there.
What are some good practices to know when getting started with open-source?
- Put a license in your repo
A license establishes how you want people to use your software. Like whether they’re allowed to copy or change any code in your repo without your consultation. It protects you from a legality perspective.
- Use Github sponsors
Github sponsors is a way to tip or sponsor the developers building the tools you use. In the open-source world, a lot of people are working for free. You run the risk of using a tool that’s someone’s passion project. Then when life happens, they don’t have the time to work on that tool.
Then you go a year or two without updates.
Sponsoring the developers can help support them to have enough to be paid to manage it.
- Documenting how to use your tool
Add documentation on how to use your tool, including rules of collaboration. There’s usually a file called CONTRIBUTING.md that defines the steps to follow if you’re going to utilize the repo.
Why is it important to contribute to open-source technology? What advice do you have for people who are getting started?
I think attempting to contribute to open-source projects is important.
I view open source projects as a group project. It’s just a very big open public group project. With every group project, you have people who do more work than others.
The main contributors do most of the work, but everyone makes an impact with their contributions.
It’s a great experience for people who are in school. If you Google popular open-source projects, you’ll find a whole list. Then look at the repo, put out your pull request, and try to contribute.
It is the internet, so be wary of the comments you might get. But it’s a learning experience that will be beneficial for your future professional career.
It adds credibility as a technical resume. Open-source is popular. It’s to your benefit to contribute back to the ecosystem that we take so much from.