There are now more than two million open source projects on Github, the world’s largest open source collaboration platform. With recent acquisitions of Gaug.es and now the GitLab API, we can help you create an interactive infographic displaying the data for any or all public open source projects on Github.
In this article, I am going to discuss how you can find out the number of active open source projects on Github. I am also going to share with you two methods you can use to determine how many open source projects are currently hosted on Github.
Find Your Motivation
It is almost impossible to game the GitHub Trending section:
GitHub’s definition (of trending) takes into account a longer term definition of trending and uses more complex measurement than sheer number of stars which helps to keep people from farming the system.
Founders often create startups based on problems they have personally encountered. With open-sourced code, you will likely be trying to solve problems that developer commonly have.
And since gaming the GitHub Trending section is almost impossible, you need a strong motivation – a big, common developer problem – to work on. So how do you stumble onto a developer problem?
Well, for starters you can participate in hackathons, build projects, and experiment with other projects. And you will soon find something which could be made into a library, something you could make a utility out of, and so on.
Your motivation for building your project could come from anywhere. In my case, I explore new Machine Learning papers daily on arXiv (an open-access archive for papers) and read the ones I find interesting. One such paper I read motivated me to build my Python package.
Another time, I was in a hackathon training a Machine Learning model and wanted to participate in other festivities. Our team then decided to build another open-source project called TF-Watcher.
So you see, you’ll likely find all sorts of issues you can work on when you’re building a project.
And just to note – when I say you should have a strong motivation, I do not mean the project should be really huge or really complex. It could certainly be a simple project that could make developers’ lives easier.
Think about it this way: if there was a project like the one you want to develop, would you use it? If the answer is yes, you have enough motivation to build the project, regardless of the size or complexity.
Tinode Instant Messaging Server
The Tinode Instant Messaging Server, on the surface, looks similar to WhatsApp or Telegram. Backed in pure Go, it is meant as a replacement for XMPP and Jabber. Its goal is to create a modern open platform for federated instant messaging, focusing on mobile communication. Additionally, in line with the recent controversies around privacy concerns, Tinode Instant Messaging Server aims to create a decentralised instant messaging platform that would be challenging for the government to track and block.
At present, Tinode is available in English, Chinese, Korean, Russian and Spanish.
Research Your Idea
Once you find a developer problem you want to solve and have enough motivation to start working on it, you’ll ideally want to spend quite a bit of time doing your research.
I believe it is a good practice to try and answer these questions through your research.
NocoDB is the open source alternative to Airtable. It turns any MySQL, PostgreSQL, SQL Server, SQLite and MariaDB into a smart spreadsheet. The idea behind developing NocoDB is to provide a powerful open source and no-code interface for databases to digital businesses across the globe. It is focused towards democratising access to powerful computing tools.
NocoDB requires a database to store metadata of spreadsheet views and external databases.
Does a similar project or tool already exist?
If it has not been done yet, and there’s a need for it, go ahead and start building it.
If something similar exists, is well developed, and is heavily used too, you might want to move on.
There are a huge number of open-source projects out there already, and it is quite common to find a repository doing similar stuff (more common than you would think). But you can still work on your project and make it better.
Google’s SDK to create user experiences for mobile, web and desktop from a single codebase, Flutter works with existing code. The open-source UI software development kit is used by developers and organisations across the globe. Flutter composting capabilities allows one to overlay and animate graphics, video, text and controls without limitations. It also includes a set of widgets to allow the delivery of experiences on both iOS and Android ecosystems.
Flutter works with any development tool and is a fully open-source project.
If something similar does exist, can your project make it better?
If something similar exists, your goals could be to make it more modular or more efficient. You could try implementing it in some other language or improve it in any other number of ways.
A great way to do so is to take a look at the issues for the existing repository. Try doing your research with existing solutions (if there are any) and find out what aspect of the project could possibly be improved. Your work could even be a derivative of the other project.
In my case, as I mentioned, I took inspiration from an interesting research paper I read (Fastformer: Additive Attention Can Be All You Need). I also discovered an official code implementation and a community implementation of the paper, both in PyTorch.
Mobile Verification Toolkit
Developed by Amnesty International Security Lab, Mobile Verification Toolkit or MVT is a collection of utilities to automate gathering of forensic traces used in identifying potential threats on Android or iOS devices. It was released recently in the context of the Pegasus project.
For iOS devices, MVT helps extract artifacts from iTunes backup and full filesystem dump. It also compares stored JSON results to provide indicators. For Android devices, MVT downloads all or non-safelisted installed APKs and checks the Android backup.
Using the MVT tool requires technical skills including understanding the basics of forensic analysis and using command line tools.
In order to install MVT, first install the dependencies using the following code:
For Linux: sudo apt install python3 python3-pip libusb-1.0-0
For MacOS: brew install python3 libusb
Every time you click ‘submit’ on a Pull Request, you’ve contributed to the open source community. With that in mind, we were inspired to examine over two million pull requests on Github to determine if there are patterns of learning that people can use that will shorten their journey into open source and make them more effective contributors.