From patchwork Thu Oct 22 17:29:55 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ray Strode X-Patchwork-Id: 28563 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id BA666C324C for ; Thu, 22 Oct 2026 17:30:00 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id 6D0E568F97; Thu, 22 Oct 2026 19:30:00 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="q5ek3Li3"; dkim-atps=neutral Received: from mail-yx1-xb136.google.com (mail-yx1-xb136.google.com [IPv6:2607:f8b0:4864:20::b136]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 406CA68E17 for ; Thu, 22 Oct 2026 19:29:57 +0200 (CEST) Received: by mail-yx1-xb136.google.com with SMTP id 956f58d0204a3-677dbe051d4so155842d50.0 for ; Thu, 22 Oct 2026 10:29:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1792690196; cv=none; d=google.com; s=arc-20260327; b=sabjI2vB73qFmO7MdYR81nJqd399HqFsFivrWBj1EsrlmvGp/ygXX/MCigNWdnr3GH +6wPrmJ/FnaZnfYzlB7Eo9T94jzsy0CeoRCwHFcvBFvsmGTIdoRrwsKOcl41hSEtDT1A 2RhBJ+uxakux8bj8B4w3NvpXVyI+zYWavnrnhTIRH7N0dVmZt72yPiVqQbC/mSNERd+V FxIjBNfw+AcfGsgrbMPwCMktUKzT7fsusQEtgH0tTNg+eGxQFIuAbLjIw+s2wwCWb0Zi fWqwUuYge2XzdZxmsTOSSpEmuEixgrNEym7Sl+t8VpTpkcFMyHkVBmZKPw1hVhveXt27 KUtg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:references:in-reply-to:from :mime-version:dkim-signature; bh=qf7DrJQ/HApmZBTpJTDTxigo7B0J/Yp/ItgPhuR2m3w=; fh=KRWpOUVUb6PgSdBVDB+V+zdegqhVAongcWJguCVTXWM=; b=VJq/uZ68UWCuKtWKGKRWoOgkxWEmZIFE5Pq1UyghoCgxEp1QVvmoSRYKLUwKgOg5zd 0GjlE9eeoOyCpxVyRCZwgzCMl5XZwV4lyNiZZ4rmsWN3S9jeiCUIMZoGrw8Ou4XPH50N SHgSPzF5Lks6IiCRJQVWg7xw+VgvlXeurtsuFoma8puf2gZ2TLwiIeob+k0oDJcrYsQ6 zovCtwT5nwcMqM1RONmgLB71yy7eDuxqQhFU/RKPJKFTkstx51TxhUTXd9jNwcqUxjL9 p13FhV+1ZTXz1kd2PY6tzxFaxOpeF/byyWSPbuHblbMSYsP+3BTN3lNgiEGqGKFDBrk4 F3Jw==; darn=lists.libcamera.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792690196; x=1793294996; darn=lists.libcamera.org; h=content-type:cc:to:subject:message-id:date:references:in-reply-to :from:mime-version:from:to:cc:subject:date:message-id:reply-to :content-type; bh=qf7DrJQ/HApmZBTpJTDTxigo7B0J/Yp/ItgPhuR2m3w=; b=q5ek3Li3nY/MA6bPSiTp+y9b0ORyxRclhlB/TWh0v6Gn0JLdGtM+DCzrxI+iiSpSvP BgGHeU2pIo5ZtwZGcAFlm56yJQObub93y1C4YR4ElrTVWyvhoJR3pTiCbLh6XFpeFQJd 1SH2GsvzSfRcGLlt/Y4AShNewgEnH1sZZ+s2UCj4zRhdPc9NXTxXdxXA3DXEdLM/3hyw sTbwUUI0F93BGxNeKA+gPGgNZ76PxkxeJzsgGLFSArLt4K4ZNzMN7RUkt/ZlCNv/vsmd r7oBksP4fIGaw32uUr3AnVUgYfRM2Ial0V1GUvnDj4pc4HOLiSVVcLRo9+T9jq2hMf7L ikrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792690196; x=1793294996; h=content-type:cc:to:subject:message-id:date:references:in-reply-to :from:mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=qf7DrJQ/HApmZBTpJTDTxigo7B0J/Yp/ItgPhuR2m3w=; b=EhRRlRtEPFJIKOA0TpQ76mSvvxKeAbmkDpoa8Gc3o62fH3HCBguIeyvDsY6gtXYaGh n8HBx/W/coDgnfaG7Q3T6jJxTUQOAwbXd4hooOd7Z4QlEc5FQ+guRbgi6uIqbr49ZQM1 crnI1anAXG9tihu6FbN2tA9Ri3rxCOUV2N/8uk9YHepYs2sAJxIY8LQVRqf4rVwKqa8i 7GcOW2UyuFS1JgXOiBXY8nFt5jOFF8KEhnre7B5s3DuPsJnEwlY8EOBaPpn2UxTfzvap DD8WSSD1ai4nQFmMOWDOCF9m9jngSQ7GIcFLhaFt9DWgefafTXBskG0cuR8+gK8yi9SG REow== X-Gm-Message-State: AFq9FYKqIkHDAc9fu1oxKsvD5/nZl+CtvtFahnTN0W+UuHeAz0teq+yI DBGvCN5obEYuSFkF3TP6dwxxHc5HW/76EAjmpEsA3rEL14jUvoeZ8zQpMmoJABvYOLI7zOwqxfb 3xkgvwLVSZQJQ/KU0rxRwyaTso+wSsFr0Tg== X-Gm-Gg: AYBFou38P+Rx29LOaq8+asJu8rp+2EYmx76UrIpoZC0kBMOSj1z+yyVBxFIIEMAGETO Fag/Y6A+UGAN/DfHTU8W1eTx4psQ+587blGpsi03MdO3jZBSpNJRCM/3SCUxRWp0KxlDt5y0hAE pGpjGcAgnjL0P+g9qrgdmS/D6AgqmPSl0c4DTfimi6S43wOcb4x6rAVUCx7ctDJKPjL5CWlGPOk YzRGK7vToguudfXXnyijuc3+GZDI8d/3VclYiCIN3nbZEC297vjKz1gyvgCnOKcwDM59zIkSeOf 8hAsbHVE1MKD9lgXklMCBZa6+B41aw54P2Q4o107DMwZD74P4fCXLmR1f2xaoK33k1/CvF8j+ow 122bK3F+9n6B3eA/sbM5cLkqgbk1kM8grs92oynb/xtV5mR+C0du80vANkXGeEfHdi7DyFA== X-Received: by 2002:a05:690e:4510:20b0:679:bad8:7dbf with SMTP id 956f58d0204a3-67a0e041272mr1821169d50.6.1792690195950; Thu, 22 Oct 2026 10:29:55 -0700 (PDT) Received: from 77377267392 named unknown by gmailapi.google.com with HTTPREST; Thu, 22 Oct 2026 13:29:55 -0400 Received: from 77377267392 named unknown by gmailapi.google.com with HTTPREST; Thu, 22 Oct 2026 13:29:55 -0400 MIME-Version: 1.0 From: Ray Strode In-Reply-To: References: Date: Thu, 22 Oct 2026 13:29:55 -0400 X-Gm-Features: AclHuK9hIUtLxuIMmCnAPMnX6FDSRsJjxxNdX3gOd-SYJ8eCZYgTwjOYAf_8ca4 Message-ID: Subject: [PATCH 2/2] Documentation: contributing: Document the maintainer lookup script To: libcamera-devel@lists.libcamera.org Cc: =?utf-8?q?Barnab=C3=A1s_P=C5=91cze?= , Kieran Bingham , Jacopo Mondi , Laurent Pinchart , Milan Zamazal , Umang Jain X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" From: Ray Strode This commit documents get_maintainer.py in the patch submission guide. The guide explains mailing list submission but does not show contributors how to find maintainers and reviewers for the affected code. The examples cover path and patch inputs plus recipient output suitable for git send-email. The text explains the history boundary, time window, parent-directory fallback, and how review credits determine the results. Signed-off-by: Ray Strode --- Documentation/contributing.rst | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Documentation/contributing.rst b/Documentation/contributing.rst index 20682d56..b762bf11 100644 --- a/Documentation/contributing.rst +++ b/Documentation/contributing.rst @@ -83,60 +83,85 @@ Documentation ------------- Project documentation is created using `Sphinx`_. Source level documentation uses `Doxygen`_. Please make sure to document all code during development. .. _Sphinx: https://www.sphinx-doc.org .. _Doxygen: https://www.doxygen.nl Submitting Patches ------------------ The libcamera project has high standards of stability, efficiency and reliability. To achieve those, the project goes to great length to produce code that is as easy to read, understand and maintain as possible. This is made possible by a set of :ref:`coding-style-guidelines` that all submissions are expected to follow. We also care about the quality of commit messages. A good commit message not only describes what a commit does, but why it does so. By conveying clear information about the purpose of the commit, it helps speeding up reviews. Regardless of whether you're new to git or have years of experience, https://cbea.ms/git-commit/ is always a good guide to read to improve your commit message writing skills. The patch submission process for libcamera is similar to the Linux kernel, and goes through the `libcamera-devel`_ mailing list. If you have no previous experience with ``git-send-email``, or just experience trouble configuring it for your e-mail provider, the sourcehut developers have put together a detailed guide available at https://git-send-email.io/. +To find maintainers and reviewers for the code changed by your patch, use +``utils/get_maintainer.py``. It reads local Git history and accepts patches, +standard input, or paths with ``-f``, following the Linux kernel utility's +input conventions:: + + utils/get_maintainer.py --git-since=2-years-ago -f src/gstreamer/ + utils/get_maintainer.py 0001-camera-fix.patch + +The output includes roles and review, acknowledgment and authorship counts for +each contact. +History ends at the branch's upstream when configured, or ``HEAD`` otherwise; +``--git-revision`` overrides that choice. The default history window is one +year, so quiet areas may need a longer window. A path with no recent history +uses its immediate parent directory, except the repository root. Statistics +count whole commits that touch the selected paths, including broader refactors. + +For use with ``git send-email``, disable the annotations:: + + git send-email --cc-cmd='utils/get_maintainer.py --noroles --norolestats' \ + 0001-camera-fix.patch + +The utility includes ``libcamera-devel`` by default. Use ``--nol`` if you +already provide the list with ``--to``. See ``--help`` for the supported subset +of kernel utility options, including history limits and mailmap support. + Patches submitted to the libcamera project must be certified as suitable for integration into an open source project. As such libcamera follows the same model as utilised by the Linux kernel, and requires the use of 'Signed-off-by:' tags in all patches. By signing your contributions you are certifying your work in accordance with the following: `Developer's Certificate of Origin`_ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Version 1.1 Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 1 Letterman Drive Suite D4700 San Francisco, CA, 94129 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best