RxInfer Usage Telemetry
RxInfer has two separate telemetry features:
- A minimal package usage counter (enabled by default)
- Optional session sharing for better support and development insights
The telemetry implementation in RxInfer has been designed with careful consideration of the community discussion about telemetry in Julia packages, particularly the discourse thread "Pkg.jl telemetry should be opt-in". We've aimed to strike a balance between gathering useful information for package development while respecting user privacy and control.
The following table compares the key properties of RxInfer's two telemetry features.
Property | Package Usage Counter | Session Sharing |
---|---|---|
Entirely Anonymous | Yes | Yes |
Shared Across Julia Sessions | No | No |
Enabled by default | Yes (opt-out) | No (opt-in) |
Deletion Request Support | No (UUIDs not persistent, we cannot backtrace the session to a specific user) | Yes* (only if users save their session ID and share it with us anonymously with the form below, otherwise we cannot backtrace the session to a specific user) |
Can Be Disabled for a Specific Julia Session | Yes | Yes (disabled by default) |
Can Be Disabled for All Julia Sessions | Yes | Yes (disabled by default) |
Can Be Disabled with Environment Variable | Yes | Yes (disabled by default) |
Customizable Behavior | Yes (with Preferences.jl, see Package Usage Counter manual) | Yes (with Preferences.jl, see Session Sharing manual) |
Can Be Enabled for a Specific Julia Session | Yes | Yes |
Can Be Enabled for All Julia Sessions | Yes | Yes |
What Is Being Recorded | Only timestamp and random UUID | Session metadata & errors, no actual data |
Real-Time Sharing of Recorded Data | Yes (on package load) | Optional (manual/automatic) |
Local Access to Recorded Data | N/A (No data is collected) | Yes (via session inspection, see Session Summary manual) |
Enables Extra Support from Core Developers | No | Yes* (if users are willing to share their session ID when opening a GitHub issue or a discussion on the GitHub repository, otherwise we cannot backtrace the session to a specific user) |
Performance Impact | Negligible (only on package load) | Minimal (async sharing) |
CI Environment Behavior | Automatically disabled | Automatically disabled |
Users are welcome to join our regular online meetings where we analyze the collected data and discuss how it helps shape RxInfer's development.
Package Usage Counter
By default, RxInfer counts how many times the package is loaded via using RxInfer
. This counter:
- Only records a timestamp and a random UUID for deduplication
- UUIDs are not persistent and are re-generated for each session
- Does not collect any code, data, or environment information
- Is completely anonymous
- Helps us understand how widely RxInfer is used
[Disabling Package Usage Counter
You can disable the counter in several ways:
Using Julia functions:
using RxInfer RxInfer.disable_rxinfer_using_telemetry!() # Requires Julia restart
Using environment variables:
export LOG_USING_RXINFER=false
The counter is also automatically disabled in:
- CI environments (detected via
CI=true
environment variable) - When telemetry is disabled via
disable_rxinfer_using_telemetry!()
- When the telemetry endpoint is set to
nothing
RxInfer.log_using_rxinfer
— Functionlog_using_rxinfer()
Send an anonymous usage statistics event to the telemetry endpoint on using RxInfer
. This function makes an asynchronous HTTP POST request to the configured endpoint. See RxInfer.set_telemetry_endpoint!
to configure the endpoint. If the telemetry endpoint is set to nothing
, this function does nothing. The call sends only timestamp and a random UUID. The request is made asynchronously to avoid blocking the user's workflow. See RxInfer.disable_rxinfer_using_telemetry!
to disable telemetry on using RxInfer
. Alternatively, set the environment variable LOG_USING_RXINFER
to false
to disable logging.
RxInfer.disable_rxinfer_using_telemetry!
— Functiondisable_rxinfer_using_telemetry!()
Disable telemetry collection on using RxInfer
at compile time. The change requires a Julia session restart to take effect.
See also: set_telemetry_endpoint!
, enable_rxinfer_using_telemetry!
RxInfer.enable_rxinfer_using_telemetry!
— Functionenable_rxinfer_using_telemetry!()
Enable telemetry collection on using RxInfer
at compile time. The change requires a Julia session restart to take effect.
See also: set_telemetry_endpoint!
, disable_rxinfer_using_telemetry!
RxInfer.set_telemetry_endpoint!
— Functionset_telemetry_endpoint!(endpoint)
Set the telemetry endpoint URL for RxInfer.jl at compile time. This endpoint is used for collecting anonymous usage statistics to help improve the package.
The change requires a Julia session restart to take effect.
Arguments
endpoint
: The URL of the telemetry endpoint as aString
ornothing
`
Session Sharing
RxInfer includes a built-in session tracking feature (detailed in Session Summary) that helps you monitor and debug your inference tasks. You can choose to share these sessions with core developers to:
- Get better support when encountering issues
- Help improve RxInfer through real-world usage insights
- Contribute to community-driven development
Read more about what data is present in the session history in the Session Summary manual.
How to Share Sessions
You can share your session data either manually or automatically.
Manual Sharing
Use the share_session_data
function to manually share your session:
RxInfer.share_session_data
— Functionshare_session_data(session = RxInfer.default_session(); show_progress::Bool = true)
Share your session data to help improve RxInfer.jl and its community. This data helps us:
- Understand how the package is used in practice
- Identify areas for improvement
- Make informed decisions about future development
- Share aggregate usage patterns in our community meetings
The data is organized in a structured way:
- Basic session info (Julia version, OS, etc.)
- Anonymous statistics about different types of package usage
- Information about individual labeled runs
All data is anonymous and only used to improve the package. We discuss aggregate statistics in our public community meetings to make the development process transparent and collaborative.
Arguments
session::Session
: The session object containing data to shareshow_progress::Bool = true
: Whether to display progress bars during sharing
Progress Display
When show_progress
is true (default), the function displays:
- A blue progress bar for sharing session statistics
- A green progress bar for sharing labeled runs
Automatic Sharing
You can enable automatic session sharing after each session update:
RxInfer.enable_automatic_session_sharing!
— Functionenable_automatic_session_sharing!()
Enable automatic session sharing after each inference call. The change requires a Julia session restart to take effect. When enabled, session data will be automatically shared after each successful inference call. This helps improve RxInfer by providing usage patterns and helps with debugging issues.
See also: disable_automatic_session_sharing!
, share_session_data
RxInfer.disable_automatic_session_sharing!
— Functiondisable_automatic_session_sharing!()
Disable automatic session sharing after inference calls. The change requires a Julia session restart to take effect.
See also: enable_automatic_session_sharing!
, share_session_data
When automatic sharing is enabled:
- Session data is shared after each session update
- Sharing is done asynchronously (won't block your code)
- No progress bars or messages are shown
- Failed sharing attempts are silently ignored
Using Session IDs in Issues
When you share a session and then open a GitHub issue, include your session ID. This helps us:
- Link your issue to the shared session data
- Understand your usage context
- Provide more accurate and helpful support
Deleting Shared Data
If you wish to delete previously shared session data, you can contact the core developers through GitHub issues at RxInfer.jl or anonymously with the following form.
When requesting deletion, you must provide the session UUID. Without this identifier, we cannot trace specific sessions back to individual users. See the Session Summary manual for details on how to obtain your session ID.
Privacy and Control
Remember:
- Session sharing is completely optional
- All statistics are anonymous, UUIDs are not persistent and are re-generated for each session
- No actual data is shared, only meta information (e.g., type of data, number of observations)
- You can inspect the sharing code in
src/telemetry.jl
- We only use this data to help improve RxInfer and provide better support
We appreciate your help in making RxInfer better! Whether you choose to enable telemetry or share sessions, your contribution helps us improve the package for everyone.
Developers Reference
RxInfer.to_firestore_invoke
— Functionto_firestore_invoke(invoke::SessionInvoke, stats_id::UUID)
Convert a SessionInvoke object to a Firestore-compatible document format. Includes a reference to the parent session stats.
RxInfer.to_firestore_value
— Functionto_firestore_value(value)
Convert a Julia value to a Firestore-compatible value format. Returns a NamedTuple with the appropriate Firestore field type.
RxInfer.to_firestore_session
— Functionto_firestore_session(session::Session)
Convert a Session object to a Firestore-compatible document format.
RxInfer.to_firestore_document
— Functionto_firestore_document(data::NamedTuple)
Convert a Julia NamedTuple to a Firestore document format. Returns a NamedTuple with fields in Firestore format.
RxInfer.to_firestore_session_stats
— Functionto_firestore_session_stats(stats::SessionStats, session_id::UUID)
Convert a SessionStats object to a Firestore-compatible document format. Includes a reference to the parent session.