Skip to content

Commit

Permalink
Merge branch 'electric-capital:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
paulormart authored Nov 29, 2023
2 parents 73b92ce + b8a1a77 commit 8a945ee
Show file tree
Hide file tree
Showing 10 changed files with 335 additions and 214 deletions.
199 changes: 199 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,202 @@ Sample request language: "If you’re working in open source crypto, submit your
Data Source: [Electric Capital Crypto Ecosystems Mapping](https://github.com/electric-capital/crypto-ecosystems)

If you’re working in open source crypto, submit your repository [here](https://github.com/electric-capital/crypto-ecosystems) to be counted.

## How to Contribute (Step-by-Step Guide)

There are three types of contributions you can make to this data set:

1. Adding a new ecosystem (e.g. a new layer 1 blockchain)
2. Adding a new sub-ecosystem (e.g. a big organisation that has multiple repos within the above ecosystem)
3. Adding a new repo (e.g. an individual project within the ecosystem/sub-ecosystem) or organization

This may sound confusing. It is perhaps even more confusing because whilst there are these different data sources/structures, all of them sit within one directory (data/ecosystems) as `.toml` files.

To make things easier, we've made the following roadmap for you to follow depending on which of the above 3 types of contributions you're trying to make.

### Option 1: Adding a new ecosystem (e.g. blockchain)

If you're adding a totally new ecosystem that has no parents (e.g. Cosmos/Ethereum), then follow this path. You're most likely adding a new L1 blockchain, so let's take the fictitious example of a new chain called `EasyA Chain`. Follow these steps:

1. Go to the `data/ecosystems` directory
2. Find the folder named the first letter of the ecosystem you're adding. Here, it's the letter `E` because our L1 is called `EasyA Chain`.
3. Open the folder
4. Inside the folder, create a new `.toml` file named after your L1 in kebab-case. Here, it will be called `easya-chain.toml`. The full path will now be `data/ecosystems/e/easya-chain.toml`.
5. Add the following 2 required fields:

```toml
# Required field number 1: Name of the ecosystem
title = "EasyA Chain"

# Required field number 2: List of associated GitHub organizations
github_organizations = ["https://github.com/EasyA-Tech"]
```
6. Make your PR! ✅

Remember that this is a hierarchy. If you're adding a Cosmos appchain, therefore, you should be following Option 2 below (since it will be a sub-ecosystem of Cosmos).

It's important to note also that you **do not** need to add all the repos within your GitHub organizations to the `.toml` file as individual repos, because the system automatically fetches all repos within the organization.

You may see other ecosystems that have done this:

```toml
title = "EasyA Chain"

github_organizations = ["https://github.com/EasyA-Tech"]

[[repo]]
url = "https://github.com/EasyA-Tech/Chain" # ❌ Don't do this ❌
tags = [ "Protocol"]
```

This is unnecessary. It adds clutter and makes it harder for reviewers to approve your PR. We will explain below when and why you should add repos to an ecosystem.

### Option 2: Adding a new sub-ecosystem

If you're adding a new sub-ecosystem (in other words, it has a parent, like a blockchain or a layer 0), then follow these steps. Again, we'll be using the fictitious `EasyA Chain` L1 blockchain as an example. However, this time, we'll be adding the new `EasyA Community Wallet` sub-ecosystem to it.

1. Go to the `data/ecosystems` directory
2. Find the folder named the first letter of the name of the ecosystem which the project you're adding is part of. Here, it's the letter `E` because our L1 is called `EasyA Chain`.
3. Open the folder. Here, it's the `E` folder.
4. Inside the folder, find the `.toml` file that has the ecosystem's name. Here, following our `EasyA Chain` example, it will be `easya-chain.toml`. The full path to the ecosystem will be `data/ecosystems/e/easya-chain.toml`.
5. Open this file. Inside the ecosystem file, you will see something that looks like this:

```toml
title = "EasyA Chain"

github_organizations = ["https://github.com/EasyA-Tech"]
```
6. You will then need to do one of two things.

1. If there are no sub-ecosystems yet, add your sub-ecosystem by adding the following line:

```toml
sub_ecosystems = ["EasyA Community Wallet"]
```

2. If you see a line starting with `sub_ecosystems` already, then simple add your sub-ecosystem to the list:

```toml
sub_ecosystems = ["Pre-existing Sub-Ecosystem", "EasyA Community Wallet"]
```
Overall, your file should then look something like this:

```toml
title = "EasyA Chain"

sub_ecosystems = ["EasyA Community Wallet"] # This is the line we changed

github_organizations = ["https://github.com/EasyA-Tech"]
```

7. Once you've added your sub-ecosystem's name to the parent ecosystem file, go back to the `data/ecosystems` directory.
8. This time, find the folder that is the first letter of the name of the sub-ecosystem you're adding. Here, it also happens to be the letter `E` because our sub-ecosystem is called `EasyA Community Wallet`.
9. Open the folder. Here, it's the `E` folder.
10. Inside the folder, create the `.toml` file that has the sub-ecosystem's name. Here, following our `EasyA Community Wallet` example, it will be `easya-community-wallet.toml`. The full path to the ecosystem will be `data/ecosystems/e/easya-community-wallet.toml`.
11. Add the following 2 required fields:

```toml
# Required field number 1: Name of the sub-ecosystem
title = "EasyA Community Wallet"

# Required field number 2: List of associated GitHub organizations
github_organizations = ["https://github.com/EasyA-Community-Wallet"]
```
12. Make your PR! ✅

Please remember here too that the same note as in Option 1 applies: the system automatically pulls in the repos from your sub-ecosystem GitHub organization, so you don't need to list them all out individually.

If you prefer videos, you can also see the above steps done live [here](https://www.loom.com/share/f23aab8c675940a9998b228ea1e179b7).

If you've been following along closely, you'll have noticed that the steps after adding the sub-ecosystem to the parent ecosystem are exactly the same a Option 1 (adding a totally new ecosystem that has no parents). That's because this taxonomy is based on ancestry. Any sub-ecosystem is basically just an ecosystem in its own right (it's not like a sub-ecosystem is any less valuable). The ecosystem and sub-ecosystem dichotomy is merely there so we can see the relationship between different ecosystems. You can keep adding sub-ecoystems to sub-ecosystems ad infinitum (forever).


### Option 3: Adding a new repo or organization

The system automatically pulls in all repos listed under a GitHub organization within an ecosystem. For example, when the system sees the below ecosystem, it will automatically account for all the repos under the `EasyA-Tech` GitHub organization.

```toml
title = "EasyA Chain"

github_organizations = ["https://github.com/EasyA-Tech"]
```
So don't worry! You don't need to add every single repo if it's already part of an organization that's in the data set.

To add a new organization, simply append its full GitHub URL to the list of organizations in the associated ecosystem. Let's take the example of adding an organization with the URL `https://github.com/EasyA-Community` as part of the `EasyA Chain` ecosystem.

You would follow these steps:

1. Go to the `data/ecosystems` directory
2. Find the folder named the first letter of the name of the ecosystem which the organization you're adding is part of. Here, it's the letter `E` because our ecosystem is called `EasyA Chain`.
3. Open the folder. Here, it's the `E` folder.
4. Inside the folder, find the `.toml` file that has the ecosystem's name. Here, following our `EasyA Chain` example, it will be `easya-chain.toml`. The full path to the ecosystem will be `data/ecosystems/e/easya-chain.toml`.
5. Open this file. Inside the ecosystem file, you will see something that looks like this:

```toml
title = "EasyA Chain"

github_organizations = ["https://github.com/EasyA-Tech"]
```
6. Simply add your GitHub organization URL to the list. Here, ours is `https://github.com/EasyA-Community` so we'll add that:

```toml
title = "EasyA Chain"

github_organizations = ["https://github.com/EasyA-Tech", "https://github.com/EasyA-Community"]
```
7. Make your PR! ✅

When, then, should you add repos? You only need to add a repo directly to an ecosystem if:

1. ✅ It is not owned by a GitHub organization already listed in an ecosystem file (those `.toml` files)
2. ✅ It is not itself an ecosystem/sub-ecosystem (in which case you'd be adding it as an ecosystem)

The types of projects that will commonly get added as individual repos are:
- Documentation
- Wallets
- Utility Libraries
- Smaller protocols

Usually these will be repos created by the community (so not already accounted for under the ecosystem/sub-ecosystem GitHub organization). Use that as a rough heuristic here. If the repo you're adding is actually one of many repos all in the same ecosystem, and in fact the organization only contributes to that one ecosystem, then you should almost certainly be adding your organization instead.

If you're happy that you should be adding this repo, then here's how to do it. Let's take the example of a community contributor with the GitHub handle `Platonicsocrates` who's created a helper library for the `EasyA Chain` but also contributes to other projects (so we shouldn't add their whole organization/profile). Their repo URL `https://github.com/platonicsocrates/easya-helpers`.

You would follow these steps to add it:

1. Go to the `data/ecosystems` directory
2. Find the folder named the first letter of the name of the ecosystem which the repo you're adding is part of. Here, it's the letter `E` because our ecosystem is called `EasyA Chain`.
3. Open the folder. Here, it's the `E` folder.
4. Inside the folder, find the `.toml` file that has the ecosystem's name. Here, following our `EasyA Chain` example, it will be `easya-chain.toml`. The full path to the ecosystem will be `data/ecosystems/e/easya-chain.toml`.
5. Open this file. Inside the ecosystem file, you will see something that looks like this:

```toml
title = "EasyA Chain"

github_organizations = ["https://github.com/EasyA-Tech"]
```
6. Simply add the following three lines at the end of the `.toml` file:

```toml
[[repo]]
url = "https://github.com/platonicsocrates/easya-helpers" # Replace this URL with your repo url
tags = [ "Library"] # This line is optional
```

If there are already other repos in the ecosystem, just add the above as new lines (unlike adding organizations or sub-ecosystems, these aren't lists). For example, if the ecosystem already has a repo, we will just add it below as follows:

```toml

# Repo that's already been added
[[repo]]
url = "https://github.com/platonicsocrates/easya-js"
tags = [ "Library"]

# Our new repo
[[repo]]
url = "https://github.com/platonicsocrates/easya-helpers" # Replace this URL with your repo url
tags = [ "Library"] # This line is optional
```
7. Make your PR! ✅


Thank you for contributing and for reading the contribution guide! ❤️
4 changes: 2 additions & 2 deletions data/ecosystems/a/arbitrum.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
title = "Arbitrum"

sub_ecosystems = [
" Voltz Protocol",
"Voltz Protocol",
"0xSplits",
"123swap",
"Aboard Exchange",
Expand Down Expand Up @@ -713,4 +713,4 @@ url = "https://github.com/zerodao-finance/zeroBridge"
url = "https://github.com/ZigZagExchange/frontend"

[[repo]]
url = "https://github.com/zKatcha/zKatcha"
url = "https://github.com/zKatcha/zKatcha"
95 changes: 0 additions & 95 deletions data/ecosystems/f/flow-community.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ github_organizations = [
"https://github.com/Flow-HKT",
"https://github.com/flow-japan",
"https://github.com/Flow-Taipei",
"https://github.com/FlowFans",
"https://github.com/FlowFans-Learning",
"https://github.com/Playstarter",
"https://github.com/punchvn",
"https://github.com/rayvin-flow",
Expand Down Expand Up @@ -1851,99 +1849,6 @@ url = "https://github.com/flowBetPalace/app"
[[repo]]
url = "https://github.com/flowBetPalace/cadence"

[[repo]]
url = "https://github.com/FlowFans-Learning/beginner-cadence-course"

[[repo]]
url = "https://github.com/FlowFans-Learning/flow-dapp-courses-2022"

[[repo]]
url = "https://github.com/FlowFans-Learning/tintin-lesson-2-linpingsnoopy"

[[repo]]
url = "https://github.com/FlowFans-Learning/tintin-lesson-2-presleyzhou"

[[repo]]
url = "https://github.com/FlowFans-Learning/tintin-lesson-3-ChinaKingKong"

[[repo]]
url = "https://github.com/FlowFans-Learning/tintin-lesson-3-linpingsnoopy"

[[repo]]
url = "https://github.com/FlowFans/awesome-flow"

[[repo]]
url = "https://github.com/FlowFans/cadence-deployer"

[[repo]]
url = "https://github.com/FlowFans/crypto-dappy"

[[repo]]
url = "https://github.com/FlowFans/crypto-dappy-learning-hub"

[[repo]]
url = "https://github.com/FlowFans/dappstarter-cli"

[[repo]]
url = "https://github.com/FlowFans/docs-flow"

[[repo]]
url = "https://github.com/FlowFans/fast-floward-zh"

[[repo]]
url = "https://github.com/FlowFans/fcl-dev-wallet"

[[repo]]
url = "https://github.com/FlowFans/fcl-frontend-scaffold-ts"

[[repo]]
url = "https://github.com/FlowFans/flow"

[[repo]]
url = "https://github.com/FlowFans/flow-chinese-workshop"

[[repo]]
url = "https://github.com/FlowFans/flow-fans"

[[repo]]
url = "https://github.com/FlowFans/flow-fans-v2"

[[repo]]
url = "https://github.com/FlowFans/flow-fcl-quickstart"

[[repo]]
url = "https://github.com/FlowFans/flow-py-sdk"

[[repo]]
url = "https://github.com/FlowFans/flow-test-with-js"

[[repo]]
url = "https://github.com/FlowFans/flow-testing-quickstart"

[[repo]]
url = "https://github.com/FlowFans/flow-token-list"

[[repo]]
url = "https://github.com/FlowFans/flow-tools"

[[repo]]
url = "https://github.com/FlowFans/FlowChinaBadge"

[[repo]]
url = "https://github.com/FlowFans/kitty-items"

[[repo]]
url = "https://github.com/FlowFans/lottery-draw"

[[repo]]
url = "https://github.com/FlowFans/nft-storefront"

[[repo]]
url = "https://github.com/FlowFans/react-fcl-demo"

[[repo]]
url = "https://github.com/FlowFans/web3jam-2022-summer"

[[repo]]
url = "https://github.com/FlowFlowAI/flow-frontend"

Expand Down
Loading

0 comments on commit 8a945ee

Please sign in to comment.