Skip to content

Commit 24242d3

Browse files
authored
Merge pull request #1101 from grafana/paul/registry-requirements
Create an explanation for extensions registry
2 parents 0f9645d + 6eb27a8 commit 24242d3

File tree

2 files changed

+82
-2
lines changed

2 files changed

+82
-2
lines changed

src/data/markdown/docs/07 extensions/01 Get started/04 Create.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ there's some background knowledge you should have:
2525

2626
<Blockquote mod="note" title="">
2727

28-
If you maintain a public xk6 repository,
29-
the community appreciates that it stays up to date with the latest k6 APIs.
28+
If you maintain a public xk6 repository and wish to have your extension listed in our [registry](/extensions/get-started/explore/),
29+
be sure to review the [requirements](/extensions/explanations/about-the-extensions-registry#registry-requirements).
3030

3131
</Blockquote>
3232

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
---
2+
title: About the Extensions Registry
3+
excerpt: Reasons for the registry and what is required to be included.
4+
hideFromSidebar: false
5+
---
6+
7+
Did you create an extension and want to share it with your fellow k6 users?
8+
We'd love to spread word of this new feature adding to our [registry](/extensions/get-started/explore/) of available extensions.
9+
However, before an extension is added to the registry, we must ensure that it is maintained to the registry standard.
10+
11+
Our desire is to provide the best developer experience when using k6.
12+
This extends to the extensions ecosystem as well.
13+
The adaptability provided by k6 extensions opens a wide array of potential use cases.
14+
15+
To ensure quality, we need a well-maintained, curated listing of extensions.
16+
Our pledge to the community is to make our best attempt to ensure the listed projects meet certain standards.
17+
While we cannot guarantee the quality of community-provided extensions, we _can_ aid the evaluation by requiring certain consistencies.
18+
19+
## Registry Requirements
20+
At minimum, each source code repository must have the following:
21+
22+
- **a README file**
23+
24+
The `README` must contain documentation such as the project description, build and usage instructions, as well as k6 version compatibility.
25+
The goal is to provide enough information to quickly and easily evaluate the extension.
26+
27+
- **the `xk6` topic set**
28+
29+
GitHub allows setting _topics_ for a repository.
30+
This supports querying all public repositories based upon a keyword for better discoverability, i.e. ["xk6"](https://github.com/topics/xk6).
31+
See the [GitHub documentation](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics) to add topics.
32+
33+
- **a non-restrictive license**
34+
35+
Any open source software (OSS) license will suffice, but [Apache2](https://www.apache.org/licenses/LICENSE-2.0) is preferred.
36+
37+
- **an `examples` folder with examples**
38+
39+
Provide at least one script to show proper usage of your API.
40+
If a [Docker Compose](https://docs.docker.com/compose/compose-file/) specification is provided, these could be used as integration tests to validate the extension works as intended.
41+
42+
- **at least one versioned release**
43+
44+
As features or fixes are ready to be consumed, create a [release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository).
45+
This promotes stability by allowing a user to utilize a particular version.
46+
Use [semantic versioning](https://semver.org/) to communicate changes as the extension evolves.
47+
48+
- **builds with a recent k6 version**
49+
50+
Ideally, the extension should build with the latest release.
51+
But, it must build with a version of k6 that is no more than three releases old.
52+
For example, if latest version of k6 is `v0.100`, the extension must build with at least version `v0.98`.
53+
54+
## Naming Conventions
55+
Some extensions may be very specific, where others are more general.
56+
Multiple extensions may even be created for the same product with different levels of support based upon version.
57+
By adhering to typical naming conventions, your extension name can remove some doubts as to what is supported.
58+
59+
For any extension, we recommend the `xk6-` prefix as well as an optional `output-` for [Output extensions](/extensions/get-started/create/output-extensions/).
60+
Next, provide the product or protocol name; don't be cryptic.
61+
Ensure the usage is explicit by adopting only well-known acronyms or abbreviations if necessary.
62+
If your extension supports only a specific version of a product, incorporate the version into the name, for example `v2`.
63+
64+
As an example, suppose an extension that outputs test metrics to the _AwesomeLog_ application, and it uses only the v2 API.
65+
In this case, say the latest v3 API is not backward-compatible.
66+
Applying our conventions, we'd recommend naming this repository as `xk6-output-awesomelog-v2`.
67+
68+
<Blockquote mod="note" title="">
69+
70+
Our goal is to quickly understand the intent of the extension.
71+
72+
</Blockquote>
73+
74+
## Potential for De-listing
75+
Given our desire to provide the best developer experience when using k6, we reserve the right to de-list any extension we deem is no longer maintaining standards.
76+
Before any action takes place, the extension maintainers will be contacted to be given a chance to rectify the project and thus avoid de-listing.
77+
Such contact may be in the form of GitHub issues or merge requests.
78+
79+
Should any extension be de-listed, this does not constitute a permanent removal.
80+
Any extension that has been de-listed may be reinstated once the reasons for the initial removal have been remediated.

0 commit comments

Comments
 (0)