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

update compatibility doc with support policy #3479

Merged
merged 16 commits into from
Mar 7, 2024
Merged

Conversation

ekump
Copy link
Contributor

@ekump ekump commented Feb 23, 2024

2.0 Upgrade Guide notes
We have updated our compatibility page to include our library support policy.

What does this PR do?
Adds a support policy to our compatibility document and make minor tweaks to compatibility content to conform to the accepted support policy RFC (a non-public doc I can share via private means) to avoid duplicating content.

Motivation:
Better communicate Ruby language version and architecture support for ddtrace.

Additional Notes:
The support policy does not explain how long previous library major versions will be supported. That conversation is ongoing and will be addressed in a separate PR.

How to test the change?

For Datadog employees:

  • If this PR touches code that signs or publishes builds or packages, or handles
    credentials of any kind, I've requested a review from @DataDog/security-design-and-guidance.
  • This PR doesn't touch any of that.

Unsure? Have a question? Request a review!

@ekump ekump requested a review from a team as a code owner February 23, 2024 16:39
@github-actions github-actions bot added the docs Involves documentation label Feb 23, 2024
@ekump ekump requested a review from a team February 23, 2024 16:39
@codecov-commenter
Copy link

codecov-commenter commented Feb 23, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 98.07%. Comparing base (21f1115) to head (38f5c6e).
Report is 109 commits behind head on 2.0.

Additional details and impacted files
@@            Coverage Diff             @@
##              2.0    #3479      +/-   ##
==========================================
- Coverage   98.07%   98.07%   -0.01%     
==========================================
  Files        1234     1234              
  Lines       71972    71972              
  Branches     3392     3392              
==========================================
- Hits        70587    70586       -1     
- Misses       1385     1386       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

@hestonhoffman hestonhoffman left a comment

Choose a reason for hiding this comment

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

LGTM

Copy link
Contributor

@brett0000FF brett0000FF left a comment

Choose a reason for hiding this comment

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

Thanks! Approved but I left two minor comments about the links:

  • Moving reference links to the end of the page.
  • Changing in-line links to reference style links.

docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
Comment on lines 237 to 244
Datadog APM for Ruby will provide GA support for the latest major version and maintenance support for the previous major
version of the library.

