asyncapi / asyncapi/website

Measuring AsyncAPI spec adoption

Open
#780 52 comments 3 reactions 0 assignees View on GitHub
enhancement keep-open
Dominant language
TypeScript
Stars
716
Forks
1.2k
Avg merge
1d 12h
Merged PRs (30d)
35

Description

#### Reason/Context

We do not know how many people use AsyncAPI. The most accurate number we could get is the amount of the AsyncAPI users that work with AsyncAPI documents. But how measure how many people out there created/edited AsyncAPI file?

The answer is a solution that includes:
- [SchemaStore](https://github.com/SchemaStore/schemastore/issues/1048)
- promotion of using `asyncapi` in a filename created using AsyncAPI spec
- having a server where we expose all JSON Schemas provided for AsyncAPI
- storing somewhere info whenever JSON Schema is fetched by users, so we can count it as "usage"

![20210528_114537](https://user-images.githubusercontent.com/6995927/154851193-ff85bdd8-8d3f-44bd-90f4-0e5a577aff0b.jpg)

Some more discussion -> https://asyncapi.slack.com/archives/C0230UAM6R3/p1622198311005900

#### Description

1. Create new endpoint in `server-api` service that anyone can use to fetch AsyncAPI JSON Schema files of any version
2. JSON schemas are in https://github.com/asyncapi/spec-json-schemas and can be used as normal dependency
3. Whenever JSON Schema file is fetched by the user, information should be stored somewhere. I propose Google Tag Manager as we already have it for the website, we can send data there and then easily read data. I'm all ears if there is something better and still free
4. Add AsyncAPI config to SchemaStore and have a configuration on AsyncAPI side that will always automatically open a PR against SchemaStore to provide a new location of a new version of the JSON Schema for the new AsyncAPI spec version
5. Update docs and instructions for users how to configure IDE properly and how to name files. Update official examples

If time left, we need to expose numbers somewhere. Either embed Google Analytics diagram somewhere on the AsyncAPI website or just have at least an API endpoint that exposes the latest numbers.

#### For GSoC participates

- you get to code TS in a service that is publicly available and you are sure your work will be consumed by thousands of people
- you will learn automation with GitHub Actions
- you will have a chance to learn how to integrate with different services, like Google API, unless you find a better solution and better API to use
- you will learn in-depth how autocompletion in IDEs is done with SchemaStore

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the server-api service, the spec-json-schemas repository, and the SchemaStore issue linked in the description. Trace how schema versions can be served and usage recorded, then review the requested GitHub Actions automation, documentation, and official examples. Done means the endpoint, usage measurement, SchemaStore integration, and user guidance are implemented or explicitly scoped.

Written by the indexing model from the issue text.

Assessment

Tech stack
github-actions, typescript
Domain
analytics, api, documentation, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.