Skip to content

Create app.installation.id attribute #1897

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

Merged
merged 29 commits into from
Mar 25, 2025

Conversation

bencehornak
Copy link
Contributor

@bencehornak bencehornak commented Feb 10, 2025

Fixes #1874

Warning

This PR must be merged together with #1951 as they are highly related, dear maintainers, please add them to the same milestone.

Changes

Added app.installation.id (the first attribute in the installation namespace), which is a unique identifier representing the installation of an application on a specific device. Its definition is more-or-less identical to the old definition of device.id, which has always identified app installations and not devices.

In #1951 I am changing the definition of device.id, so that it actually identifies the device.

For more context see #1874.

Merge requirement checklist

@bencehornak bencehornak requested review from a team as code owners February 10, 2025 11:26
@github-actions github-actions bot added the enhancement New feature or request label Feb 10, 2025
Copy link
Member

@joaopgrassi joaopgrassi left a comment

Choose a reason for hiding this comment

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

I think this changes makes sense given the discussion in the issue. But I think it would be better if the changes related to device would be in a separate PR. Then you can include the changelog for it as a breaking change, since it is now Opt-In.

Copy link

@LikeTheSalad LikeTheSalad left a comment

Choose a reason for hiding this comment

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

Thanks! I like the idea of using a name that better describes what we were doing with device.id. I've just added some questions on specific details, but I'm on board with the change.

@bencehornak
Copy link
Contributor Author

I think this changes makes sense given the discussion in the issue. But I think it would be better if the changes related to device would be in a separate PR. Then you can include the changelog for it as a breaking change, since it is now Opt-In.

@joaopgrassi Thanks for your feedback! My reasoning for adding two changes to a single PR was that I see the two changes as a single transaction. If, say, the device.id changes are merged first, then the SDK users won't have any recommended fields to identify different installations until the 2nd PR with the installation.id changes are merged. If we do it other way around, for a short period of time there will be significant overlaps between the definitions of device.id and installation.id, so that would also not be ideal.

So right now I don't know, how to put the two changes in topological order given their circular dependency, but if you help me figure this out, I'm happy to split this PR into two.

@joaopgrassi
Copy link
Member

joaopgrassi commented Feb 11, 2025

I think this changes makes sense given the discussion in the issue. But I think it would be better if the changes related to device would be in a separate PR. Then you can include the changelog for it as a breaking change, since it is now Opt-In.

@joaopgrassi Thanks for your feedback! My reasoning for adding two changes to a single PR was that I see the two changes as a single transaction. If, say, the device.id changes are merged first, then the SDK users won't have any recommended fields to identify different installations until the 2nd PR with the installation.id changes are merged. If we do it other way around, for a short period of time there will be significant overlaps between the definitions of device.id and installation.id, so that would also not be ideal.

So right now I don't know, how to put the two changes in topological order given their circular dependency, but if you help me figure this out, I'm happy to split this PR into two.

Yes, I understand. We have been asked by users though that such bundling breaking changes with other changes such as this makes it harder for them to track breaking changes, which is also understandable. so, we have been trying recently to better identify/label breaking changes PRs to help in such cases.

I think we could still make it work to merge both of them separately. You will need approvals in both anyway and once both are good we just merge them together in the same release. We can for example, add the PRs into the same milestone.

@bencehornak
Copy link
Contributor Author

@joaopgrassi alright, I'll restrict this PR to the new definition of device.id, and will add the new attribute to a separate PR.

@bencehornak
Copy link
Contributor Author

Sorry folks for the delay, now I'm back from holiday!

@joaopgrassi I have extracted the changes to device.id to #1951 as you requested, this PR only contains the addition of the app.installation.id attribute.

@lmolkova, @LikeTheSalad, @bidetofevil I believe that I have addressed all of your remarks, I would appreciate your feedback on the new additions.

Copy link

@LikeTheSalad LikeTheSalad left a comment

Choose a reason for hiding this comment

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

Thank you! 🙏

@bencehornak
Copy link
Contributor Author

@joaopgrassi @lmolkova, the two PRs (this and #1951) are ready for your review, could you take a look, if you get a chance?

@trask
Copy link
Member

trask commented Mar 12, 2025

cc @open-telemetry/semconv-mobile-approvers

@trask trask moved this from In Review to Needs More Approval in Semantic Conventions Triage Mar 12, 2025
@trask
Copy link
Member

trask commented Mar 18, 2025

it would be great if we can get approvals from the iOS and browser perspectives as well (if this attribute is applicable there)

@bryce-b bryce-b self-requested a review March 20, 2025 16:40
Copy link
Member

@joaopgrassi joaopgrassi left a comment

Choose a reason for hiding this comment

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

I don't immediately see a problem with introducing this new top-level area app. Let's get more eyes and approvals from other maintainers here.

@lmolkova lmolkova added this to the 1.32.0 milestone Mar 25, 2025
@lmolkova lmolkova moved this from Needs More Approval to Ready to be Merged in Semantic Conventions Triage Mar 25, 2025
@trask trask merged commit e5ff726 into open-telemetry:main Mar 25, 2025
15 checks passed
dyladan pushed a commit to dyladan/semantic-conventions that referenced this pull request Mar 28, 2025
@bencehornak bencehornak deleted the device-id-vs-installation-id branch April 3, 2025 09:41
MrAlias added a commit to open-telemetry/opentelemetry-go that referenced this pull request May 20, 2025
- Add the new metric API package structure prototyped in
https://github.com/MrAlias/semconv-go

  Prototypes of new metric API use:
   - MrAlias/opentelemetry-go-contrib#6136
   - MrAlias/opentelemetry-go-contrib#6135
   - MrAlias/opentelemetry-go-contrib#6134
- Generate `semconv/v1.32.0`
- Drop the `kestrel` metric namespace as this is a Java specific
technology

## [`v1.32.0` semantic convention release
notes](https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.32.0):

<div data-pjax="true" data-test-selector="body-content"
data-view-component="true" class="markdown-body my-3"><p>📣 This release
is the second release candidate for the Database Semantic Conventions,
with <strong>db conventions stability planned to be declared in the
subsequent release</strong>.</p>
<h3>🛑 Breaking changes 🛑</h3>
<ul>
<li><code>device</code>: Change the definition of <code>device.id</code>
and make it opt-in. (<a
href="open-telemetry/semantic-conventions#1874"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1874/hovercard">#1874</a>,
<a
href="open-telemetry/semantic-conventions#1951"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1951/hovercard">#1951</a>)</li>
<li><code>feature_flag</code>: Rename <code>evaluation</code> to
<code>result</code> for feature flag evaluation result attributes (<a
href="open-telemetry/semantic-conventions#1989"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1989/hovercard">#1989</a>)</li>
</ul>
<h3>🚀 New components 🚀</h3>
<ul>
<li><code>app</code>: Create <code>app.installation.id</code> attribute
(<a
href="open-telemetry/semantic-conventions#1874"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1874/hovercard">#1874</a>,
<a
href="open-telemetry/semantic-conventions#1897"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1897/hovercard">#1897</a>)</li>
<li><code>cpython</code>: Add CPython runtime garbage collector metrics
(<a
href="open-telemetry/semantic-conventions#1930"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1930/hovercard">#1930</a>)</li>
</ul>
<h3>💡 Enhancements 💡</h3>
<ul>
<li><code>vcs</code>: Add owner and provider name to VCS attribute
registry (<a
href="open-telemetry/semantic-conventions#1452"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1452/hovercard">#1452</a>)</li>
<li><code>vcs</code>: Remove fallback value for VCS provider name
attribute (<a
href="open-telemetry/semantic-conventions#2020"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2020/hovercard">#2020</a>)</li>
<li><code>db</code>: Truncate <code>db.query.summary</code> to 255
characters if parsed from the query (<a
href="open-telemetry/semantic-conventions#1978"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1978/hovercard">#1978</a>)</li>
<li><code>db</code>: Normalize spaces in <code>db.operation.name</code>
(if any) (<a
href="open-telemetry/semantic-conventions#2028"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2028/hovercard">#2028</a>)</li>
<li><code>db</code>: <code>db.operation.parameter.&lt;key&gt;</code>
should not be captured for batch operations (<a
href="open-telemetry/semantic-conventions#2026"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/2026/hovercard">#2026</a>)</li>
<li><code>db</code>: Add <code>db.stored_procedure.name</code> (<a
href="open-telemetry/semantic-conventions#1491"
data-hovercard-type="issue"
data-hovercard-url="/open-telemetry/semantic-conventions/issues/1491/hovercard">#1491</a>)</li>
<li><code>gcp</code>: Adds GCP AppHub labels for resource. (<a
href="open-telemetry/semantic-conventions#2006"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2006/hovercard">#2006</a>)</li>
<li><code>error</code>: Add <code>error.message</code> property for
human-readable error message on events. (<a
href="open-telemetry/semantic-conventions#1992"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1992/hovercard">#1992</a>)</li>
<li><code>profile</code>: Extend the list of known frame types with a
value for Go and Rust (<a
href="open-telemetry/semantic-conventions#2003"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/2003/hovercard">#2003</a>)</li>
<li><code>otel</code>: Adds SDK self-monitoring metrics for log
processing (<a
href="open-telemetry/semantic-conventions#1921"
data-hovercard-type="pull_request"
data-hovercard-url="/open-telemetry/semantic-conventions/pull/1921/hovercard">#1921</a>)</li>
</ul>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

device.id vs installation.id on Android and iOS
9 participants