project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

OSS on OP Directory

OSS projects produce many work artifacts (eg, git repos, smart contracts). But it takes inside knowledge to know where to find them. We created a schema for mapping artifacts to OSS projects. We built an initial directory of 100+ OSS projects on OP. And we deployed it to EAS.

OSS on OP Directory

Created At

Superhack

Winner of

trophy

💫 Optimism — 🥇 Best App for RetroPGF, PG, or Impact

Project Description

Open Source Software projects produce many different work artifacts (eg, git repos, smart contracts). But it often takes inside knowledge to know where to find them. It’s hard to link onchain impact to offchain work.

OSS on OP Directory introduces several new tools for addressing this problem.

First, we created a schema for mapping artifacts to OSS projects. Next, we built an initial directory of 100+ OSS projects that are building on Optimism. We published the directory on npm. We also deployed a simplified version of the schema to EAS -- and tested it by making 50 attestations from the directory. Last, we built a Dune Dashboard to help track attestations from the community.

In our repository, you'll find JSON schemas for defining artifacts, projects, and collections and reading them from YAML files. You'll also see automated tests to verify that all data (from us or crowdsourced via a pull request) conforms to the schema.

In the ./data/projects directory, you'll see an initial 100+ open source projects populated by our team. We looked at projects that had smart contracts deployed on Optimism and manually mapped them to an associated GitHub repo or GitHub organization. The data is not complete -- and likely never will be as new artifacts are produced everyday.

On Ethereum Attestation Station, you can view or interact with the schema we created for linking projects to blockchain addresses here. You can view usage trends on Dune, which currently includes 50 attestations for well-known projects like Galxe, sound.xyz, and Zora that are building on Optimism.

Going forward, we'd love to see the community add more projects, artifacts, and EAS attestations. That way, anyone can track and analyze the impact of an OSS project permissionlessly!

How it's Made

This project consists of a number of components that work together to form the directory:

  1. JSON Schema for specifying projects and collection: We created a JSON schema for specifying an open source "project", as well as a "collection" of projects. This current schema includes fields for GitHub organizations, GitHub repositories, npm packages, as well as on-chain contracts. Data is read to and from YAML files that are stored in the oss-directory repository. See here for more details: https://github.com/hypercerts-org/oss-directory/tree/main/src/resources/schema

  2. Data for 177 projects currently on Optimism Using the schema, we collected information for 177 top projects on Optimism and committed them into the repository. This involved indexing on-chain activity using Dune dashboards, as well as manually searching for the associated GitHub organizations. See here for the data: https://github.com/hypercerts-org/oss-directory/tree/main/data

  3. Continuous integration: Because we expect to receive outside contributions to the data, we created continuous integration scripts that will validate that contributed data conforms to the the specified schema. Below, you'll see where we use Ajv to validate read files to the schema. We wrap these utility functions in a command-line tool using yargs, which we invoke from GitHub actions.

  • https://github.com/hypercerts-org/oss-directory/blob/main/src/validator/index.ts
  • https://github.com/hypercerts-org/oss-directory/blob/main/.github/workflows/ci-default.yml
  1. JavaScript/TypeScript library for reading the latest data We published an npm package that makes it easy for anyone to read the latest data. Because we expect this data to be changing frequently, we do not publish the data itself to npm. Instead, the library will clone the repository into a temporary directory, read the latest data from the main branch, and return the data as JSON objects.
  • https://www.npmjs.com/package/oss-directory
  • https://github.com/hypercerts-org/oss-directory/blob/main/src/fetchData.ts
  1. Scripts for publishing to EAS We then created a script to also transform the data to conform to an EAS schema, and publish attestations on Optimism. These attestations are visible on indexers like Dune and EAS Scan:
  • https://dune.com/os-observer/oss-on-op-attestations
  • https://optimism.easscan.org/schema/view/0x739257b1bf8533a29a5c59a6dda5905c50f7c2bf436d709cd9ea7bfabbe5172b
background image mobile

Join the mailing list

Get the latest news and updates