Patch Detail
Show a patch.
GET /api/patches/25969/?format=api
{ "id": 25969, "url": "https://patchwork.libcamera.org/api/patches/25969/?format=api", "web_url": "https://patchwork.libcamera.org/patch/25969/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20260126190141.2410546-4-laurent.pinchart@ideasonboard.com>", "date": "2026-01-26T19:01:41", "name": "[RFC/PATCH,3/3] Documentation: architecture: Detail policy on dependencies", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "46a82ed392bf4b5678a342fcb0105272108eacb7", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/25969/mbox/", "series": [ { "id": 5740, "url": "https://patchwork.libcamera.org/api/series/5740/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=5740", "date": "2026-01-26T19:01:38", "name": "Documentation: Explain libcamera's policy on dependencies", "version": 1, "mbox": "https://patchwork.libcamera.org/series/5740/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/25969/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/25969/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 64276C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 26 Jan 2026 19:01:52 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 17C3B61FC9;\n\tMon, 26 Jan 2026 20:01:52 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 51F9961A35\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 26 Jan 2026 20:01:47 +0100 (CET)", "from pendragon.ideasonboard.com\n\t(2001-14ba-703d-e500--2a1.rev.dnainternet.fi\n\t[IPv6:2001:14ba:703d:e500::2a1])\n\tby perceval.ideasonboard.com (Postfix) with UTF8SMTPSA id 94F211AE2\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 26 Jan 2026 20:01:11 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"wKvy3IMR\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1769454071;\n\tbh=xC5Ps4nn24E9cC02PUx4CpNFDZy8mobPtSh+0Zpgnbk=;\n\th=From:To:Subject:Date:In-Reply-To:References:From;\n\tb=wKvy3IMRA0SKmjn/IijAuNdQQXkBrTEI3twAySRDWnzFDGC3svTT53l0X9CZUVhL/\n\tJrho+NyDeoSHDSja1BP4HQggQIFWCrveWOcyI0lwmv5h2iUxqIa9sSioR4IvVaEJ49\n\tHpUU3ltNYscn1kRDer0kB+7IiJIwkIrKaPzNjVCw=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Subject": "[RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies", "Date": "Mon, 26 Jan 2026 21:01:41 +0200", "Message-ID": "<20260126190141.2410546-4-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.52.0", "In-Reply-To": "<20260126190141.2410546-1-laurent.pinchart@ideasonboard.com>", "References": "<20260126190141.2410546-1-laurent.pinchart@ideasonboard.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "libcamera-devel@lists.libcamera.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "<libcamera-devel.lists.libcamera.org>", "List-Unsubscribe": "<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>", "List-Archive": "<https://lists.libcamera.org/pipermail/libcamera-devel/>", "List-Post": "<mailto:libcamera-devel@lists.libcamera.org>", "List-Help": "<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>", "List-Subscribe": "<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "libcamera has a policy on usage of 3rd party components that has never\nbeen documented. Detail it in the architecture documentation page, with\nan explicit description of the licensing requirements.\n\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n Documentation/libcamera_architecture.rst | 41 +++++++++++++++++-------\n 1 file changed, 30 insertions(+), 11 deletions(-)", "diff": "diff --git a/Documentation/libcamera_architecture.rst b/Documentation/libcamera_architecture.rst\nindex 73888e499128..417ecf02c5f3 100644\n--- a/Documentation/libcamera_architecture.rst\n+++ b/Documentation/libcamera_architecture.rst\n@@ -112,18 +112,19 @@ Image Processing Algorithms\n and control hardware image processing based on the parameters supplied by\n upper layers, closing the control loop of the ISP.\n \n- IPAs are loaded as external plugins named IPA Modules. IPA Modules can be part\n- of the libcamera code base or provided externally by camera vendors as\n- open-source or closed-source components.\n+ IPAs are loaded as external plugins named IPA Modules. IPA Modules can be\n+ part of the libcamera code base or provided externally by camera vendors.\n+ In-tree IPA modules are covered by the same license as the rest of libcamera,\n+ external IPA modules can be open-source or closed-source.\n \n- Open source IPA Modules built with libcamera are run in the same process space\n- as libcamera. External IPA Modules are run in a separate sandboxed process. In\n- either case, they can only interact with libcamera through the API provided by\n- the Pipeline Handler. They have a restricted view of the system, with no direct\n- access to kernel camera devices, no access to networking APIs, and limited\n- access to file systems. All their accesses to image and metadata are mediated\n- by dmabuf instances explicitly passed by the Pipeline Handler to the IPA\n- Module.\n+ IPA Modules built with libcamera are run in the same process space as the\n+ library. External IPA Modules are run in a separate sandboxed process. In\n+ either case, they can only interact with libcamera through the API provided\n+ by the Pipeline Handler. They have a restricted view of the system, with no\n+ direct access to kernel camera devices, no access to networking APIs, and\n+ limited access to file systems. All their accesses to image and metadata are\n+ mediated by dmabuf instances explicitly passed by the Pipeline Handler to the\n+ IPA Module.\n \n IPA Modules are only required for platforms and devices with an ISP controlled\n by the host CPU. Camera sensors which have an integrated ISP are not\n@@ -141,3 +142,21 @@ Helpers and Support Classes\n self-contained support classes, even if such code is present only once in the\n code base, in order to keep the source code clean and easy to read. This\n should be the case for instance for plugin management.\n+\n+Dependencies\n+------------\n+\n+As a system component, libcamera tries to minimize its dependency on\n+third-party libraries. New dependencies are evaluated on a case-by-case basis,\n+to balance the value they bring with the impact on distributions. Dependencies\n+for optional features must be conditioned by a meson feature option, as usage\n+of dependencies based only on auto-detection hinders reproducible builds and\n+dependency management for distributions. All dependencies must be compatible\n+with the libcamera license.\n+\n+Dependencies may not be used to load closed-source components from pipeline\n+handlers or in-tree IPA modules. This includes GPU shaders or neural network\n+models. Usage of closed-source components is permitted in external IPA Modules\n+only. Pipeline handlers and in-tree IPA Modules are allowed to use neural\n+networks provided that both the model and its training data are available under\n+an open-source license compatible with libcamera.\n", "prefixes": [ "RFC/PATCH", "3/3" ] }