Skip to content
CAI
Software that uses CAICheck a score

Thorium/Owin.Compression

57.3

Adequate · 3 October 2026

931

lines of production code

F#

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Owin.Compression is a middleware library that provides configurable response compression for web applications, supporting Brotli, Deflate, and Gzip algorithms. It integrates with both traditional OWIN self-hosting and modern ASP.NET Core/Kestrel environments, offering features like ETag caching, path exclusion, and streaming control. The system is designed to optimize bandwidth usage and improve performance by serving compressed content based on client capabilities and configurable rules.

Features

Brotli compression support and expanded platform compatibility

The Owin.Compression module now supports Brotli compression in addition to Deflate and GZip, available when targeting .NET Standard 2.1 or higher (e.g., .NET 6.0, .NET 8.0, .NET 10.0) via built-in .NET functions. The library has been updated to target .NET 4.8, .NET Standard 2.0, and .NET Standard 2.1, and can now be used with ASP.NET Core/Kestrel alongside OWIN SelfHost. New configuration options allow users to disable deflate, brotli, or streaming responses, and the module now supports eTag caching to send 304 responses when content has not changed.

(repo-wide) · high confidence

Introduction of Owin.Compression middleware with Brotli support and ETag handling

A new Owin.Compression middleware is introduced, providing configurable compression for file serving and response bodies. The implementation adds support for Brotli compression on .NET Standard 2.1+ alongside existing Deflate and GZip options. It includes logic to handle ETags and conditional requests (If-None-Match) to return 304 Not Modified responses, and allows users to configure allowed file extensions, MIME types, minimum compression sizes, and excluded paths.

Owin.Compression · high confidence

Behavioural changes

Owin.Compression v1.0.51: Expanded framework support, Brotli compression, and eTag caching

The Owin.Compression module has been updated to version 1.0.51, significantly expanding its capabilities and target platforms. The library now supports .NET Standard 2.1, .NET 8.0, and .NET 10.0 in addition to the legacy .NET Framework 4.8, enabling usage in modern ASP.NET Core/Kestrel environments alongside traditional OWIN self-hosting. Functionally, the compression engine now includes Brotli support alongside Deflate and GZip, and introduces built-in eTag caching for improved performance. The module also adds new configuration options, including the ability to disable Deflate or streaming, set a minimum size threshold for compression, and exclude specific paths (such as SignalR) from processing.

src/Owin.Compression · high confidence

Test coverage

Added ASP.NET Core Web API test project; Migrate test suite from NUnit to xUnit.

Dependencies

Migration to .NET SDK-style projects and modern .NET targets

The project has migrated from legacy .NET Framework project formats to the modern SDK-style project system, enabling support for .NET Standard 2.1, .NET 8.0, and .NET 10.0 in the main library, while the .NET Framework components target .NET 4.8 and 4.8.1. This update also replaces the NUnit test framework with xUnit and upgrades the build tooling to FAKE 6.1.4, ensuring compatibility with Visual Studio 2022 and current .NET SDKs.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 54 → 57 (+2.9)
  • Rubric changed (rubric-2026.09.15 → rubric-2026.10.1) — scores are not directly comparable.

Lenses

  • Code Health 58 → 51 (-6.4)
  • Architecture 69 → 95 (+25.6)
  • Maturity 48 → 52 (+4.3)
  • Readiness 55 → 55 (+0.0)
  • Security 87 → 87 (+0.0)
  • Performance 90 (new)

Resolved (1)

  • Documentation: written for insiders (lib/README.md)

New (17)

  • Documentation: no usage examples (README.md)
  • Duplicated block (11–12 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (13 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (13–14 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (14 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (15–16 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (17–18 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (17–22 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (19 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (21 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (26–27 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (29 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (31 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (7 lines × 2) (src/Owin.Compression/CompressionModule.fs)
  • Duplicated block (9 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Duplicated block (9 lines × 2) (src/Owin.Compression.Standard/CompressionModule.fs)
  • Near-duplicate member pair (249 shared lines) (src/Owin.Compression.Standard/CompressionModule.fs)

Changes since last survey

  • 1 commits — 1 feature/other, 0 fixes

By area

  • docs/content — 1 commit

Notable commits

  • change: fsharp-refactor code clean-up.

Architecture

  • Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 0 added · 0 removed

Added bounded contexts (1)

  • Owin.Compression

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Thorium/Owin.Compression was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 3 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit cb6ced7ef0a3faf1e5334b90252cf50cfa632b2d — the exact code this score is about.
  • Scored under rubric-2026.10.1 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-4f4226d619ea.