microsoft / microsoft/CLRInstrumentationEngine

Cooperative Distribution Model Requirements

Open
#37 8 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

question
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.

  1. Detect if the Instrumentation Engine is installed.
  2. Detect if the Instrumentation Engine is configured.
  3. Install the Instrumentation Engine.
  4. 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:

  1. 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
  1. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.