methodology
methodology
BDR measures how many developers are actually writing code across blockchain ecosystems. We deliver the most comprehensive view of public blockchain repositories and developers, and then perform detailed analysis on them to better understand their trends and evolution over time.
BDR achieves this using open source code on GitHub. At a high level, what we do is the following:
  1. We look at all public repositories on GitHub beginning from August 2014 (~335,000,000 that we have scanned so far).
  2. We identify which ones are “blockchain repositories”.
  3. We find all developers who have committed to these repositories.
  4. We analyze all commits that are on these repositories and match them with developers.
Here, we will describe some details of this procedure that are important for a BD, researcher or developer that is looking to use BDR. If you are interested in deep-level engineering and how on earth we were able to classify more than 339 million repositories, just send us an email.
What is a “blockchain repository”?
There are two ways a repository can be counted as a blockchain repository:
  1. through a language: If a repository includes some code written in a blockchain related language (e.g. solidity, move, etc…), then it is counted as a blockchain repository of this language.
  2. through a package: If a repository uses a package / SDK that a blockchain technology uses, then it is a repository of this ecosystem. For instance, you can think of wallet SDKs or blockchains that use packages over existing languages (such as Solana’s packages for Rust).
We tie each technology (a language or a package) to an ecosystem. For example, Solidity maps to EVM, CosmWasm to Cosmos, and Anchor to Solana. This lets us lift the per repository technology information up to the ecosystem level that people think in.
Of course, a repository can include multiple packages or languages from different ecosystems. Then, it is counted for all these ecosystems and it becomes a “multi-ecosystem repository”.
This identification is not complete, since it is possible for a repository of a blockchain to not use any SDK or language of this ecosystem, but still be building on top of it. For instance, an indexer that reads directly from an external REST API may lack any packages of this particular blockchain, but it is of course a repository of this ecosystem. Unfortunately, there is no perfect solution to this problem, but we continuously improve BDR by solving more and more edge cases of such each day.
On the contrary, this method is almost always correct, meaning that a repository that uses a blockchain language or related package is a blockchain repository excluding some unnatural edge cases. As a result, you can conclude that all numbers on BDR are a tight lower bound on real statistics of an ecosystem.
Nevertheless, we do not want this identification to undermine the value that BDR creates: We continuously scan the entire public repository archive, which is again more than 339 millions, and find the most exotic and indie blockchain repos out there to include in our metrics. Moreover, we almost never give false positives, thus all metrics we have cover virtually every public blockchain repository and developer except a small percentage. This is by far the best analysis tool that is built for the blockchain developer ecosystem.
How do we collect developer data?
Once a repository is confirmed as a blockchain repository, we collect its commit history: who wrote how much code and when.
We distinguish developers by their GitHub accounts. A single person's contributions across different repositories are merged under one developer. This has two important consequences:
  1. If a commit is not tied to any GitHub account, it counts toward the repository's activity but is not attributed to any developer.
  2. If the same person uses two separate GitHub accounts, they appear as two separate developers; we do not merge accounts based on name or email.
We also have a simple check to prevent artificial inflation: if an abnormal number of commits pile up in a very short time right after a repository is created, we treat that repository as suspicious and leave it out of the count. Then, our team continuously checks such repositories by hand and tries to understand if it is a valid contribution or not.
We do not collect a repository once and forget it; we revisit it at regular (approx. a few hours) intervals and add new commits, so the data stays current. In contrast to repositories, our commit data is both complete and correct, meaning that we rarely miss a commit belonging to a repository that we have matched as a blockchain repository. Nevertheless, there may always be some delay before we include a new commit.
Finally, there is an important limitation of this approach, that we consider as a feature rather than a bug. If a developer is working on a blockchain repository, but is not writing any blockchain related code at all (which is quite often the case in mono-repo projects), we still count their commits as “blockchain related”. The idea here is that if a developer is working on a blockchain project, their work is a part of this ecosystem in some way or another. However, this situation is important to highlight: For instance, the number of active developers in the EVM stack does not give the number of Solidity developers. It is possible that most commits included as EVM do not contain any Solidity or Ethereum related code, but it is certain that all commits counted were submitted to a project that is building on the EVM stack.
How do we produce developer metrics?
We produce developer metrics from the raw commit data we collect. The core idea here is this: to count a developer as "active" on a given day, we do not look only at that day but at the last 28 days. Because we measure sustained activity instead of a single day's snapshot, the numbers are more stable.
With the same logic, we break developers down by how regularly and how long they have been active, and we compute these at the level of each ecosystem, each technology, and the total (global) level. On top of that, we also produce metrics such as the number of developers joining and leaving, along with retention rates.
You can find details of each graphic in the information icons it has. The most basic form of our data is the information of how many commits a developer has sent to each ecosystem for each day. All other information may be derived from this simple format.
Finally, the developer location is collected directly from reported locations of developers in their GitHub profile page. Since many developers do not share such data or write hard to interpret information such as “over the clouds”, this data is far from being complete. Moreover, we have no claim over its accuracy, since developers are free to report any location of their choosing. Nevertheless, we give a nice visualization of over 100,000 developers’ reported locations on BDR, which we believe may be important and accurate enough in most applications.
How often do we update our data?
There are two separate rhythms:
  1. Data collection runs continuously. New repositories, new commits, and the historical scan run in the background without interruption; the raw data we hold is refreshed at all times.
  2. The numbers shown on the site are updated weekly. Each week we recompute all the metrics from scratch and publish them. Thus, what BDR shows does not change over the same week.
The published numbers cover the period from the start of 2020 to today. Even though we collect raw data going back to 2014, we deliberately start the published figures from 2020.
Final Remarks
There is an enormous amount of public data online, and we believe it is vital that we make the best out of it. This of course does not mean that “anything public out there is to be indexed”, but we think the core of open source development is being able to reach people with your code. BDR is built to this end: allowing developers to reach people.
Our methodology and methods will definitely evolve over time, as BDR is used more and our date becomes more meaningful. Our ask from you is to be in contact with us, and tell us what we can do better or different. BDR is built for the blockchain ecosystem, for sure, but it is built for developers before anything.
We thank all developers that made their code public and BDR possible.

Is there anything else you want us to analyze for you?

As node101, we offer you personalized analytics reports for accessing top level blockchain developer data.

  • Breakdowns of developer changes and blockchain news

  • Most important trends and breaking points

  • GitHub accounts and individual developer insights

  • Personalized analytics and data synchronization

mete koray

Mete Koray Gergin

Request Data