diff --git a/.chloggen/1897.yaml b/.chloggen/1897.yaml new file mode 100644 index 0000000000..8b123e24af --- /dev/null +++ b/.chloggen/1897.yaml @@ -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: diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index db371b7fc2..2a2c2f1611 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -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 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 4edc8d9694..236e03524f 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -23,6 +23,7 @@ body: # DO NOT manually edit it. # Start semconv area list - area:android + - area:app - area:artifact - area:aspnetcore - area:aws diff --git a/.github/ISSUE_TEMPLATE/change_proposal.yaml b/.github/ISSUE_TEMPLATE/change_proposal.yaml index b9e963a44b..617f5f81b5 100644 --- a/.github/ISSUE_TEMPLATE/change_proposal.yaml +++ b/.github/ISSUE_TEMPLATE/change_proposal.yaml @@ -15,6 +15,7 @@ body: # DO NOT manually edit it. # Start semconv area list - area:android + - area:app - area:artifact - area:aspnetcore - area:aws diff --git a/docs/attributes-registry/README.md b/docs/attributes-registry/README.md index 629a46c242..009deb0042 100644 --- a/docs/attributes-registry/README.md +++ b/docs/attributes-registry/README.md @@ -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) diff --git a/docs/attributes-registry/app.md b/docs/attributes-registry/app.md new file mode 100644 index 0000000000..676329712a --- /dev/null +++ b/docs/attributes-registry/app.md @@ -0,0 +1,30 @@ + + + +# App + +## Application Attributes + +Describes attributes related to client-side applications (e.g. web apps or mobile apps). + +| Attribute | Type | Description | Examples | Stability | +|---|---|---|---|---| +| `app.installation.id` | 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 persist across launches of the same application installation, including through application upgrades. +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. +If multiple OpenTelemetry SDKs are used within the same application, they SHOULD use the same value for `app.installation.id`. +Hardware IDs (e.g. serial number, IMEI, MAC address) MUST NOT be used as the `app.installation.id`. + +For iOS, this value SHOULD be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + +For Android, examples of `app.installation.id` implementations include: + +- [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). +- A globally unique UUID which is persisted across sessions in your application. +- [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). diff --git a/model/app/registry.yaml b/model/app/registry.yaml new file mode 100644 index 0000000000..4c3030b0ef --- /dev/null +++ b/model/app/registry.yaml @@ -0,0 +1,33 @@ +groups: + - id: registry.app + type: attribute_group + display_name: Application 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 persist across launches of the same application installation, including through application upgrades. + 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. + If multiple OpenTelemetry SDKs are used within the same application, they SHOULD use the same value for `app.installation.id`. + Hardware IDs (e.g. serial number, IMEI, MAC address) MUST NOT be used as the `app.installation.id`. + + For iOS, this value SHOULD be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/identifierforvendor). + + For Android, examples of `app.installation.id` implementations include: + + - [Firebase Installation ID](https://firebase.google.com/docs/projects/manage-installations). + - A globally unique UUID which is persisted across sessions in your application. + - [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 diff --git a/model/app/resources.yaml b/model/app/resources.yaml new file mode 100644 index 0000000000..bd21fd82db --- /dev/null +++ b/model/app/resources.yaml @@ -0,0 +1,9 @@ +groups: + - id: resource.app + type: resource + stability: development + name: app + brief: > + An app used directly by end users — like mobile, web, or desktop. + attributes: + - ref: app.installation.id