[{"id":37963,"web_url":"https://patchwork.libcamera.org/comment/37963/","msgid":"<CAEmqJPoGkaTRfn3FBk6J5hws=L2WAxRDbaBMTBqMZiOv7eJxqA@mail.gmail.com>","date":"2026-01-27T09:30:22","subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nOn Mon, 26 Jan 2026 at 19:01, Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> libcamera has a policy on usage of 3rd party components that has never\n> been documented. Detail it in the architecture documentation page, with\n> an explicit description of the licensing requirements.\n>\n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> ---\n>  Documentation/libcamera_architecture.rst | 41 +++++++++++++++++-------\n>  1 file changed, 30 insertions(+), 11 deletions(-)\n>\n> diff --git a/Documentation/libcamera_architecture.rst b/Documentation/libcamera_architecture.rst\n> index 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\nDoes this mean that such features must not be gated by the \"auto\" type\nof meson option.  Currently the RPi NN AWB uses an auto option, but we\ncan easily change to a boolean.\n\n>\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\nHow do we advertise where models/training data live?  Is putting it in\nthe commit message sufficient?\n\nRegards,\nNaush\n\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","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 F3BE2C3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Jan 2026 09:31:03 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id BC6B761FCC;\n\tTue, 27 Jan 2026 10:31:02 +0100 (CET)","from mail-ua1-x936.google.com (mail-ua1-x936.google.com\n\t[IPv6:2607:f8b0:4864:20::936])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B13FB61F9F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Jan 2026 10:31:00 +0100 (CET)","by mail-ua1-x936.google.com with SMTP id\n\ta1e0cc1a2514c-93f5b565da6so92592241.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Jan 2026 01:31:00 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"abm6rpv0\"; dkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1769506259; cv=none;\n\td=google.com; s=arc-20240605;\n\tb=hMZyWqPEL5cVixVFTa+gu5b4pUzUTVaj+nV77MlZ6CvhR85jlOqS2+jdPjhhU9mVS/\n\tyCkxGsQ08paHMBLyy8KuYodKwnuR8znQjK/30h+OJg/08AcxbNnlkKGyK7AZfxvhHx90\n\tb0pVYEz5WpPj99lhwNUWIijBMhRM4BfBptcsgJbA0WMMzx/2/OKHzDvI+B6AlAUnouQ9\n\trMKyN3o+/0vLnARZiVuQy7CBdLtijuELQNv3AghNpw7X81I/+daAl6pCHGHuJwRn2Vu0\n\t/pgN+XDWzxqtTglmV0Wn8+2KUevQh2urx1Kvb4MLtXuMrT34COgU1+Fz9h2Df04vYZqj\n\tE8nA==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n\ts=arc-20240605; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:dkim-signature;\n\tbh=uCTO2gLPSP2h9iR33+Lv/w65E2JW+OZmBtw2idBQuB4=;\n\tfh=kAwbguIY0wmqf1QQypnTiLH20ruRu7+JSSp6fzxLlN4=;\n\tb=jNWnKr+QutVehvdSwyE+u7zFUI9bWhEI3FGnz9cSKVLPNVbZDCzFcT/JxqscvmniN8\n\t+7VBhbR6hKf/Sglb+gKhQxgrb6wvDE3KgtwzOp0jI4Bx4OC3AMJi9c/KcEJP6b0VCbK3\n\t/DBlM+xKvLgiADijaekPHfX3CBySfm8DcFSnaXmRDFNEWajLphVq933NQSW06VyI8l81\n\teTbaZ2b2PwB6Jjp/DTCgB1u4uKuQ2cGNwUX4+7M3k4h+YUZSvhmLoibX0yBvFdxvU4QV\n\tf47ZvlGaqc9xA433Fenz6b8ZGtXbPIS4MKTXHJfj3rVrmm/EbolJ2EVzIT7meL9lJvUY\n\t3OOA==; darn=lists.libcamera.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1769506259; x=1770111059;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=uCTO2gLPSP2h9iR33+Lv/w65E2JW+OZmBtw2idBQuB4=;\n\tb=abm6rpv0YOC5gLuos1rTWb0CGkQ8+ZYIy+91CG23msmW+OFPAtheFcwpxglyRkWGnw\n\tFWCemEWKakXrQvBP0q+ZvK3ahHVFdG7Kjefxc5KHaOxcsUhp1loeqKUGjS/A05AUNJyx\n\t6y/J5STjAoHB7y9MQDAeTDOuiM51Z9T17hYUWIwAEVFh4BDMlMdb/dCuCs/jnIV2eRwh\n\tPx34ds3Qjk92STec2DdRxd95XZf0uGlFeX8l2f75DtEw+heWnqiGHoDgasSgBSXc1h9J\n\tblNbw+hKknKRIruUbIRJnAiTWMENQMSZPOdREpIKJSeUd5HkFWDislOvkmZHzWdCHL3o\n\t2ccg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1769506259; x=1770111059;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=uCTO2gLPSP2h9iR33+Lv/w65E2JW+OZmBtw2idBQuB4=;\n\tb=IAg58hEgrGcF6QPblqOK7pCmNZxjLktqin05DTFIbagq+0L+94V3A+mtYNxc+EWABw\n\tdWiN6atplfJ2qzOkN88go8e6xteUpnMUarbz0QxfVy6I2sDr0tV+DnsOn2ioJNVKDxqu\n\tXYisszObbMW1IladyHT+BTwAhYZYpj+UM3iQjrk1f572LlcajOzjVPPwu95f08J/g8KL\n\tL2ugp72zSsjibg5veQHxpukqscJ0+pyPRDhJ1ngQXZHl453ejfFOVC+TBWz0uM+scf4R\n\tv8L9VV4/ddNCrpiX6cBEOOILn+c1fIC1W3ds4KObUoGQIkY6tALyN6FfKVhcrZfnuwWZ\n\tcx0A==","X-Gm-Message-State":"AOJu0Ywlt2eLVtYt4ijw/WpdncuYhZhgG4auqg/k4URw2etNHVn9LCxs\n\tWYMX1pVPEnsn1tkoYKEWuAOkQdeuDsaDXsQ8lkl6AILg9ricf0E+2aRo96iqRkZluK0d93Xv4zk\n\tg+LaCIMpFCEhFpAMGdlE6Uy6HGVyjNCo1uVj8lC/Uo2z+7/AHxitH","X-Gm-Gg":"AZuq6aIr/rjGgWljGQSGu0jjHA/xOFWtdJmTITBdYf/wkdX2cMT0vnPa9I8KjdNWPXG\n\tsedZehcC9h2IrOZWQBrbj/CcjZTA1Pk3EuDpmfbypR1QCI9ynnU4CTkTGQ7r1irWqy48zu9Kwjr\n\tOa3nMm1jn24RCE8gU7lTaZKILz1/eOwHUmt5h2KqlTLY+zMBfbrvTqROmNE8/8trihXlJmKAFkd\n\tHpb3EIFZZY8WPHGvnSZBFJhyK1henh62CW9AX2581f9dlbdMAyTPRYSHPObSbRI3ifDuuo5DOr4\n\tXX5E1i/mdorJzP+KRbXFgo9PCqLE5N7mSpOBDBI4TJJ2OZjR0eBJLLLAhWz1TAkwWs5K0gOnAHb\n\tuzpPdeTIHaZd6oDGa21RMP4k=","X-Received":"by 2002:a05:6102:1623:b0:5f5:46f8:465f with SMTP id\n\tada2fe7eead31-5f7237785ddmr325161137.5.1769506259295; Tue, 27 Jan 2026\n\t01:30:59 -0800 (PST)","MIME-Version":"1.0","References":"<20260126190141.2410546-1-laurent.pinchart@ideasonboard.com>\n\t<20260126190141.2410546-4-laurent.pinchart@ideasonboard.com>","In-Reply-To":"<20260126190141.2410546-4-laurent.pinchart@ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Tue, 27 Jan 2026 09:30:22 +0000","X-Gm-Features":"AZwV_Qj9WadXAktViyc6mcbb2DCvE4XCSk_uQshIEj9MR8nnSjxlhIs3S6n3xi4","Message-ID":"<CAEmqJPoGkaTRfn3FBk6J5hws=L2WAxRDbaBMTBqMZiOv7eJxqA@mail.gmail.com>","Subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"UTF-8\"","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>"}},{"id":37964,"web_url":"https://patchwork.libcamera.org/comment/37964/","msgid":"<7937786b-2d8b-493d-9dee-2d4e7393c1ba@ideasonboard.com>","date":"2026-01-27T09:37:47","subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","submitter":{"id":216,"url":"https://patchwork.libcamera.org/api/people/216/","name":"Barnabás Pőcze","email":"barnabas.pocze@ideasonboard.com"},"content":"2026. 01. 27. 10:30 keltezéssel, Naushir Patuck írta:\n> Hi Laurent,\n> \n> On Mon, 26 Jan 2026 at 19:01, Laurent Pinchart\n> <laurent.pinchart@ideasonboard.com> wrote:\n>>\n>> libcamera has a policy on usage of 3rd party components that has never\n>> been documented. Detail it in the architecture documentation page, with\n>> an explicit description of the licensing requirements.\n>>\n>> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n>> ---\n>>   Documentation/libcamera_architecture.rst | 41 +++++++++++++++++-------\n>>   1 file changed, 30 insertions(+), 11 deletions(-)\n>>\n>> diff --git a/Documentation/libcamera_architecture.rst b/Documentation/libcamera_architecture.rst\n>> index 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> Does this mean that such features must not be gated by the \"auto\" type\n> of meson option.  Currently the RPi NN AWB uses an auto option, but we\n> can easily change to a boolean.\n\nI would think \"feature\" options with \"auto\" as default are fine. Distributions can set\n`auto_features=disabled` on the meson command line and then enable exactly what they wish.\nI believe the important part is that there is an option to control every optional feature,\ni.e. essentially no `dependency('xyz', required: false)` anywhere.\n\n> \n>>\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> \n> How do we advertise where models/training data live?  Is putting it in\n> the commit message sufficient?\n> \n> Regards,\n> Naush\n> \n>> --\n>> Regards,\n>>\n>> Laurent Pinchart\n>>","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 64B5BC3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Jan 2026 09:37:54 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 60B1C61FC7;\n\tTue, 27 Jan 2026 10:37:53 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 70E9D61F9F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Jan 2026 10:37:52 +0100 (CET)","from [192.168.33.37] (185.221.142.123.nat.pool.zt.hu\n\t[185.221.142.123])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 3545C78E;\n\tTue, 27 Jan 2026 10:37:16 +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=\"vR8oNPMT\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1769506636;\n\tbh=9sFHZyoq6IdJqwYRulEtklstBYtBHNycWwBZ8FvYWLA=;\n\th=Date:Subject:To:Cc:References:From:In-Reply-To:From;\n\tb=vR8oNPMTe7wci3BhIodTBXQmzO2MgYQsktsFo7LEGfzdFtMAGBvjwbGEX9OZnnxob\n\t8f6X25t4wsqxiDEjtE/cVSGYmWTInEF1GOWSYKhB/ITovAom9jkuK9NSjomKkXTr14\n\tPinn0UhWsVnCadh7GgG36DiUXKLNiuC/6Me6C2DY=","Message-ID":"<7937786b-2d8b-493d-9dee-2d4e7393c1ba@ideasonboard.com>","Date":"Tue, 27 Jan 2026 10:37:47 +0100","MIME-Version":"1.0","User-Agent":"Mozilla Thunderbird","Subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","To":"Naushir Patuck <naush@raspberrypi.com>,\n\tLaurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20260126190141.2410546-1-laurent.pinchart@ideasonboard.com>\n\t<20260126190141.2410546-4-laurent.pinchart@ideasonboard.com>\n\t<CAEmqJPoGkaTRfn3FBk6J5hws=L2WAxRDbaBMTBqMZiOv7eJxqA@mail.gmail.com>","From":"=?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= <barnabas.pocze@ideasonboard.com>","Content-Language":"en-US, hu-HU","In-Reply-To":"<CAEmqJPoGkaTRfn3FBk6J5hws=L2WAxRDbaBMTBqMZiOv7eJxqA@mail.gmail.com>","Content-Type":"text/plain; charset=UTF-8; format=flowed","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>"}},{"id":37966,"web_url":"https://patchwork.libcamera.org/comment/37966/","msgid":"<20260127101923.GC2428435@killaraus>","date":"2026-01-27T10:19:23","subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nOn Tue, Jan 27, 2026 at 09:30:22AM +0000, Naushir Patuck wrote:\n> On Mon, 26 Jan 2026 at 19:01, Laurent Pinchart wrote:\n> >\n> > libcamera has a policy on usage of 3rd party components that has never\n> > been documented. Detail it in the architecture documentation page, with\n> > an explicit description of the licensing requirements.\n> >\n> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > ---\n> >  Documentation/libcamera_architecture.rst | 41 +++++++++++++++++-------\n> >  1 file changed, 30 insertions(+), 11 deletions(-)\n> >\n> > diff --git a/Documentation/libcamera_architecture.rst b/Documentation/libcamera_architecture.rst\n> > index 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> Does this mean that such features must not be gated by the \"auto\" type\n> of meson option.  Currently the RPi NN AWB uses an auto option, but we\n> can easily change to a boolean.\n\nYou're doing it right. \"auto\" is the meson \"feature\" option. It supports\nforcefully enabling or disabling the feature, which is what we need for\nreproducible builds. I probably need to clarify the text, what I wanted\nto explain is that we can't have conditional dependencies that are\ncondtioned only by autodetection, without an option.\n\nWould replacing \"meson feature option\" with \"meson option\" make it\nclearer ?\n\n> >\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> \n> How do we advertise where models/training data live?  Is putting it in\n> the commit message sufficient?\n\nThat's a very good question :-) I think a comment somewhere in the code\nwould be better than the commit message, as the git history is harder to\nsearch. A documentation page would also be an option, if you would like\nto give more information to people about how to make use of this new\nfeature.","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 ACCC6C3200\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Jan 2026 10:19:28 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 73BCF61FCC;\n\tTue, 27 Jan 2026 11:19:27 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8F29F61F9F\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Jan 2026 11:19:25 +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 20531186F; \n\tTue, 27 Jan 2026 11:18:49 +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=\"Np85iCzk\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1769509129;\n\tbh=izelNANs5z2uJR2g1lVDTYAcA3LbphMtPw/Rn2cxg1k=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Np85iCzkak6AgjzThoZ+E4udVhB6pF+iTVlBYUyoFviL4kSI0rQPOLw0Fn6kyJegn\n\t2JHncB6JGkRRrLuFVUxioAVWbebWPyUJZoAEaIuue1h7Ogrfwgh3eSTTbWUF4SpPtx\n\tL7g2IDU3u7qIjBqX3D6sodRMo4kX+EM8PpgyDL/E=","Date":"Tue, 27 Jan 2026 12:19:23 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","Message-ID":"<20260127101923.GC2428435@killaraus>","References":"<20260126190141.2410546-1-laurent.pinchart@ideasonboard.com>\n\t<20260126190141.2410546-4-laurent.pinchart@ideasonboard.com>\n\t<CAEmqJPoGkaTRfn3FBk6J5hws=L2WAxRDbaBMTBqMZiOv7eJxqA@mail.gmail.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<CAEmqJPoGkaTRfn3FBk6J5hws=L2WAxRDbaBMTBqMZiOv7eJxqA@mail.gmail.com>","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>"}},{"id":37967,"web_url":"https://patchwork.libcamera.org/comment/37967/","msgid":"<CAEmqJPrHu4J9ZvC9xL_777VyKy3QEpW380gk5g=DOR+gkTUH5w@mail.gmail.com>","date":"2026-01-27T11:25:52","subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nOn Tue, 27 Jan 2026 at 10:19, Laurent Pinchart\n<laurent.pinchart@ideasonboard.com> wrote:\n>\n> Hi Naush,\n>\n> On Tue, Jan 27, 2026 at 09:30:22AM +0000, Naushir Patuck wrote:\n> > On Mon, 26 Jan 2026 at 19:01, Laurent Pinchart wrote:\n> > >\n> > > libcamera has a policy on usage of 3rd party components that has never\n> > > been documented. Detail it in the architecture documentation page, with\n> > > an explicit description of the licensing requirements.\n> > >\n> > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> > > ---\n> > >  Documentation/libcamera_architecture.rst | 41 +++++++++++++++++-------\n> > >  1 file changed, 30 insertions(+), 11 deletions(-)\n> > >\n> > > diff --git a/Documentation/libcamera_architecture.rst b/Documentation/libcamera_architecture.rst\n> > > index 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> > Does this mean that such features must not be gated by the \"auto\" type\n> > of meson option.  Currently the RPi NN AWB uses an auto option, but we\n> > can easily change to a boolean.\n>\n> You're doing it right. \"auto\" is the meson \"feature\" option. It supports\n> forcefully enabling or disabling the feature, which is what we need for\n> reproducible builds. I probably need to clarify the text, what I wanted\n> to explain is that we can't have conditional dependencies that are\n> condtioned only by autodetection, without an option.\n>\n> Would replacing \"meson feature option\" with \"meson option\" make it\n> clearer ?\n\nI'd keep your existing wording, it's clear to me now.\n\n>\n> > >\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> >\n> > How do we advertise where models/training data live?  Is putting it in\n> > the commit message sufficient?\n>\n> That's a very good question :-) I think a comment somewhere in the code\n> would be better than the commit message, as the git history is harder to\n> search. A documentation page would also be an option, if you would like\n> to give more information to people about how to make use of this new\n> feature.\n\nA comment seems reasonable to me.  We can add one in the NN AWB source\nfile before merging.\n\nNaush\n\n\n>\n> --\n> Regards,\n>\n> Laurent Pinchart","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 0AA3BC3220\n\tfor <parsemail@patchwork.libcamera.org>;\n\tTue, 27 Jan 2026 11:26:33 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 19A6861FCE;\n\tTue, 27 Jan 2026 12:26:32 +0100 (CET)","from mail-ua1-x92e.google.com (mail-ua1-x92e.google.com\n\t[IPv6:2607:f8b0:4864:20::92e])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id A4F6461FBF\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Jan 2026 12:26:30 +0100 (CET)","by mail-ua1-x92e.google.com with SMTP id\n\ta1e0cc1a2514c-93f5b565da6so94105241.3\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 27 Jan 2026 03:26:30 -0800 (PST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"OxuMsYr0\"; dkim-atps=neutral","ARC-Seal":"i=1; a=rsa-sha256; t=1769513189; cv=none;\n\td=google.com; s=arc-20240605;\n\tb=U9sp0/uybS9tbOgAjMeLWAMhfya+OtXZRV1sRN82TOg/zYx/FC5VuQL8U2UI9G8+Dc\n\tn5Nx29BPn6MAdDZHhE3UDrse8pP8qmTqb4wI/jP5G7eiKFQathtkvlsnGfmacDeIR42L\n\tbCxnY1gm+P35JgSl9ODswaZ3MHvgdxueqKLVdhv1/zq2jQzA8I6lfeygZh6AnDkf2iPm\n\togrZENPZRBe3rxsxHwNo5CZJ/HCHsmkTwtfaRpng/mMPFIkmnEvNXOfKF3lTqrGiICDV\n\tQ6150aR9KdDRspqrd9TbePNPh9uE/D3CKAOfO4Ou4urdobB+0ASoT5qXU/vpjveoU47X\n\tpRUw==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com;\n\ts=arc-20240605; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:dkim-signature;\n\tbh=V5yJ39sN/x0Qr24FyKXly6I/XMX/WzqVVk/OgTrr5jQ=;\n\tfh=kAwbguIY0wmqf1QQypnTiLH20ruRu7+JSSp6fzxLlN4=;\n\tb=ivQXrZhByY00qMbAfTmwH6Z2lNmSjdfDtTlerXu1wEzQwTVJXWJMAOqqb9YdEI3vLY\n\t8mMROvJq7P3fRFItycHSn+xv7MB+02hJJHJFJJ5u0R6fEpPBZpiHKuv9vT8aU4Ed52aD\n\tRhKbphl2OYtq+V0Q36yKev/dRJ4wy4hwQrpWIlMbwmK3PJjzPadLj8g63KHh4aEnuzvQ\n\t0VGmMIh45C87DNnvAGTS8Ie2NOfwco434psOdRqScnG7ZuYewLscN1Z6I+OZ+CP5YYJt\n\tQe6mjp1ctPuSUKI5v5T5FPUp/iRyBvBU9FxSiEXejyLNgMOpUR/w9kZkfdNvXUPit+TK\n\tzPDw==; darn=lists.libcamera.org","ARC-Authentication-Results":"i=1; mx.google.com; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google; t=1769513189; x=1770117989;\n\tdarn=lists.libcamera.org; \n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:from:to:cc:subject:date:message-id:reply-to;\n\tbh=V5yJ39sN/x0Qr24FyKXly6I/XMX/WzqVVk/OgTrr5jQ=;\n\tb=OxuMsYr0B1mAEXaPwmc2sn4+pwYgYRaMdb25xT0npTuStiPgI/roakcKyZXZC8GRox\n\tkTOuaYC3tuoQPnSzM2j8WeT0eMpO8fr0yoFKQKOoDIWPLNBIo9YZ/pDRV4/GabP/wLA0\n\t80fZqX/y/RYbaDhkHEJVaWHvCkeFPio0ahL/JBVv7HEdMGnlCLUhtB2M4hQmXswjipZX\n\toYYEQxYwhN6o2+6CYEjHWAFpZsobAIKZog99pWQf42s1lZUW0OCsuGIYdcJRxhJimLZq\n\tnM41IIrnVNPMvWGlAHA2K+IbMJavalgjmFw6PFsYBbPvsNp8cOGbP6Fg1qegIA7Es+4A\n\tD7hg==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20230601; t=1769513189; x=1770117989;\n\th=cc:to:subject:message-id:date:from:in-reply-to:references\n\t:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date\n\t:message-id:reply-to;\n\tbh=V5yJ39sN/x0Qr24FyKXly6I/XMX/WzqVVk/OgTrr5jQ=;\n\tb=h8f+/GWDb9feU2xESY8b8f3keQFfNcwheBAVMx5T6bQ9VCLurjZUwiQshR7Srnc1Nu\n\tVNbQ2wP8gLJMVgsDu/Loaw9mJxIItP+8jnSj8Bqfrf8ZN+mPwf1/93NQOBPUOdgFAZA8\n\tcMAdmqjqN8xLWnSGQXato1WxR9bKLykOChoSaLuu2p3JEeL4af1qRT559P4v3JTRNiDN\n\t4kHQGj48oHlZMyATPofQ8qM9KljhT1Fg0JEeJ3SWSo2BC89LkDo00VP857dsQA0qWrkD\n\tdkoxcUJEUBrSKfrMK3Xp91TiEd8+QKptZIY0K6XMacNvKCi5q7SckpQ9sc5sUPgZ1X8b\n\to5lw==","X-Gm-Message-State":"AOJu0YxqGeHt1/bOVHv2fHWwaIA9jq3To3EkEiWol2cZm+RMjEwN/HU/\n\tEsaKz77QiQFGtxttDaE0q1BEaKCql41T8rDA1fDAxnrpE79N3USQwAqRcoNWdhJPs0C4+y6ZptD\n\t+8ichIz8PoDGpFA0ZTYv8KoopwFfXwlYBdweQ7pEndA==","X-Gm-Gg":"AZuq6aJscYyf79wjUO+NaP3k512e5p4I3j9rM19omiY/6K1bLjWxqnjYw5utMbbQqGy\n\tZJV4N6MT44TiThrPgqwzKYgoX5iQkc/ONE+Iz25dzKf5OB1i506FYBVxp+cpR/WmqzMhCYuGxzu\n\tBUgT1PZ+Ep9QDj6jA7uOlUrsHoMkecojQEC7UYcimuZuE1R0Z1LY6QSxY5AxszXmQtVkEKUyov/\n\tCyneIua+NcFJrt3xCquUDRyxGxlF2TUsmO5iELVssBh9UmbeUrBNxV1vI5b4sjxz7vHOrVrKKnD\n\tzZzLnZsuBeuzVNMUcSVZ3UHXA7MEf1NxUtyXnU0UH8modEJwhzZwdJPj49ho9Sc8NIUlTSeYLd3\n\t6k49ZErRT6UR5zRWPW3uOl3I=","X-Received":"by 2002:a05:6102:c51:b0:5f5:33c9:c9c7 with SMTP id\n\tada2fe7eead31-5f7237dff7cmr284773137.8.1769513189459; Tue, 27 Jan 2026\n\t03:26:29 -0800 (PST)","MIME-Version":"1.0","References":"<20260126190141.2410546-1-laurent.pinchart@ideasonboard.com>\n\t<20260126190141.2410546-4-laurent.pinchart@ideasonboard.com>\n\t<CAEmqJPoGkaTRfn3FBk6J5hws=L2WAxRDbaBMTBqMZiOv7eJxqA@mail.gmail.com>\n\t<20260127101923.GC2428435@killaraus>","In-Reply-To":"<20260127101923.GC2428435@killaraus>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Tue, 27 Jan 2026 11:25:52 +0000","X-Gm-Features":"AZwV_QgyTeTU923IhAzJNVuqg1Skj9snU7NLbO12ViqkRPLB5HKYmLPrIYHJRts","Message-ID":"<CAEmqJPrHu4J9ZvC9xL_777VyKy3QEpW380gk5g=DOR+gkTUH5w@mail.gmail.com>","Subject":"Re: [RFC/PATCH 3/3] Documentation: architecture: Detail policy on\n\tdependencies","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Content-Type":"text/plain; charset=\"UTF-8\"","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>"}}]