Pick Your Linux
Compatibility-based, explainable, no rankings.

How It Works

This page is a docs-driven overview of the decision engine, data model, and explainability rules behind Pick Your Linux.

Documentation Sources Covered

  • ARCHITECTURE.md
  • DATA_CONTRACT.md
  • DATA_RULES.md
  • QUESTION_CATALOG.md
  • CONSTRAINT_MAPPING.md
  • RESULTS_COPY.md
  • TESTING.md
  • TONE_AND_COPY.md
  • FRONTEND-IMPLEMENTATION-RULES.md

1. Product Promise

Pick Your Linux is a deterministic compatibility engine. It does not rank, score, or suggest a single best distro. It only filters with explicit rules and shows transparent reasons.

  • Multiple matches are expected when multiple distros satisfy the same constraints.
  • No hidden weights, popularity scores, or subjective recommendations are used.
  • You can change answers and immediately see how outcomes change.

2. Core Architecture

The system is split into strict layers to keep logic testable and UI dumb.

  • Data layer (`/src/data`): schemas, question catalog, distro dataset.
  • Logic layer (`/src/engine/logic.ts`): pure condition and patch evaluation.
  • State layer (`/src/engine/state.ts`): flow orchestration, progress, undo, results view models.
  • UI layer (`/src/components`): render-only components that consume view models.
  • Import direction is one-way: UI -> state -> logic.

3. Data Contract (UserIntent)

Every answer updates a single validated `UserIntent` object. This is the decision state.

  • Installation and maintenance preferences define setup and post-install friction tolerance.
  • Proprietary preference controls acceptance of closed-source components.
  • Hardware context includes architecture, RAM, secure boot, and GPU details.
  • Use-case tags include Gaming, Privacy, Work, Server, and OldHardware.
  • Optional refinement fields include desktop preference, release model, init system, and package manager.

4. Question Engine

Questions are data-driven. Each option contains deterministic JSON patches. Visibility is controlled only by explicit conditions.

  • Allowed patch ops: `set`, `add_tag`, `remove_tag`.
  • Allowed condition ops: `eq`, `neq`, `in`, `contains`, `and`, `or`.
  • No functions in data, no callbacks, and no runtime eval.
  • Question order and phase behavior come from the catalog, not UI logic.

5. Phased Journey

Flow depth is progressive and forward-only: Quick (Beginner) -> Intermediate -> Advanced.

  • Quick gathers high-signal constraints with minimal time.
  • Intermediate adds practical refinements (desktop style, update model, hardware clarifiers).
  • Advanced adds explicit system preferences (init, package manager, stricter controls).
  • Users can stop at results after quick/intermediate and continue refining later without restart.

6. Hard Constraints (Pass/Fail)

Hard constraints exclude incompatible distros. If a distro fails one hard rule, it is out.

  • GUI installer requirement excludes manual-installer distros.
  • No-terminal maintenance requirement excludes hands-on maintenance distros.
  • Avoid proprietary excludes distros requiring proprietary support.
  • Require proprietary excludes distros with no proprietary support.
  • Old hardware requirement excludes distros not suitable for low-end or older hardware.
  • Secure boot and NVIDIA preferences apply additional explicit compatibility checks.

7. Soft Compatibility Reasons

Soft reasons do not rank distros. They only explain why a compatible distro may fit better for specific goals.

  • Gaming and privacy posture generate explainability reasons.
  • Desktop/release/init/package-manager preferences add explicit match reasons.
  • Choice-driven reasons and strict-filter matches are shown separately in results.

8. Results and Explainability

Results are presented as compatibility outcomes, not recommendations.

  • Each card includes strict filters matched, choice-driven reasons, and potential friction.
  • Explainability panel shows active constraints and excluded distro reasons.
  • Compare page exposes distro attributes side-by-side using the same source data.
  • Sorting defaults to most matches first; user filters are explicit and reversible.

9. Data Quality and Audits

Distro data follows schema validation plus consistency audits.

  • Schema validation enforces legal values for every distro attribute.
  • Audit rules flag suspect combinations (for example NVIDIA support vs proprietary policy).
  • Secure boot claims and rolling-maintenance expectations are audited for defensibility.

10. Testing and Validation Gates

Changes are expected to pass deterministic validation pipelines.

  • Flow validator checks that question visibility and transitions are coherent.
  • Question and distro validators enforce schema and catalog integrity.
  • Engine tests cover condition logic, patch behavior, completion, and undo.
  • The goal is explainable and reproducible behavior under strict typing and schema control.

11. UX and Copy Rules

Language is designed for clarity and reversibility.

  • Avoid words like best, top, recommended, or popularity-driven claims.
  • Avoid skill-judgment framing in the UI; focus on comfort and goals.
  • Every choice should feel reversible: review answers, edit, or restart.