Multi-Version Code Packaging for Independent Release Schedules

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing release engineering methods face challenges in accommodating variations in development, testing, and release schedules of interdependent components within a codebase, often requiring cumbersome branching, separate repositories, or refactoring, which complicate workflows and coordination between teams.

Innovation Solution

The system allows for packaging multiple versions of a logical segment of a codebase and controlling the execution of a specified version, enabling independent development and testing of interdependent components from a single source code repository, using configuration information to determine which versions to package and deploy based on user accounts or cohorts.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multiple versions of interdependent components are packaged together, then independent development and testing timelines are enabled, but package size and complexity increase

Engineering Contradiction:
Improveindependent development timelinesVSAvoidpackage structure
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The codebase is segmented into logical segments or modules that can be independently versioned and packaged. Each segment can have its own development and testing timeline while being contained within a unified package structure that manages dependencies automatically.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Multiple versions of logical segments are nested within a single package container. The package structure allows hierarchical organization where different versions of components are contained together with their dependency relationships preserved, enabling selective execution of specific versions.

Inventive Principle:
Principle #7Nested doll (Nesting)

2Ease of operation

If a single executable file contains multiple versions, then deployment simplicity is improved, but execution control complexity increases

Engineering Contradiction:
Improvedeployment processVSAvoidversion execution control
Core Design Contradiction:
Ease of operationVSDevice complexity

Solution Approach 1:

The executable file is designed with dynamic version selection capabilities. Configuration information stored within the package enables the system to dynamically determine which version of each logical segment to execute based on runtime conditions, user preferences, or dependency requirements, without requiring manual intervention.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

Configuration information acts as an intermediary layer between the multiple versions contained in the package and the execution engine. This intermediary stores metadata about available versions and their dependencies, enabling automated resolution of which version to execute without increasing user-facing complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Adaptability or versatility

If interdependent components have different release schedules, then development flexibility is improved, but integration coordination difficulty increases

Engineering Contradiction:
Improverelease schedule flexibilityVSAvoidintegration coordination
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

Configuration information is prepared in advance during the packaging process, containing all necessary metadata about component versions, dependencies, and compatibility relationships. This preliminary action enables the build system to automatically resolve integration requirements without real-time coordination between development teams working on different schedules.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The package structure incorporates dependency tracking and version compatibility information that provides feedback to the build system. When components are packaged with different versions, the system uses this feedback to automatically determine compatible combinations and resolve integration issues without manual coordination.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS10740093B2Advanced packaging techniques for improving work flows
Publication Date: 2020.08.11 DROPBOX INC
  • US10740093B2 patent drawing
  • US10740093B2 patent drawing
  • US10740093B2 patent drawing

AI summary

Source code of a logical segment of a codebase can be isolated from other portions of the codebase yet the logical segment and the other portions may have mutual dependencies. Packaging multiple versions of the logical segment and the other portions of the codebase to be compilable as a single binary file can simplify the development, testing, and release work flows of the codebase. For example, development, evaluation, and deployment of the logical segment and the other portions of the code base can run on different schedules. As another example, a provider of the codebase can control which version of the logical segment computing devices execute.