|
| 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