Skip to content

ECS logging library versioning now and going forward #39

Open
@felixbarny

Description

@felixbarny

We've had multiple strems of discussions about how to properly version ECS libraries. There are three main options:

  1. Version loggers independently, starting with 1.0.0 and using semver
    Loggers just depend on a small subset of ECS fields that are available since ECS 1.2. We don't expect many breaking changes on these fields, even in new major versions of ECS.
  2. Version them in alignment with ECS
    The .NET loggers does that as it generates types based on the ECS schema definition. For ECS, there's a desire to align with the stack release versions as of 8.0.
  3. Version loggers in alignment with the stack release
    Makes it easier for users to grasp which versions work well with each other, especially when it comes to breaking changes.

Currently, loggers are using a mix of 1. and 2.

We actually have a breaking change lined up for 8.0 regarding event.dataset vs data_stream.dataset (#38) where it would help if loggers would be aligned with the stack release.

Let's discuss which versioning scheme we want to follow for the library's GA and whether to change things up when 8.0 comes along.

I personally think that we should aim to align with the stack versions as of 8.0.

I'm not so sure if we should jump into that right away for the GA of the ECS loggers. My main concern would be the management overhead associated with it. I anticipate that most loggers are fairly stable with infrequent code changes after GA. When we align with stack releases, we'd still need to release minor and bugfix versions in sync with the stack release even if there are no changes in a logger. With automation in place, we can hopefully bring that overhead down to a minimum.

Open questions when aligning with the stack release

  • Can we automatically create stack release branches to minimize the management overhead?
  • How would the integration into unified release work?
  • We shouldn't require users to update their Elastic stack and their log library versions at the same time. How should we define the support range of a ECS logger with the stack version? I guess at the least, a ECS logger with version 8.x should be compatible with all minors within 8.x and 8.last (or even 8.x?) should be compatible with 9.x. But should 8.x loggers also be compatible with 7.last or even 7.x versions of the stack?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions