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

Create app.installation.id attribute #1897

Merged
merged 29 commits into from
Mar 25, 2025
Merged
Changes from 22 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
5176337
Create installation.id, redefine device.id
bencehornak Feb 10, 2025
1997457
Add entry to schema-next
bencehornak Feb 10, 2025
606df0e
Add changelog entry
bencehornak Feb 10, 2025
30f369b
Update GH templates
bencehornak Feb 10, 2025
01cb310
Improve language, remove same vendor comment
bencehornak Feb 16, 2025
be11f06
Relax MUST to SHOULD
bencehornak Feb 16, 2025
bdb3175
Improve language
bencehornak Feb 16, 2025
9aa23c7
Remove PII notice from installation.id
bencehornak Feb 16, 2025
1661c60
Revert schema-next.yaml change
bencehornak Feb 16, 2025
be512a1
Explicitly point out PII information
bencehornak Feb 16, 2025
6e57e18
Change reference to absolute one
bencehornak Feb 16, 2025
962777a
Merge remote-tracking branch 'origin/main' into device-id-vs-installa…
bencehornak Feb 16, 2025
0ac6308
Add note about alternative installation.id implementations
bencehornak Feb 27, 2025
7bf94ad
Revert prefix idea
bencehornak Feb 27, 2025
922bbfa
Rename attribute to `app.installation.id`
bencehornak Feb 27, 2025
9389e2c
Merge remote-tracking branch 'origin/main' into device-id-vs-installa…
bencehornak Feb 27, 2025
b1ca8d5
Move device.id changes to a separate PR
bencehornak Feb 27, 2025
34207c3
Rename directory in CODEOWNERS too
bencehornak Feb 27, 2025
fd2e226
Make adjustments based on @bidetofevil's comment
bencehornak Feb 27, 2025
76ce4ba
Update changelog entry
bencehornak Feb 27, 2025
374884c
Merge branch 'main' into device-id-vs-installation-id
breedx-splk Mar 11, 2025
edd83f8
Merge branch 'main' into device-id-vs-installation-id
breedx-splk Mar 21, 2025
0d2f2b3
Add note about app upgrades
bencehornak Mar 23, 2025
79c88d5
Add note about multiple OTel SDKs in an app
bencehornak Mar 23, 2025
c93b2d6
Change sentence to introduce Android examples
bencehornak Mar 23, 2025
5792fcd
Improve language
bencehornak Mar 25, 2025
c5c583b
Improve description of app attributes
bencehornak Mar 25, 2025
06320f0
Merge branch 'main' into device-id-vs-installation-id
joaopgrassi Mar 25, 2025
325a7c2
Merge branch 'main' into device-id-vs-installation-id
joaopgrassi Mar 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .chloggen/1897.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Use this changelog template to create an entry for release notes.
#
# If your change doesn't affect end users you should instead start
# your pull request title with [chore] or use the "Skip Changelog" label.

# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: new_component

# The name of the area of concern in the attributes-registry, (e.g. http, cloud, db)
component: app

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Create `app.installation.id` attribute

# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
# The values here must be integers.
issues: [1874, 1897]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext:
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -56,6 +56,7 @@

# Mobile semantic conventions
/docs/mobile/ @open-telemetry/specs-semconv-approvers @open-telemetry/semconv-mobile-approvers
/model/app/ @open-telemetry/specs-semconv-approvers @open-telemetry/semconv-mobile-approvers
/model/device/ @open-telemetry/specs-semconv-approvers @open-telemetry/semconv-mobile-approvers

# K8s semantic conventions
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
@@ -23,6 +23,7 @@ body:
# DO NOT manually edit it.
# Start semconv area list
- area:android
- area:app
- area:artifact
- area:aspnetcore
- area:aws
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/change_proposal.yaml
Original file line number Diff line number Diff line change
@@ -15,6 +15,7 @@ body:
# DO NOT manually edit it.
# Start semconv area list
- area:android
- area:app
- area:artifact
- area:aspnetcore
- area:aws
1 change: 1 addition & 0 deletions docs/attributes-registry/README.md
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@ All registered attributes are listed by namespace in this registry.
Currently, the following namespaces exist:

- [Android](android.md)
- [App](app.md)
- [Artifact](artifact.md)
- [Aspnetcore](aspnetcore.md)
- [AWS](aws.md)
32 changes: 32 additions & 0 deletions docs/attributes-registry/app.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<!-- NOTE: THIS FILE IS AUTOGENERATED. DO NOT EDIT BY HAND. -->
<!-- see templates/registry/markdown/attribute_namespace.md.j2 -->

# App

## App Attributes

Describes attributes related to client-side applications (e.g. web apps or mobile apps).

| Attribute | Type | Description | Examples | Stability |
|---|---|---|---|---|
| <a id="app-installation-id" href="#app-installation-id">`app.installation.id`</a> | string | A unique identifier representing the installation of an application on a specific device [1] | `2ab2916d-a51f-4ac8-80ee-45ac31a28092` | ![Development](https://img.shields.io/badge/-development-blue) |

**[1] `app.installation.id`:** Its value SHOULD remain the same between launches of the same installation of an application.
It SHOULD change if the application is uninstalled or if all applications of the vendor are uninstalled.
Additionally, users might be able to reset this value (e.g. by clearing application data).
If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` SHOULD have a different value.
Hardware IDs (e.g. serial number, IMEI, MAC address) MUST NOT be used as the `app.installation.id`.

On iOS this value SHOULD be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor).

On Android this value SHOULD be equal to either:

- [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations).
- A globally unique UUID which is persisted across sessions in your application.

But it might be equal to other identifiers as well, if the above implementations are not preferred for some reason, such as:

- [App set ID](https://developer.android.com/identity/app-set-id).
- [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID).

More information about Android identifier best practices can be found [here](https://developer.android.com/training/articles/user-data-ids).
35 changes: 35 additions & 0 deletions model/app/registry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
groups:
- id: registry.app
type: attribute_group
display_name: App Attributes
brief: >
Describes attributes related to client-side applications (e.g. web apps or mobile apps).
stability: development
attributes:
- id: app.installation.id
type: string
stability: development
brief: >
A unique identifier representing the installation of an application on a specific device
note: |
Its value SHOULD remain the same between launches of the same installation of an application.
It SHOULD change if the application is uninstalled or if all applications of the vendor are uninstalled.
Additionally, users might be able to reset this value (e.g. by clearing application data).
If an app is installed multiple times on the same device (e.g. in different accounts on Android), each `app.installation.id` SHOULD have a different value.
Hardware IDs (e.g. serial number, IMEI, MAC address) MUST NOT be used as the `app.installation.id`.

On iOS this value SHOULD be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor).

On Android this value SHOULD be equal to either:

- [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations).
- A globally unique UUID which is persisted across sessions in your application.

But it might be equal to other identifiers as well, if the above implementations are not preferred for some reason, such as:

- [App set ID](https://developer.android.com/identity/app-set-id).
- [`Settings.getString(Settings.Secure.ANDROID_ID)`](https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID).

More information about Android identifier best practices can be found [here](https://developer.android.com/training/articles/user-data-ids).
examples:
- 2ab2916d-a51f-4ac8-80ee-45ac31a28092
9 changes: 9 additions & 0 deletions model/app/resources.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
groups:
- id: resource.app
type: resource
stability: development
name: app
brief: >
A client-side application.
attributes:
- ref: app.installation.id