DEV Community

Cover image for DocWire SDK 2026.05.25 — AGPLv3, Heuristic Content Detection, and Test Modernization
Krzysztof Nowicki
Krzysztof Nowicki

Posted on

DocWire SDK 2026.05.25 — AGPLv3, Heuristic Content Detection, and Test Modernization

_

This release carries a license change, a meaningful fix to content type detection, and a restructured test suite.


License: GPLv2 → AGPLv3

DocWire SDK moves to the GNU Affero General Public License v3.0.

The core reason: AGPLv3 closes the SaaS loophole that GPLv2 left open. Under GPLv2, an organization could run DocWire as a networked service — serving requests, processing documents, building a product — without ever releasing their source code. The GPL's copyleft obligation only triggers on binary distribution, not on running software as a service. AGPLv3 extends that obligation to network use.

Beyond the loophole, AGPLv3 brings three concrete improvements over GPLv2:

  • Explicit patent grants protecting users from litigation by contributors
  • Apache License 2.0 compatibility enabling broader ecosystem integration
  • More precise legal language for international enforceability

DocWire remains dual-licensed. A commercial license is available for deployments incompatible with AGPLv3 terms. For more on how DocWire fits into your stack: docwire.io


Content Type Detection

Content type detection breaks silently in the real world — wrong extensions, missing metadata, non-seekable network streams. This release introduces specialized heuristic detectors for images (BMP, WEBP) and ZIP-based containers (OOXML, ODF formats: DOCX, XLSX, PPTX). The detectors check local file headers in the first 4KB before falling back to deep inspection, specifically fixing detection failures on non-seekable streams with libmagic 5.47+.

Additional improvements:

  • MIME type normalization — legacy types from libmagic are now standardized to modern standards (e.g. text/xmlapplication/xml)
  • Performance — heuristic detectors for ASP and HTML now use std::string_view, reducing memory overhead
  • Deterministic tie-breaking — MIME results are now alphabetically consistent across platforms

SSL Server

httplib::SSLServer initialization has been refactored to use the recommended setup callback for certificate and key configuration, aligning with the latest library API.


Test Infrastructure

The monolithic api_tests.cpp has been split into focused files:

core_tests.cpp
error_tests.cpp
log_tests.cpp
...
Enter fullscreen mode Exit fullscreen mode

All unit tests are now consolidated into a single docwire_tests binary. Process creation overhead under Valgrind is significantly reduced.


Fixes

  • Regressions in OOXML and ODF detection on non-seekable streams resolved
  • Minor test suite issues and missing #include directives addressed

Full release: github.com/docwire/docwire/releases/tag/2026.05.25


Top comments (0)