<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" style="--code-editor-font: var(--default-mono-font, "GitLab Mono"), JetBrains Mono, Menlo, DejaVu Sans Mono, Liberation Mono, Consolas, Ubuntu Mono, Courier New, andale mono, lucida console, monospace;">
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
<title>
GitLab
</title>
<style data-premailer="ignore" type="text/css">
a { color: #1068bf; }
</style>
<style>img {
max-width: 100%; height: auto;
}
body {
font-size: .875rem;
}
body {
-webkit-text-shadow: hsla(0,0%,100%,.01) 0 0 1px;
}
body {
font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"; font-size: inherit;
}
</style>
</head>
<body style="font-size: inherit; -webkit-text-shadow: hsla(0,0%,100%,.01) 0 0 1px; font-family: "GitLab Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Noto Sans",Ubuntu,Cantarell,"Helvetica Neue",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";">
<div class="content">
<p class="details" style="font-style: italic; color: #626168;">
Issue created by <a href="https://gitlab.rtems.org/sebhub">Sebastian Huber</a>: <a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5657">#5657</a>
</p>
<div class="md" style="position: relative; z-index: 1; color: #3a383f; word-wrap: break-word;">
<h2 id="user-content-background" dir="auto" style="margin-top: 0px; margin-bottom: 10px;" align="initial">Background<a href="#background" aria-label="Link to heading 'Background'" data-heading-content="Background" class="anchor" style="margin-top: 0px;"></a>
</h2>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">RTEMS has no documented certification of contribution provenance. Concretely,
in the current tree:</p>
<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0px 0px 1rem; padding: 0;">
<li style="margin-top: 0px; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;">Signed-off-by:</code> appears in 118 of the last 2000 commits on <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;">main</code>.</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;">Signed-off-by</code> appears nowhere in rtems-docs.</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">"Developer Certificate of Origin" appears nowhere in rtems-docs.</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">The repository contains no DCO file.</li>
</ul>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">So the trailer is used by a minority of commits, is not required, and is not
documented. Where it is used it certifies nothing in writing, because the text
it would refer to does not exist in the project.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">This came up in <a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1362" title="build: Fix stale build artifacts after reconfiguration" class="gfm gfm-merge_request" data-original="!1362" data-link="false" data-link-reference="false" data-merge-request="2806" data-project="26" data-project-path="rtems/rtos/rtems" data-iid="1362" data-container="body" data-placement="top" data-reference-type="merge_request" style="margin-top: 0px;">!1362</a>, where reviewers asked for a declaration of AI usage.
The underlying question is provenance, and provenance is not an AI specific
problem. A contributor can just as easily submit code they do not have the
right to submit without any tool involved. The project has no instrument for
either case.</p>
<h2 id="user-content-proposal" dir="auto" style="margin-top: 20px; margin-bottom: 10px;" align="initial">Proposal<a href="#proposal" aria-label="Link to heading 'Proposal'" data-heading-content="Proposal" class="anchor" style="margin-top: 0px;"></a>
</h2>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Adopt the Linux Foundation and Linux kernel model. The three parts only work
together: a disclosure tag without a DCO certifies nothing, and a DCO nobody
signs has no effect.</p>
<h3 id="user-content-1-add-dcotxt" dir="auto" style="margin-top: 1.5rem; margin-bottom: 1rem; font-weight: 600; font-size: 1.125rem; letter-spacing: inherit; line-height: 1.25; color: #18171d;" align="initial">1. Add <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;">DCO.txt</code><a href="#1-add-dcotxt" aria-label="Link to heading '1. Add DCO.txt'" data-heading-content="1. Add DCO.txt" class="anchor"></a>
</h3>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Add the Developer Certificate of Origin 1.1 to the top of the repository,
copied verbatim from <a href="https://developercertificate.org/" rel="nofollow noreferrer noopener" target="_blank" style="margin-top: 0px;">https://developercertificate.org/</a>. It must not be
reworded. This is the same text used by the Linux kernel, Git, GCC and most
Linux Foundation projects.</p>
<h3 id="user-content-2-require-signed-off-by" dir="auto" style="margin-top: 1.5rem; margin-bottom: 1rem; font-weight: 600; font-size: 1.125rem; letter-spacing: inherit; line-height: 1.25; color: #18171d;" align="initial">2. Require <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;">Signed-off-by:</code><a href="#2-require-signed-off-by" aria-label="Link to heading '2. Require Signed-off-by:'" data-heading-content="2. Require Signed-off-by:" class="anchor"></a>
</h3>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Require every commit to carry a <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">Signed-off-by:</code> trailer from a human
contributor, meaning that contributor certifies the DCO. Document this in the
RTEMS Software Engineering manual alongside the existing commit message
guidance.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">This is what actually answers the licensing and copyright concern: the person
submitting the code asserts they have the right to submit it, whatever tools
they used to write it.</p>
<h3 id="user-content-3-adopt-assisted-by-for-ai-disclosure" dir="auto" style="margin-top: 1.5rem; margin-bottom: 1rem; font-weight: 600; font-size: 1.125rem; letter-spacing: inherit; line-height: 1.25; color: #18171d;" align="initial">3. Adopt <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;">Assisted-by:</code> for AI disclosure<a href="#3-adopt-assisted-by-for-ai-disclosure" aria-label="Link to heading '3. Adopt Assisted-by: for AI disclosure'" data-heading-content="3. Adopt Assisted-by: for AI disclosure" class="anchor"></a>
</h3>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Use the tag defined in the kernel's
<code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">Documentation/process/coding-assistants.rst</code>:</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre class="code highlight js-syntax-highlight language-plaintext" v-pre="true" style="display: block; font-size: 14px; color: #3a383f; line-height: 1.6em; overflow-x: auto; border-radius: .25rem; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; margin: 0px 0 1rem; padding: 12px; border: 1px solid #dcdcde;"><code style="font-size: inherit; color: inherit; word-wrap: normal; word-break: keep-all; background-color: inherit; border-radius: .25rem; white-space: pre; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; overflow-wrap: normal; padding: unset;"><span id="LC1" class="line" lang="plaintext" style="margin-top: 0px;">Assisted-by: AGENT_NAME:MODEL_VERSION [TOOL1] [TOOL2]</span></code></pre>
<copy-code></copy-code><insert-code-snippet></insert-code-snippet>
</div>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">For example:</p>
<div class="gl-relative markdown-code-block js-markdown-code">
<pre class="code highlight js-syntax-highlight language-plaintext" v-pre="true" style="display: block; font-size: 14px; color: #3a383f; line-height: 1.6em; overflow-x: auto; border-radius: .25rem; position: relative; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: break-all; word-wrap: break-word; background-color: #fbfafd; margin: 0px 0 1rem; padding: 12px; border: 1px solid #dcdcde;"><code style="font-size: inherit; color: inherit; word-wrap: normal; word-break: keep-all; background-color: inherit; border-radius: .25rem; white-space: pre; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; overflow-wrap: normal; padding: unset;"><span id="LC1" class="line" lang="plaintext" style="margin-top: 0px;">Assisted-by: Claude:claude-opus-4-8 claude-code</span></code></pre>
<copy-code></copy-code><insert-code-snippet></insert-code-snippet>
</div>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Two rules from that document carry over directly:</p>
<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0px 0px 1rem; padding: 0;">
<li style="margin-top: 0px; line-height: 1.6em; margin-left: 25px; padding-left: 3px;">AI agents must not add <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; white-space: pre-wrap; overflow-wrap: break-word; word-break: keep-all; padding: 0.125rem 0.25rem;">Signed-off-by:</code> tags. Only a human can certify the
DCO.</li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;">Basic development tools are not listed. The tag is for coding assistants and
specialised analysis tools, not for git, gcc, make or an editor.</li>
</ul>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The kernel considered <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">Co-developed-by:</code> and rejected it, because that tag
requires a paired <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">Signed-off-by:</code> which an AI cannot give. Choosing
"assisted" over "co-developed" is how the kernel states that an AI is not an
author. Adopting the same tag means RTEMS does not have to litigate that
question itself, and contributors who already work to kernel conventions do
not need a second set of habits.</p>
<h2 id="user-content-why-this-shape" dir="auto" style="margin-top: 20px; margin-bottom: 10px;" align="initial">Why this shape<a href="#why-this-shape" aria-label="Link to heading 'Why this shape'" data-heading-content="Why this shape" class="anchor" style="margin-top: 0px;"></a>
</h2>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The Linux Foundation Generative AI Policy already covers projects like RTEMS
and states:</p>
<blockquote dir="auto" style="font-size: inherit; color: #626168; padding-top: 0.5rem; padding-bottom: 0.5rem; padding-left: 1rem; border-left-style: solid; margin: 0.5rem 0px; border-color: #bfbfc3; border-width: 0 0 0 4px;" align="initial">
<p style="color: inherit; line-height: 1.5; margin: 0;">Code or other content generated in whole or in part using AI tools can be
contributed to Linux Foundation projects.</p>
</blockquote>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The obligation it places on the contributor is to confirm they have the
necessary rights and to provide attribution where third party material is
involved. A DCO sign-off is the standard expression of exactly that
obligation.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">A structured one line tag also suits RTEMS better than a prose declaration.
For pre-qualification work, provenance metadata has to be traceable and
auditable per artifact. <code style="font-size: 90%; color: #18171d; word-wrap: break-word; background-color: #ececef; border-radius: .25rem; margin-top: 0px; font-weight: inherit; overflow-wrap: break-word; white-space: break-spaces; font-family: "GitLab Mono", "JetBrains Mono", "Menlo", "DejaVu Sans Mono", "Liberation Mono", "Consolas", "Ubuntu Mono", "Courier New", "andale mono", "lucida console", monospace; font-variant-ligatures: none; word-break: keep-all; padding: 0.125rem 0.25rem;">git log --grep</code> over a fixed tag gives that. A
free form paragraph in a merge request description does not.</p>
<h2 id="user-content-alternatives-considered" dir="auto" style="margin-top: 20px; margin-bottom: 10px;" align="initial">Alternatives considered<a href="#alternatives-considered" aria-label="Link to heading 'Alternatives considered'" data-heading-content="Alternatives considered" class="anchor" style="margin-top: 0px;"></a>
</h2>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">Not every project chose this route. QEMU bans AI-assisted contributions
outright, and Gentoo and NetBSD have similarly restrictive policies. That is a
legitimate position and the project may prefer it.</p>
<p dir="auto" style="color: #3a383f; margin: 0px 0px 1rem;" align="initial">The argument for the kernel model here is that RTEMS resembles the kernel more
than it resembles QEMU: it is DCO shaped in practice already, it has
safety-adjacent and qualification obligations that reward machine readable
provenance, and a large part of its contributor base works to kernel
conventions. A ban would also be unenforceable without the very certification
mechanism proposed above.</p>
<h2 id="user-content-references" dir="auto" style="margin-top: 20px; margin-bottom: 10px;" align="initial">References<a href="#references" aria-label="Link to heading 'References'" data-heading-content="References" class="anchor" style="margin-top: 0px;"></a>
</h2>
<ul dir="auto" style="text-align: initial; list-style-type: disc; margin: 0px; padding: 0;">
<li style="margin-top: 0px; line-height: 1.6em; margin-left: 25px; padding-left: 3px;"><a href="https://developercertificate.org/" rel="nofollow noreferrer noopener" target="_blank" style="margin-top: 0px;">https://developercertificate.org/</a></li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;"><a href="https://docs.kernel.org/process/coding-assistants.html" rel="nofollow noreferrer noopener" target="_blank" style="margin-top: 0px;">https://docs.kernel.org/process/coding-assistants.html</a></li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;"><a href="https://www.linuxfoundation.org/legal/generative-ai" rel="nofollow noreferrer noopener" target="_blank" style="margin-top: 0px;">https://www.linuxfoundation.org/legal/generative-ai</a></li>
<li style="line-height: 1.6em; margin-left: 25px; padding-left: 3px;"><a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1362" title="build: Fix stale build artifacts after reconfiguration" class="gfm gfm-merge_request" data-original="!1362" data-link="false" data-link-reference="false" data-merge-request="2806" data-project="26" data-project-path="rtems/rtos/rtems" data-iid="1362" data-container="body" data-placement="top" data-reference-type="merge_request" style="margin-top: 0px;">!1362</a></li>
</ul>
</div>
</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #626168;">
—
<br>
<a href="https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5657">View it on GitLab</a>.
<br>
You're receiving this email because of your account on <a target="_blank" rel="noopener noreferrer" href="https://gitlab.rtems.org">gitlab.rtems.org</a>. <a href="https://gitlab.rtems.org/-/sent_notifications/4-7hk6uznmaaxxov39voq36ga28-1d/unsubscribe" target="_blank" rel="noopener noreferrer">Unsubscribe</a> from this thread · <a href="https://gitlab.rtems.org/-/profile/notifications" target="_blank" rel="noopener noreferrer" class="mng-notif-link">Manage all notifications</a> · <a href="https://gitlab.rtems.org/help" target="_blank" rel="noopener noreferrer" class="help-link">Help</a>
<span style="color: transparent; font-size: 0; display: none; overflow: hidden; opacity: 0; width: 0; height: 0; max-width: 0; max-height: 0;">
Notification message regarding https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5657 at 1784851851
</span>
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Work item","url":"https://gitlab.rtems.org/rtems/rtos/rtems/-/work_items/5657"}}</script>
</p>
</div>
</body>
</html>