Runtime Activation Policy for Legacy Application Compatibility
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Complex software applications face compatibility issues when evolving runtimes introduce changes that affect older applications and plug-ins, making it difficult to maintain backwards compatibility while allowing easy migration to new runtime versions, especially in environments with mixed managed and native code execution.
Innovation Solution
A runtime activation system with a set of policies that use an activation shim to choose the appropriate runtime version for an application or module, consulting compatibility data and global configuration to balance backwards compatibility and ease of migration, allowing applications to handle new and side-by-side runtime versions flexibly.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If a runtime evolves to support multiple versions side-by-side in the same process, then compatibility with both old and new applications is improved, but the complexity of the runtime system increases
Solution Approach 1:
The runtime system is segmented into multiple version instances that can coexist independently within the same process. Each runtime version is treated as a separate loadable module with its own namespace and execution context, allowing version 1, version 2, and version 3 to operate simultaneously without interfering with each other.
Solution Approach 2:
An activation policy system acts as an intermediary layer between applications and runtime versions. This mediator examines application compatibility information and automatically selects the appropriate runtime version to load, shielding applications from the complexity of multiple runtime versions while enabling seamless compatibility.
2Reliability
If applications are tightly coupled to a specific runtime version, then execution reliability is improved, but adaptability to new runtime versions deteriorates
Solution Approach 1:
Applications are assigned compatibility information in advance that specifies which runtime versions they can execute on. This preliminary tagging allows the activation policy to make informed decisions about runtime selection before execution begins, ensuring reliable operation while enabling future updates.
Solution Approach 2:
The runtime binding is made dynamic rather than static. Instead of hard-coding a specific runtime version into the application, the system dynamically selects the appropriate runtime version at load time based on the application's compatibility information and the available runtime versions, allowing flexible adaptation while maintaining reliability.
3Adaptability or versatility
If the runtime hides new versions from legacy applications, then backwards compatibility is improved, but the ability to facilitate easy migration to new versions deteriorates
Solution Approach 1:
The runtime visibility is made local rather than global. Legacy applications see only the runtime versions they are compatible with, while new applications can discover and utilize newer runtime versions. This localized view allows each application type to have its own quality experience without compromising the other.
Solution Approach 2:
The activation policy system provides feedback mechanisms that allow applications to indicate their runtime preferences and compatibility requirements. This feedback loop enables the system to learn from application behavior and optimize runtime selection, facilitating smooth migration paths while maintaining backwards compatibility.
Data Source
AI summary
A runtime activation system uses a set of policies designed to provide a balance between backwards compatibility and ease of migrating existing (non side-by-side aware) applications to new runtime versions. The system chooses the runtime version to activate when an application runs or when a runtime application programming interface is invoked based on the set of policies. The system implements these policies by consulting compatibility data associated with the application indicating the intent of the author and level of side-by-side support provided by the application and/or global configuration data. Based on the compatibility data, the system chooses policies that are right in the most common cases, and easy to modify in less common cases. Thus, the runtime activation system allows applications to be flexibly configured to handle new runtime versions in a manner determined by the application author, a system administrator, or others.


