AI coding policy question
Hi all, I used claude code to generate (unsubmitted) patches, before I realized libvirt had a policy rejecting AI generated submissions. The patches add domaincapabilities sound model output. If you've looked at code in this area, you know it's largely boilerplate. I'd describe the changes as: + Add the generic domain_capabilities plumbing + Add more QEMU_CAPS flags for all sound devices, copying device names already identified in qemu_command.c + Map qemu caps to domcaps in qemu_capabilities.c + Use domcaps for validation in qemu_validate.c + regenerate testsuite output (and those are basically shorthand for the instructions I gave to the LLM). There does not appear to be a single novel line in the whole series. But OK, for legal safety sake libvirt will not accept these patches. That's fair. But in a copyright sense am I tainted by looking at the generated code? If I wanted to write the patches by hand they likely will end up looking identical, down to the character. Creates a weird scenario IMO. What to do? The patches are here, gaze not upon them lest ye too be corrupted: https://gitlab.com/crobinso/libvirt/-/tree/domcaps-sound Thanks, Cole
On Thu, Oct 09, 2025 at 02:19:15PM -0400, Cole Robinson via Devel wrote:
Hi all,
I used claude code to generate (unsubmitted) patches, before I realized libvirt had a policy rejecting AI generated submissions.
The patches add domaincapabilities sound model output. If you've looked at code in this area, you know it's largely boilerplate.
I'd describe the changes as:
+ Add the generic domain_capabilities plumbing + Add more QEMU_CAPS flags for all sound devices, copying device names already identified in qemu_command.c + Map qemu caps to domcaps in qemu_capabilities.c + Use domcaps for validation in qemu_validate.c + regenerate testsuite output
(and those are basically shorthand for the instructions I gave to the LLM).
There does not appear to be a single novel line in the whole series.
But OK, for legal safety sake libvirt will not accept these patches. That's fair.
But in a copyright sense am I tainted by looking at the generated code?
Vendors of proprietary software may promote that POV, and I think it is rather an extreme viewpoint. If you follow that to its conclusion then every piece of code you've ever looked at "taints" your future output, and you'll struggle to be comfortable writing anything new at all. IMHO reading existing code is simply part of the natural learning process. Assuming you're not directly refering to the other code while you work, anything new you write is your own creative work. If it happens to look basically the same that is a reflection of the task having very limited number of ways it can be implemented.
If I wanted to write the patches by hand they likely will end up looking identical, down to the character.
Creates a weird scenario IMO. What to do?
If you genuinely write the new patches by hand, with no direct reference of the AI code while doing so, I see no significant problem to worry about. Just throw away the AI generated code and write it yourself as normal and submit. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On 10/10/25 5:29 AM, Daniel P. Berrangé wrote:
On Thu, Oct 09, 2025 at 02:19:15PM -0400, Cole Robinson via Devel wrote:
Hi all,
I used claude code to generate (unsubmitted) patches, before I realized libvirt had a policy rejecting AI generated submissions.
The patches add domaincapabilities sound model output. If you've looked at code in this area, you know it's largely boilerplate.
I'd describe the changes as:
+ Add the generic domain_capabilities plumbing + Add more QEMU_CAPS flags for all sound devices, copying device names already identified in qemu_command.c + Map qemu caps to domcaps in qemu_capabilities.c + Use domcaps for validation in qemu_validate.c + regenerate testsuite output
(and those are basically shorthand for the instructions I gave to the LLM).
There does not appear to be a single novel line in the whole series.
But OK, for legal safety sake libvirt will not accept these patches. That's fair.
But in a copyright sense am I tainted by looking at the generated code?
Vendors of proprietary software may promote that POV, and I think it is rather an extreme viewpoint. If you follow that to its conclusion then every piece of code you've ever looked at "taints" your future output, and you'll struggle to be comfortable writing anything new at all.
IMHO reading existing code is simply part of the natural learning process. Assuming you're not directly refering to the other code while you work, anything new you write is your own creative work. If it happens to look basically the same that is a reflection of the task having very limited number of ways it can be implemented.
If I wanted to write the patches by hand they likely will end up looking identical, down to the character.
Creates a weird scenario IMO. What to do?
If you genuinely write the new patches by hand, with no direct reference of the AI code while doing so, I see no significant problem to worry about. Just throw away the AI generated code and write it yourself as normal and submit.
Ok sounds good, thanks for clarifying - Cole
participants (2)
-
Cole Robinson -
Daniel P. Berrangé