Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Versioning and stability guarantees #1880

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Versioning and stability guarantees #1880

wants to merge 1 commit into from

Conversation

codebien
Copy link
Contributor

@codebien codebien commented Feb 27, 2025

What?

It introduces a new page for documenting k6 versioning and stability guarantees. Note, this is expected to be merged only after k6 v1.0.0 release.

Checklist

  • I have used a meaningful title for the PR.
  • I have described the changes I've made in the "What?" section above.
  • I have performed a self-review of my changes.
  • I have run the npm start command locally and verified that the changes look good.
  • I have made my changes in the docs/sources/k6/next folder of the documentation.

Related PR(s)/Issue(s)

@codebien codebien self-assigned this Feb 27, 2025
@codebien codebien marked this pull request as ready for review February 27, 2025 12:12
@codebien codebien requested review from heitortsergent and a team as code owners February 27, 2025 12:12
@codebien codebien requested review from mstoykov and inancgumus and removed request for a team February 27, 2025 12:12

The k6 command-line interface (CLI), including commands, subcommands, and flags, is also part of the stable and supported API. These commands are essential for initiating and managing test executions locally and in the cloud.

### JavaScript interpreter
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
### JavaScript interpreter
### JavaScript interpreter and TypeScript compiler

Should we include TypeScript?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm tempted to not include it. My reasoning being that while we own Sobek, and maintain it, Typescript support is offered thanks to esbuild which is a completely external tool we have no interactions with, nor any influence whatsoever.

I'm happy to be convinced to be convinced otherwise though 🙇🏻


This includes the [go.k6.io/k6/js/modules](https://pkg.go.dev/go.k6.io/[email protected]/js/modules) Go package that internal and external developers have available to build module extensions, as well as the [go.k6.io/k6/output](https://pkg.go.dev/go.k6.io/[email protected]/output) that can be used to build custom outputs for k6.

It also includes public k6 Go packages that are exposed to developers to facilitate the development of these extensions (e.g., the current [go.k6.io/k6/lib.State](https://pkg.go.dev/go.k6.io/[email protected]/lib#State) package).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel this is not clear enough. Any suggestion how to improve? We have defined the policy as an allowlist, should we have here the full list of the supported packages?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not specific to this sentence, but as I gave the document a read I wondered if we should maybe state at the beggining something along the lines of "anything that is not explicitly covered by this document is not considered stable or supported". Which, I think was pretty much the general approach we had as we wrote it. What do you think?

For this specific case though, now that we have moved internal code in the internal package, would it be good enough to say that "anything that's not in the internal package" is considered public, stable, covered by this policy, and can be used by extensions in respect to k6's versioning scheme"?

It also includes public k6 Go packages that are exposed to developers to facilitate the development of these extensions (e.g., the current [go.k6.io/k6/lib.State](https://pkg.go.dev/go.k6.io/[email protected]/lib#State) package).
### Output

We guarantee the stability and support of metrics, logs, traces, and profiling outputs that we fully control in an end-to-end flow. This includes the JSON, CSV, JSON summary exports, cloud metrics, logs and traces outputs, and OpenTelemetry formats while excluding outputs dependent on third-party platforms and protocols.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I recall correctly, the new JSON format for the summary output will not be introduced in v1.0.0. Therefore, according to this, it won't be introduced until at least v2.0.0 or we simply consider the existing JSON format deprecated and therefore changing it is no a "breaking"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, good catch. This was added mostly because in our intentions but we haven't accomplished it. I am dropping it.

@joanlopez @oleiade do we introduce any guarantee for the new End-of-Test summary? I guess we should.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@codebien we have had a couple discussions about this in the past. My stance is the end-of-test summary (both human readable and machine readable) is explicitly excluded from our stability policies and guarantees in v1.0.0. I expect v1.0.0 to explicitly mark the existing json end of test summary as deprecated.

As we go through the development cycle towards v2.0.0, we may ship a new, supported this time, machine readable end of test summary. At this point, then and only then, do I suggest we add the machine readable summary to this document, with the option to extend it to the new summary/report code and any potential summary extension API we might come up with, at that point in time.

Any strong objections?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants