Skip to main content

OSS Directory

info

The OSS Directory serves as the "source of truth" for the projects and collections that are discoverable on Open Source Observer. While the directory may never be complete, it is actively maintained. We welcome community contributions of new projects and collections, as well as updates to existing entries. This directory is a public good, free to use and distribute.

Collections


Collections are used to group projects together. For example, a collection may include all projects that are part of a particular ecosystem or all projects that are dependent on a given developer library.

name: my-collection
display_name: My Collection
projects:
- project-name1
- project-name2
- project-name3

A collection is validated by confirming that all of its projects are valid. Please consult the collection schema for more information.

Projects


Projects are used to group artifacts together. For example, a project may include a GitHub organization, an NPM package, and a blockchain address used for holding funds.

name: opensource-observer
display_name: Open Source Observer
github:
- url: https://github.com/opensource-observer
npm:
- url: https://www.npmjs.com/package/oss-directory
blockchain:
- address: "0x87feed6162cb7dfe6b62f64366742349bf4d1b05"
networks:
- mainnet
- optimism
tags:
- eoa
- wallet

In order to instantiate a project, we require a unique name and a GitHub URL that is not owned by any other project. Project metadata, including its display_name and description, can also be be captured. Once instantiated, a project entry can be updated to include additional artifacts.

Critically, artifacts can only belong to one project. We run validation checks to ensure that artifacts are not duplicated across projects. Please consult the project schema for more information.

Artifacts


Artifacts are used to store information about work artifacts created by open source projects in the OSS Directory.

For example, here is the GitHub organization artifact (identified by a url field) that belongs to Open Source Observer's project file.

github:
- url: https://github.com/opensource-observer

Here is the NPM package artifact (identified by a url field) that belongs to Open Source Observer's project file.

npm:
- url: https://www.npmjs.com/package/oss-directory

Blockchain address artifacts include additonal tags that are used as instructions for OSO's indexers. For example, a blockchain address with a wallet tag will be monitored for financial transactions and changes in token balances. A blockchain address with a deployer tag will be monitored for smart contract deployments. Any contracts deployed by a deployer will be associated with the deployer's project. Similarly, any contracts deployed by factories deployed by a deployer will also be associated with the deployer's project.

Tags are also used to indicate the network the address is used on. For example, a deployer may be active on both the Ethereum mainnet and the Optimism network.

Here is a blockchain address artifact that belongs to Open Source Observer's project file.

blockchain:
- address: "0x87feed6162cb7dfe6b62f64366742349bf4d1b05"
networks:
- mainnet
- optimism
tags:
- eoa
- wallet

To learn more, check out the artifact schema.

Example


Here's an example of how these building blocks can be used to model a collection of projects:

- Collection: IPFS                            # projects in the IPFS ecosystem
- Project: IPFS # IPFS GitHub organization
- Artifact: https://github.com/ipfs/ipfs # IPFS monorepo
- Artifact: https://github.com/ipfs/kubo # Kubo
- Artifact: https://github.com/ipfs/boxo # Boxo
- Artifact: https://github.com/ipfs/helia # helia
- Project: IPLD # IPLD GitHub organization
- Artifact: https://github.com/ipld/ipld # IPLD monorepo
- Artifact: https://github.com/ipld/go-ipld-prime # go-ipld-prime

Once these entries are submitted to the OSS Directory, OSO will add them to the next data indexing job. After indexing is complete, metrics about these artifacts, projects, and collections will be available in BigQuery and through the OSO API.