| Gem Version | Support type |
|-------------|-------------------------------------|
| 2.x | [GA](#support-ga) |
| 1.x | [Maintenance](#support-maintenance) |
| 0.x | [EOL](#support-eol) |
Copy link
Contributor

@lloeki lloeki Feb 26, 2024

Choose a reason for hiding this comment

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

For clarity, I feel there's a need to distinguish between "GA support" in the 2.x line. As is, it sounds like a hypothetical 2.0, 2.1, 2.2 would receive the exact same level of support as a hypothetical 2.3, i.e any bug fix that is landed on a 2.3.y are going to be all backported to 2.0.y, 2.1.y, 2.2.y.

In turn, the same applies to 1.x, we have 1.0-1.15 but it's not like we're going to backport 1.15.y critical/security fixes to 1.0.y-1.14.y.

AIUI in both cases fixes only land for the latest minor, bumping its patch (this is given the expectation of backwards compatibility within a major, which should allow any x.y version to be updated to a x.z version without breakage)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

That's fair. What do you think is the best way to communicate that this only applies to the latest minor versions? I could change the column header Gem Version to Gem Major Version and drop the .x?

We could also add a sentence in the text above the table along the lines of Respective levels of support for major versions are provided via the latest minor versions. Datadog will generally not backport changes to previous minor versions via patch releases. For example if 2.3 is the latest version of 2.x, changes will not be backported to 2.2, 2.1, etcetera.

Copy link
Contributor

Choose a reason for hiding this comment

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

I like the explicit nature of the expanded table, showing each version. You could collapse these into ranges where the info is repetitive e.g. 2.1-2.4. But that's a minor issue.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@delner As I understand it, this table is supposed to convey the level of support available in major versions. I agree with @lloeki that it's unclear in its current form that normally, that support is provided via new minor releases. Would listing every single version of the library help convey this information better?

Copy link
Contributor

Choose a reason for hiding this comment

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

The annoying part with explicitly listing versions including minor is that we'd have to update the doc on every release, which would be annoying.

Gem Major Version

That would have been my suggestion, but it also makes it less explicit that only the latest major is supported.

Counterpoint though: that's what node does and it seems fine.

I think a visual representation such as this one would reaaaally drive the point home.

docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
Copy link
Member

@ivoanjo ivoanjo left a comment

Choose a reason for hiding this comment

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

Left a few notes!

docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
Comment on lines 44 to 45
| Linux x86-64 | [GA](#support-ga) | Latest |
| Linux ARM64 | [GA](#support-ga) | Latest |
Copy link
Member

Choose a reason for hiding this comment

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

Should we add some statement regarding Linux on other architectures? (Dev environments only? Talk to us?)

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 don't think we should mark any architectures as dev-only if we don't have some sort of CI in place for it. I could add a sentence below the table that says:

Need linux support for a CPU architecture not listed? Contact our customer support team for special requests.

Copy link
Member

Choose a reason for hiding this comment

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

Seems reasonable!

Copy link
Contributor

@lloeki lloeki Mar 5, 2024

Choose a reason for hiding this comment

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

I don't know what the status for profiling/libdatadog is, but for libddwaf it goes like this:

a) We have binaries for supported platofrms
b) libddwaf is able to be compiled on basically any platform, the ruby platform gem can† do that.

If customers figure out a way to have it build (which is essentially having a C++ compiler + CMake when gem install happens) then they can have ASM work on ppc64le, RISC-V, FreeBSD, Solaris, what have you. These would of course be unsupported, but by and large they would work basically OOTB.

† It's not done yet but I'm planning to do it to support the people that use force_ruby_platform on supported platforms. The above will come as a consequence of that.

Copy link
Member

Choose a reason for hiding this comment

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

I don't know what the status for profiling/libdatadog is, but for libddwaf it goes like this:

The current status is we're shipping libdatadog binaries for [x86-64, arm64] x [linux glibc, linux musl], so that's what profiler supports out of the box.

(It's undocumented, but if you can manually compile libdatadog to more platforms, and profiler does usually work on them as well).


Having said that, @lloeki I think @ekump has a reasonable point about the difference between "we have binaries for obscure platforms" and "we're actively testing and supporting them". If we're not testing on Solaris, and would struggle if someone came to us with a bug that only triggered on Solaris, should we state we support Solaris?

I think it's OK to have a "best-effort, come talk to us if this really important to you" tier, but I think it makes sense to be clear in this table about how much effort we would spend on issues for these platforms.

Copy link
Contributor

Choose a reason for hiding this comment

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

If we're not testing on Solaris, and would struggle if someone came to us with a bug that only triggered on Solaris, should we state we support Solaris?

I agree, hence why I said these fall under "unsupported".

The conundrum I have is that once I add support for the ruby platform to properly support {x86_64,aarch64}-linux-{gnu,musl} the other platforms are going to start working but we don't want ambiguity as to whether they're supported through the fact that the ruby platform is.

I think it's OK to have a "best-effort, come talk to us if this really important to you" tier, but I think it makes sense to be clear in this table about how much effort we would spend on issues for these platforms.

I like the "best effort" angle, especially if it encourages external contributions. And I agree, this is all about clarity in communicating the effort we are able to expend (both in terms of human resources e.g dev/debug time and technical resources e.g CI).

docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
ekump and others added 2 commits March 1, 2024 09:34
Co-authored-by: Ivo Anjo <ivo.anjo@datadoghq.com>
Co-authored-by: Ivo Anjo <ivo.anjo@datadoghq.com>
Copy link
Member

@ivoanjo ivoanjo left a comment

Choose a reason for hiding this comment

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

👍 LGTM

docs/Compatibility.md Outdated Show resolved Hide resolved
ekump and others added 2 commits March 1, 2024 14:46
Copy link
Contributor

@delner delner left a comment

Choose a reason for hiding this comment

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

Some minor suggestions/concurrence with some other suggestions, but the bulk of this looks good. My only other suggestion would be to strike APM from where we see Datadog APM for Ruby, given this library contains much more than just APM.

docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
docs/Compatibility.md Outdated Show resolved Hide resolved
Comment on lines 44 to 45
| Linux x86-64 | [GA](#support-ga) | Latest |
| Linux ARM64 | [GA](#support-ga) | Latest |
Copy link
Contributor

@lloeki lloeki Mar 5, 2024

Choose a reason for hiding this comment

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

I don't know what the status for profiling/libdatadog is, but for libddwaf it goes like this:

a) We have binaries for supported platofrms
b) libddwaf is able to be compiled on basically any platform, the ruby platform gem can† do that.

If customers figure out a way to have it build (which is essentially having a C++ compiler + CMake when gem install happens) then they can have ASM work on ppc64le, RISC-V, FreeBSD, Solaris, what have you. These would of course be unsupported, but by and large they would work basically OOTB.

† It's not done yet but I'm planning to do it to support the people that use force_ruby_platform on supported platforms. The above will come as a consequence of that.

@ekump ekump merged commit b8e166d into 2.0 Mar 7, 2024
52 of 75 checks passed
@ekump ekump deleted the ekump/2.0-support-policy branch March 7, 2024 21:15
@marcotc marcotc mentioned this pull request Apr 2, 2024
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs Involves documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants