microsoft / microsoft/CLRInstrumentationEngine
Cooperative Distribution Model Requirements
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 102
- Forks
- 52
- Avg merge
- 13h 11m
- Merged PRs (30d)
- 6
Description
Overview
The CLR Instrumentation Engine's main purpose is to provide cooperation among profilers running in the same environment. This requires various users to cooperatively ensure that the latest version of the Engine can be detected and loaded into the process.
To achieve this goal, we are asking each partner team to participate and provide their needs and requirements for their scenarios. Once we have enough information, we can discuss distribution solutions that can hopefully meet everyone's needs.
Distribution Steps
The distribution story for the Engine can be described through a series of steps.
- Detect if the Instrumentation Engine is installed.
- Detect if the Instrumentation Engine is configured.
- Install the Instrumentation Engine.
- Configure/activate the Instrumentation Engine.
Requirements
These are the currently identified requirements we expect for the Engine distribution. Please let us know if you have feedback or conflicts with these requirements and reply with your responses to these questions about your product.
- Support single well-known installation folder to easily detect if installed.
- Support updating the Engine via side-by-side versions to avoid file locks on older versions.
- Support determining latest version so profiler clients can detect if it meets their minimum requirements. The Engine is required to be forward compatible
- Setting Environment Variables in a consistent and well-known manner.
- Support ASP.NET Desktop apps on Windows and ASP.NET Core apps on both Windows and Linux.
- Don't require clean-up of older versions. The feasibility of this is dependent on the installation technologies and techniques.
- Have a validation mechanism against the installation
Questions
- What are the installation technologies you are currently using (eg. MSI, Exe bundles, xcopy, scripts)? Please differentiate between different platforms.
- What are the minimum requirements on your target platform?
- Windows versions & skus
- Linux distros & versions
- Framework requirements (.Net Framework/Core versions)
- Supported application types (ASP.NET on IIS, WPF, etc.)
- Is installation expected or allowed to run with admin privileges (ie. be able to install into %programfiles%)? Do you require installing to a non-admin accessible folder?
Possible Solutions
There may be multiple solutions, but the two options we have considered internally are:
- MSI and/or a MergedModule for Windows platform
Each partner team has mentioned using an MSI for Windows to install their product. MSI has the benefit of supporting the above requirements.
If we go this route, there are several implementation details to consider:
- Share at the component level or chain in our MSI
- Custom actions for detection
- Per-user versus per-machine installation
- 1 MSI per version
- Installation Scripts
There are several options for scripting languages, including Python, Bash, and PowerShell which allow for cross platform support and customizable control over installation. This also allows for use of various packaging frameworks such as NuGet or distro-specific options like apk, deb files. Several concerns about this option:
- Ability for MSIs or existing distribution technologies to incorporate this into their installation.
- Introducing new requirements (eg. dotnet core 2.1 for PS Core)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Review the Distribution Steps, listed requirements, partner questions, and the MSI versus installation-script options in the issue. Done would require agreed partner requirements and a selected distribution approach, but no implementation files or tests are identified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- bash, powershell, python
- Domain
- devops, infrastructure, release
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100