همهٔ مقاله‌ها

· Casimiro Ferreira· 18 دقیقه مطالعه

پورت‌کردن با ماشین‌ها، و پرسش مجوزی که نتوانستیم پاسخ دهیم

  • FOSS
  • Licensing
  • Open Source
  • Python
  • G2P

ما تعدادی برنامهٔ قدیمی را به پایتون بازنویسی کرده‌ایم. جلوی G2P در espeak-ng، قواعد نویسه‌گردانی گالیسیایی و اسپانیایی Cotovia، پردازش زبانی باسکی AhoTTS، استدلال‌گر N3 EYE، و استدلال‌گر OWL 2 DL به نام HermiT. زبان‌های C،‌ ++C و Java، بیشترشان قدیمی‌تر از یک دهه، همه‌شان هنوز بهترین چیز موجود برای کاری هستند که انجام می‌دهند.

انگیزه معمولی بود. یک برنامهٔ C که زبان گالیسیایی را واج‌نگاری می‌کند عالی است تا زمانی که بخواهید آن را درون یک پشتهٔ گفتاریِ پایتون روی یک برد ARM داشته باشید. آن‌گاه به یک کامپایلر، یک زنجیرهٔ ابزار، کامپایل متقابل، یک استراتژی بسته‌بندی برای هر پلتفرم، و یک مرز میان زیرفرایندها نیاز دارید که باید متن را از میان آن منتقل کنید. یک استدلال‌گر Java به یک JVM نیاز دارد. پایتون خالص فقط به pip install نیاز دارد. همچنین راحت‌تر خوانده می‌شود: می‌توانید فایلی را که تعیین می‌کند تکیه کجا قرار بگیرد باز کنید و تغییرش دهید، بدون آنکه بدانید سامانهٔ ساخت اصلی چگونه کار می‌کند.

پورت‌ها به‌صورت نیمه‌خودمختار انجام شدند. یک هوش مصنوعی کد منبع اصلی را می‌خواند و پایتون را می‌نوشت؛ و یک انسان کار را هدایت می‌کرد و خروجی را در برابر باینری اصلی بررسی می‌کرد. در چندتای آن‌ها، هیچ‌کس از سمت ما هرگز کد منبع اصلی را نخواند. مدل بود که آن را خواند. ما دیف‌ها و آزمون‌های تطابق را خواندیم.

این پرسشی باقی می‌گذارد که ما باید دربارهٔ آن تصمیمی می‌گرفتیم، و نتوانستیم پاسخش دهیم: آیا نتیجه یک اثر مشتق (derivative work) است، و چه‌کسی مالک آن است؟

ما مهندس هستیم. هیچ‌چیز در اینجا مشاورهٔ حقوقی نیست، و ما صلاحیت ارائهٔ هیچ‌کدام را نداریم. این توصیفی است از تصمیمی که گرفتیم و استدلال پشت آن.

دو پرسشی که دائم با هم اشتباه گرفته می‌شوند

بازپیاده‌سازیِ یک برنامه با خواندن کد منبع آن چیز تازه‌ای نیست. مردم از زمان وجود پایتون، C را به پایتون بازنویسی می‌کنند. آنچه تازه است ترتیب است: خواننده یک ماشین است، پیاده‌سازکننده همان ماشین است، و انسان‌های درون چرخه هرگز نسخهٔ اصلی را ندیدند.

اینجا دو پرسش هست، و تقریباً هر بحثی دربارهٔ این موضوع آن‌ها را در یکی فرومی‌ریزد. آن‌ها مستقل‌اند.

۱. آیا اصلاً می‌توان خروجی را مالک شد؟ حق نشر (copyright) به آثاری می‌چسبد که مؤلف دارند. اگر یک ماشین کد را تولید کرده باشد، مؤلف چه‌کسی است؟ ۲. آیا خروجی مشتقی از ورودی است؟ هرکه مؤلف آن باشد — اگر کسی باشد — آیا نتیجه اصل را نقض می‌کند؟

می‌توانید به یکی بله و به دیگری خیر پاسخ دهید، در هر دو ترکیب. آن‌ها را جدا نگه دارید.

کمی واژگان، چون بقیهٔ این متن به آن وابسته است. یک اثر مشتق (derivative work) اثری است که بر پایهٔ اثری پیش‌تر موجود ساخته شده — یک ترجمه، یک اقتباس، یک پورت. حق ساختن آن متعلق به دارندهٔ حق نشرِ اصل است. مجوزهای کپی‌لفت (copyleft، خانوادهٔ GPL) اجازه می‌دهند کد را استفاده و اصلاح کنید به شرط آنکه آنچه توزیع می‌کنید تحت همان شرایط باقی بماند. مجوزهای آزادگذارانه (permissive، مانند MIT، Apache-2.0، BSD) اجازه می‌دهند اساساً هرکاری بکنید، از جمله عرضهٔ نتیجه درون نرم‌افزار مالکیتی. مجوز LGPL میان این دو می‌نشیند: کپی‌لفت به خودِ کتابخانه اعمال می‌شود، اما پیوند (linking) آن به برنامه‌ای بزرگ‌تر آن برنامه را مجبور به باز شدن نمی‌کند. همهٔ این‌ها بر پایهٔ حق نشر ساخته شده‌اند. آن‌ها فقط زمانی مؤثرند که حق نشری برای اجرا وجود داشته باشد.

پرسش نخست: آیا مؤلفی هست؟

حق نشر به یک مؤلف انسانی نیاز دارد. ادارهٔ حق نشر ایالات متحده (US Copyright Office) به‌طور پیوسته این را حفظ کرده، و در پروندهٔ Thaler v. Perlmutter دادگاه تجدیدنظر ناحیهٔ کلمبیا (D.C. Circuit) موافقت کرد: قانون حق نشر «مقتضی آن است که هر اثر واجد شرایط در وهلهٔ نخست توسط یک انسان تألیف شده باشد» (شمارهٔ ۲۳-۵۲۳۳، D.C. Cir.، ۱۸ مارس ۲۰۲۵؛ دیوان عالی درخواست بازبینی (certiorari) را در مارس ۲۰۲۶ رد کرد). استاندارد اروپایی از نظر شکل متفاوت است اما به نقطه‌ای مشابه می‌رسد — حمایت مستلزم «آفرینش فکریِ خودِ مؤلف» (author’s own intellectual creation) است، که پیشاپیش وجود مؤلفی را که می‌آفریند فرض می‌گیرد.

هیچ‌کدام از این دو نمی‌گوید کار به‌کمک هوش مصنوعی غیرقابل‌حمایت است. هر دو می‌گویند آنچه ماشین به‌تنهایی تولید کرده چنین است. خط از میان اثر می‌گذرد، نه دور آن، و اینکه دقیقاً کجا قرار می‌گیرد به مقدار مشارکت انسان بستگی دارد. در پورت‌های ما، مشارکت انسانی واقعی اما اندک است: انتخاب هدف، ساختاردهی بستهٔ نرم‌افزاری، ارزیابی شکست‌های تطابق. روشن نیست که این ما را مؤلف قواعد نویسه‌گردانی می‌کند.

که شیئی ناخوشایند تولید می‌کند. یک مجوز اعطای اجازه از سوی دارندهٔ حقوق است. اگر هیچ‌کس حقی در خروجی نداشته باشد، فایل مجوز در ریشهٔ مخزن صرفاً تزئین است. توجه کنید این استدلال به کجا می‌رود: نخست مجوز خودتان را می‌بلعد. هرکس ادعا کند کد تولیدشده توسط ماشین بی‌مالک است، در واقع ادعا می‌کند که شرایط انتشار خودش قابل‌اجرا نیست، پیش از آنکه اصلاً به حقوق بالادستی نزدیک شود.

پرسش دوم: آیا مشتق است؟

این پرسش اهمیتی به مؤلف بودن نمی‌دهد. نقض (infringement) به دسترسی به اصل به‌علاوهٔ شباهت اساسی به بیان (expression) محافظت‌شدهٔ آن بستگی دارد — شیوهٔ خاصی که آن چیز نوشته شده، نه آنچه انجام می‌دهد.

ما دسترسی داشتیم. مدل کد منبع را خواند. آن نیمه مورد اختلاف نیست.

نیمهٔ شباهت جایی است که قضیه جالب می‌شود، و جایی که تغییر زبان کمتر از آنچه انتظار می‌رود اهمیت دارد. ترجمهٔ یک رمان به زبانی دیگر اثری مشتق تولید می‌کند؛ این نمونهٔ کلاسیک است. تغییر زبان ادعای کپی‌برداری تحت‌اللفظی را باطل می‌کند. اما ادعایی دربارهٔ ساختار را باطل نمی‌کند — ترتیب تبدیل‌ها، تفکیک به توابع، شکل جدول‌های قاعده، و شیوه‌ای که موارد حدی تقسیم می‌شوند.

همچنین ارزش دارد صریح گفته شود: یک ابزار چیزی را «پاک» نمی‌کند. اگر یک کپی را هدایت کنید و نتیجه را عرضه کنید، این شمایید که آن را ساخته‌اید. «مدل آن را نوشت» بیش از «کامپایلر آن را صادر کرد» دفاع نیست.

قوی‌ترین استدلال در سوی مقابل

استدلالی جدی وجود دارد که بازپیاده‌سازیِ میان‌زبانی درست است، و شایستهٔ آن است که به‌درستی بیان شود نه فقط اشاره‌ای گذرا.

در پروندهٔ SAS Institute v World Programming (دیوان دادگستری اتحادیهٔ اروپا، C-406/10، ۲ مه ۲۰۱۲)، دادگاه حکم داد که «نه عملکرد یک برنامهٔ کامپیوتری و نه زبان برنامه‌نویسی و قالب فایل‌های داده‌ای که در یک برنامهٔ کامپیوتری برای بهره‌برداری از برخی کارکردهای آن به‌کار می‌روند، شکلی از بیانِ آن برنامه محسوب نمی‌شوند». بنابراین آن‌ها با حق نشر محافظت نمی‌شوند. دستورالعمل نرم‌افزار (Software Directive، 2009/24/EC، مادهٔ ۱(۲)) همین را دربارهٔ ایده‌ها و اصول زیربنایی هر عنصر از یک برنامه می‌گوید. دادگاه همچنین حکم داد که یک مجوزگیرنده می‌تواند رفتار یک برنامه را مطالعه و مشاهده کند تا ایده‌های پشت آن را تعیین کند، و آن‌ها را بازپیاده‌سازی کند.

این یک نکتهٔ فنی نیست. یعنی آنچه یک واج‌نگار (phonemizer) انجام می‌دهد — این توالی نویسه‌ها، در این بافت، به آن واج تبدیل می‌شود — متعلق به هیچ‌کس نیست. قواعد تکیهٔ گالیسیایی حقایقی دربارهٔ زبان گالیسیایی‌اند. معناشناسی مستقیمِ OWL 2 یک مشخصهٔ منتشرشدهٔ W3C است. بر پایهٔ این تفسیر، بازپیاده‌سازی‌ای که رفتار را بازتولید می‌کند نه بیان را، مشروع است، و بازنویسی میان زبان‌ها بسیار دورتر از نقض می‌نشیند تا کپی‌پیست.

فاصلهٔ میان این استدلال و وضعیت ما منبع است. پروندهٔ SAS دربارهٔ مطالعهٔ رفتار است. مدل ما کد را خواند.

سابقه‌ای که از پیش وجود دارد، و تا کجا امتداد دارد

استدلال «خروجی ماشین مؤلفی ندارد، پس حق نشری به آن نمی‌چسبد» یک آزمایش فکری نیست. این استدلال در تولید، در سراسر صنعت، پایه‌ای است. هم تقطیر مدل (model distillation) و هم دادهٔ آموزشیِ مصنوعی هر دو بر آن تکیه می‌کنند.

روشن‌ترین بیان عمومیِ آن مربوط به Kokoro-82M است، یک مدل TTS باز و پرکاربرد. کارت آن می‌گوید که منحصراً روی صدای آزادگذارانه یا فاقد حق نشر آموزش دیده، و در میان منابع مجاز فهرست می‌کند:

Synthetic audio generated by closed TTS models from large providers

با یک پانویس که به راهنمای سیاست هوش مصنوعی ادارهٔ حق نشر ایالات متحده اشاره می‌کند (به فارسی: صدای مصنوعیِ تولیدشده توسط مدل‌های TTS بستهٔ ارائه‌دهندگان بزرگ). زنجیرهٔ استدلال همان است که بالاتر آمد: صدا توسط ماشین تولید شده، خروجی ماشین مؤلف انسانی ندارد، پس حق نشری در آن وجود ندارد، پس چیزی برای نقض با آموزش روی آن وجود ندارد. این مدل با مجوز Apache-2.0 عرضه می‌شود. کارت همچنین مرزی رسم می‌کند — صدای مصنوعیِ برآمده از مدل‌های TTS باز و از کلون‌های صدای سفارشی را مستثنا می‌کند — که نشانهٔ آن است که نویسندگان دریافته‌اند استدلال کجا متوقف می‌شود به‌جای آنکه آن را به همه‌چیز اعمال کنند.

اینجا بخشی است که برای پورت‌کردن اهمیت دارد. آن سابقه نیمهٔ دیگر مسئله را حل می‌کند.

استدلال Kokoro دربارهٔ ورودی است. آنچه آن‌ها مصرف کردند خودش ماشین‌تولید بود، پس ادعا این است که از همان ابتدا حق نشری حمل نمی‌کرد. غیرقابل‌حق‌نشر در ورودی، پس هیچ‌چیز برای ارث‌بردن.

وضعیت ما تصویر آینه‌ای است. آنچه ما مصرف کردیم — C در espeak-ng، ++C در Cotovia، Java در HermiT — بدون‌ابهام توسط انسان‌ها نوشته شده و دارای حق نشر است، از افراد نام‌برده‌شده، در دانشگاه‌های نام‌برده‌شده، دهه‌ها پیش. آنچه بیرون آمد ماشین‌نوشته بود. استدلال «نبود حق نشر در خروجی هوش مصنوعی» بر خروجی ما فرود می‌آید، نه بر ورودی ما. به بالادست سفر نمی‌کند. این باز هم همان استدلالی است که مجوز ما را تضعیف می‌کند در حالی که حقوق بالادستی را کاملاً دست‌نخورده رها می‌کند.

نامتقارنی دیگری هست که ارزش ذکر دارد. آسیب‌پذیریِ باقیِ Kokoro واقعاً حق نشر نیست — قراردادی است. شرایط خدمات ارائه‌دهندگان بسته عموماً استفاده از خروجی‌شان برای آموزش مدل‌های رقیب را منع می‌کند، و شرطی که با آن موافقت کرده‌اید به این دلیل که خروجی معلوم شد فاقد حق نشر بوده، ناپدید نمی‌شود. کپی‌لفت این‌طور کار نمی‌کند. هیچ‌کس روی «موافقم» برای GPL کلیک نمی‌کند. این اعطای اجازه‌ای یک‌جانبه است، و شما را فقط زمانی مقید می‌کند که به آن اجازه نیاز داشته باشید — یعنی فقط اگر آنچه ساخته‌اید اثری مشتق باشد.

پس کل قضیه به همان یک پرسشی فرومی‌ریزد که هیچ‌کس پاسخش را نداده. اگر بازپیاده‌سازیِ میان‌زبانیِ ماشین‌نوشته اثری مشتق نباشد، GPL هرگز درگیر نشده و هیچ‌چیز از آن اعمال نشده. اگر باشد، GPL از خط نخست اعمال شده بوده. حالت سومی وجود ندارد، و هیچ مقدار بحث دربارهٔ مؤلف‌بودن هوش مصنوعی آن سوزن خاص را حرکت نمی‌دهد.

اتاق‌های تمیز، و اینکه آیا دو مدل یکی می‌سازند

پاسخ کلاسیک به دقیقاً همین مسئله پروتکل اتاق‌تمیز (clean room) است، و ارزش دارد آن را دقیق توصیف کرد چون شکل آن اهمیت دارد.

یک تیم نسخهٔ اصلی را می‌خواند و یک مشخصهٔ کارکردی می‌نویسد: آنچه برنامه انجام می‌دهد، به زبان رفتاری. تیم دومی که هرگز نسخهٔ اصلی را ندیده، فقط از روی آن مشخصه پیاده‌سازی می‌کند. خروجی تیم دوم اثبات‌پذیرانه از بیانی که هرگز ندیده کپی نشده. این‌گونه بود که BIOS رایانهٔ شخصی بازپیاده‌سازی شد، و به همین دلیل آن بازپیاده‌سازی دوام آورد.

حرکت مدرن بدیهی این است که یک مدل را برای خواندن و توصیف اجرا کنید، و مدلی دیگر با بافتی تازه برای پیاده‌سازی. از نظر ساختاری، این همان پروتکل است. آیا این اتاق تمیز است؟

شکل درست را دارد. اما اتاق تمیز یک سازهٔ فنی نیست — یک سازهٔ شواهدی (evidentiary) است. کل ارزش آن توانایی نشان‌دادن آن جدایی بعداً است، به کسی که فرض می‌کند شما تقلب کرده‌اید. پس نسخهٔ دومدلی فقط زمانی چیزی معنا می‌دهد که انضباط تا انتها حفظ شود:

  • دو طرف واقعاً هرگز بافت را به‌اشتراک نمی‌گذارند. نه «به آن گفتیم فراموش کند» — بلکه اجراهای جداگانه، رونوشت‌های جداگانه.
  • مشخصه رفتار را حمل می‌کند و هیچ‌چیز دیگر را نه. هیچ شبه‌کدی که جریان کنترل اصل را منعکس کند. هیچ نام شناسه‌ای. هیچ ترتیب توابعی. این‌ها بیان‌اند، و مشخصه‌ای پر از آن‌ها اصل است با لباس مبدل.
  • سوابق هر دو طرف نگه‌داشته می‌شود، چون اتاق تمیزی که نتوانید شواهدش را ارائه دهید فقط یک داستان است.

اگر طرف خواننده ساختار صادر کند، آلودگی مستقیماً عبور می‌کند و شما با اثری مشتق با گام‌های اضافه و صورت‌حساب توکن بزرگ‌تر به پایان می‌رسید.

ما این کار را نکردیم. مدل پیاده‌سازکننده کد منبع را مستقیماً خواند. به همین دلیل فایل README پروژهٔ pycotovia، درون مخزن، به‌صورت عمومی، می‌گوید:

Because the implementing AI read the GPL source, this is not a clean-room reimplementation and we make no such claim. It is a source-derived port.

(به فارسی: از آنجا که هوش مصنوعیِ پیاده‌سازکننده کد منبعِ GPL را خواند، این یک بازپیاده‌سازی اتاق‌تمیز نیست و ما چنین ادعایی نمی‌کنیم. این یک پورتِ برگرفته از منبع است.) ترجیح می‌دهیم آن جمله نوشته‌شده باشد تا اینکه بعداً مجبور به پاسخ‌دادن به آن باشیم.

آنچه انجام دادیم

مجوزهای بالادستی (upstream) را حفظ کردیم.

espyak با مجوز GPL-3.0-or-later است، همسان با espeak-ng. آن حتی موردی دشوار نیست: این بسته فایل‌های دادهٔ خودِ espeak-ng را عیناً در بر دارد — dictsource، phsource، lang — و هیچ نظریه‌ای دربارهٔ تألیف فایل‌هایی را که بدون تغییر کپی کرده‌ایم لمس نمی‌کند. دادهٔ بالادستی درون wheel است، پس مجوز بالادستی همراه آن می‌آید.

pycotovia با مجوز GPL-3.0 است، همسان با Cotovia (+GPL-3.0). و ahotts-g2p و pyAhoTTS-Iparrahotsa با مجوز GPL-3.0 هستند، همسان با AhoTTS، که فایل مجوز آن +GPL-3.0 را برای پردازش زبانی اعلام می‌کند. pyeye با مجوز MIT است، همسان با EYE. کپی‌لفت در ورودی، کپی‌لفت در خروجی؛ آزادگذارانه در ورودی، آزادگذارانه در خروجی.

ما این کار را نکردیم چون ثابت کردیم که لازم بود. آن را کردیم چون نامتقارنی تصمیم را بدون نیاز به پاسخ گرفت.

ما به‌هرحال متن‌باز منتشر می‌کنیم. کپی‌لفت تقریباً هیچ هزینه‌ای برای ما ندارد — تنها هزینهٔ واقعی حالتی است که مشتری‌ای بخواهد کد را درون چیزی مالکیتی داشته باشد، و برای این کتابخانه‌های خاص آن حالت نادر است. پس کپی‌لفت بودن وقتی که به‌طور سخت‌گیرانه لازم نبوده تقریباً هزینه‌ای صفر دارد.

خطای دیگر متقارن نیست. عرضهٔ مجوزی آزادگذارانه بر چیزی که باید کپی‌لفت می‌بود مسئله‌ای است که دیر، به‌صورت عمومی، به‌دست کسی دیگر کشف می‌شود، پس از آنکه دیگران بر پایهٔ شرایطی که مجاز به عرضهٔ آن نبودید بنا کرده‌اند. باز کردن آن گره یعنی تماس با هر مصرف‌کنندهٔ پایین‌دستی.

آن نامتقارنی همچنین دلیل آن است که این ناهم‌خوانی به‌طور کلی ارزش مراقبت دارد. یک پورتِ ساختاریِ یک اصلِ LGPL نمی‌تواند صرفاً با بازنویسی به زبانی دیگر به Apache-2.0 تبدیل شود — و این دقیقاً نوعی ناهم‌خوانی است که ساختنش آسان و متوجه‌شدنش سخت است، چون هیچ‌چیز شکایت نمی‌کند. ساخت (build) موفق می‌شود. آزمون‌ها موفق می‌شوند. سربرگ مجوز صرفاً یک فایل است. HermiT با مجوز LGPL است، پس مجوز پورت پایتونیِ ما از آن یکی از موارد بازبینیِ ماست — که نتیجه‌ای معمولی و درست است: بررسی می‌کنید، و آنچه را باید اصلاح شود اصلاح می‌کنید.

با نامتقارنی‌ای چنین نامتوازن، لازم نیست مسئلهٔ حقوقی را برای تصمیم‌گیری حل کنید. تنها شاخه‌ای را برمی‌گزینید که در آن اشتباه‌بودن قابل‌تحمل است.

همان پرسش، رو به سوی مخالف

همهٔ آنچه بالاتر آمد دربارهٔ کدی است که تولید می‌کنیم. همان منطق دقیقاً به کدی که دریافت می‌کنیم اعمال می‌شود. کسی یک pull request بر یکی از مخازن ما باز می‌کند. آن پچ (patch) توسط یک مدل نوشته شده. آن‌ها چه چیزی به ما اعطا می‌کنند؟

بیشتر پروژه‌ها این را با گواهی مبدأ توسعه‌دهنده (Developer Certificate of Origin، یا DCO) مدیریت می‌کنند — همان خط Signed-off-by: در پایین پیام کامیت. این بیانیه‌ای کوتاه است که مشارکت‌کننده هنگام امضا گواهی می‌دهد: که خودش این مشارکت را ایجاد کرده، یا اینکه از منبعی با مجوزی سازگار آمده و او حق ارائهٔ آن را تحت شرایط پروژه دارد. عمداً سبک‌وزن است. بدون وکیل، بدون کاغذبازی، یک خط برای هر کامیت. این‌گونه است که هستهٔ لینوکس و QEMU، از میان بسیاری دیگر، مبدأ کد خود را اثبات می‌کنند.

برای پچی ماشین‌نوشته، هیچ‌یک از دو شرط به‌سادگی درست نیست. و این دوشاخگی به یک شکل حل می‌شود، هرکدام از شاخه‌ها را که بگیرید.

اگر خروجیِ ماشین‌تولید هیچ حق نشری حمل نکند، مشارکت‌کننده هیچ حقی در آن ندارد. چیزی برای صدور مجوز به شما نیست.

اگر در عوض آن را مشتق از دادهٔ آموزشی‌اش بدانیم، حقوق — هرچه باشند — به هرکسی تعلق دارد که آن داده را نوشته است. مشارکت‌کننده همچنان چیزی ندارد، و همچنان چیزی برای صدور مجوز به شما ندارد.

در هر حالت، آن‌ها نمی‌توانند آنچه را ندارند اعطا کنند. امضا ناصادقانه نیست. مشارکت‌کننده با حسن‌نیت امضا کرد و کار را انجام داد. این صرفاً تهی است: انتقال چیزی که هرگز مال او نبوده تا منتقل کند.

پیامد عملی کمتر از آنچه به نظر می‌رسد نگران‌کننده است، و دو شاخه به‌شدت از هم متفاوت‌اند.

در شاخهٔ نخست، اصلاً به اعطایی نیاز ندارید. ماده‌ای که هیچ‌کس مالکش نیست می‌تواند توسط هرکسی استفاده شود. پذیرفتن پچ بدون اشکال است و هیچ اتفاق بدی نمی‌افتد. آنچه بی‌سروصدا تغییر می‌کند سوی دیگر است: کپی‌لفت بر پایهٔ حق نشر ساخته شده، و نمی‌تواند به ماده‌ای که هیچ حق نشری حمل نمی‌کند بچسبد. یک پروژهٔ GPL که پچ‌های ماشین‌نوشته انباشته می‌کند بخش‌هایی را انباشته می‌کند که ممکن است مجوز خودش به آن‌ها نرسد. مجوز همچنان اثر را آن‌گونه که توزیع می‌شود اداره می‌کند. هستهٔ قابل‌اجرا در درون آن، آهسته و بدون توجه کسی، نازک‌تر می‌شود.

شاخهٔ دوم دندان دارد. اگر مدلی داده‌های آموزشی حفظ‌شده را عیناً بازتولید کند — که واقعاً رخ می‌دهد، بیشتر با اصطلاحات رایج و پیاده‌سازی‌های شناخته‌شده تا با منطق تازه — آنگاه شما کدی دارای حق نشر متعلق به شخصی دیگر را پذیرفته‌اید، بر پایهٔ اطمینانی از مشارکت‌کننده‌ای که هیچ راهی برای بررسی نداشت. کل ارزش DCO این است که فردِ امضاکننده در موقعیتی بوده که می‌داند. اینجا چنین نیست.

Debian اکنون در حال کارکردن روی این مسئله است. یک قطع‌نامهٔ عمومی دربارهٔ استفاده از LLM دورهٔ بحث خود را در ۲۳ ژوئیهٔ ۲۰۲۶ با پنج پیشنهاد بر رأی‌برگه آغاز کرد. آن‌ها طیف را می‌پوشانند: پیشنهاد A قرارداد اجتماعی را اصلاح می‌کند تا مشارکت‌های به‌کمکِ LLM را در بسته‌ها، مستندات و منابع وب کاملاً ممنوع کند؛ پیشنهاد C از مشارکت‌کنندگان می‌خواهد تا حد عملی از LLM پرهیز کنند، پیش‌نویسیِ صرفاً انسانی را برای ارتباطات پروژه الزامی می‌کند، و به نگه‌دارندگان منفرد اجازه می‌دهد ممنوعیت‌های خودشان را اعمال کنند؛ پیشنهادهای B، D و E کار به‌کمکِ هوش مصنوعی را با شرایطی مجاز می‌کنند، مبتنی به‌ترتیب بر تأیید مجوز، پاسخ‌گویی مشارکت‌کننده، افشا، و محدودیت‌های ارسال مطالب محرمانه به خدمات ابری. تا زمان نگارش این متن، موضوع در حال بحث است و چیزی تصمیم‌گیری نشده.

این بار دوم است. تلاشی پیشین در ۲۰۲۴ بدون قطع‌نامه پایان یافت، و استدلال پشت توقف ارزش نگه‌داشتن دارد: اعتراض به اقدام‌کردن این نبود که نگرانی بی‌پایه است، بلکه این بود که قاعده‌ای که هیچ‌کس نتواند اجرایش کند، ارزش پذیرفتن ندارد. نمی‌توانید به یک دیف نگاه کنید و بفهمید.

این نگرانی‌ای حاشیه‌ای نیست. سخت‌ترین ضربه‌اش دقیقاً به پروژه‌هایی می‌خورد که مراقب‌ترین ردیابی مبدأ را دارند، چون کل مدل یک پروژهٔ مبتنی بر DCO دربارهٔ اینکه کدش از کجا آمده بر همان یک گواهی تکیه دارد.

ما نحوهٔ برخورد با این موضوع را حل نکرده‌ایم، و در موقعیتی ضعیف برای سخت‌گیری هستیم. ما پورت‌هایی را که یک مدل نوشته عرضه می‌کنیم. پروژه‌ای که کد ماشین‌نوشته منتشر می‌کند و مشارکت‌های ماشین‌نوشته را رد می‌کند، دو موضع ناسازگار را همزمان اتخاذ کرده، و ما ترجیح می‌دهیم این کار را نکنیم. گزینه‌های صادقانه همان‌هایی هستند که Debian می‌سنجد — افشا، پاسخ‌گویی مشارکت‌کننده، یا قاعده‌ای که هیچ‌کس نتواند تأییدش کند — و ما هنوز یکی را انتخاب نکرده‌ایم.

محور دیگری که استدلال روی آن حرکت می‌کند

بحث Debian دربارهٔ ردیابی مبدأ و مجوز است. این تنها محور نیست، و محور دوم هیچ ربطی به حق نشر ندارد.

Codeberg، پلتفرم FLOSS، در ژوئیهٔ ۲۰۲۶ دو پیشنهاد تأییدشده از سوی اعضا را تصویب کرد و استدلال خود را بیان کرد با عباراتی که به‌ندرت به مجوزها می‌پردازد. اعتراض‌ها دربارهٔ هزینه و تلاش است: مصرف انرژی و سخت‌افزار که بر همه تحمیل می‌شود؛ ترافیک خزنده (crawler) که پلتفرم‌های کوچک را تحت فشار می‌گذارد تا دفاع‌هایی اتخاذ کنند که کاربران معمولی را نیز مانع می‌شود؛ پروژه‌های یک‌بارمصرفِ «vibe-coded» که منتشر و هرگز نگه‌داری نمی‌شوند؛ و بار روی کسانی که بازبینی می‌کنند:

Maintainers are under an increased work-load due to people submitting (often well-meaning) low-effort, LLM-generated contributions that require substantial amounts of time to review.

(به فارسی: نگه‌دارندگان تحت باری فزاینده از کار هستند، به‌سبب افرادی که مشارکت‌هایی — غالباً با نیت خوب — کم‌تلاش و تولیدشده با LLM ارائه می‌دهند که زمان قابل‌توجهی برای بازبینی می‌طلبند.) شرایط استفادهٔ آن‌ها اکنون چنین پروژه‌هایی را دلسرد می‌کند، مورد به مورد توسط ناظران اعمال می‌شود نه با حذف انبوه.

پس دو پرسش مستقل در گردش‌اند، و یک پروژه می‌تواند در هر جای این شبکه قرار گیرد: اینکه آیا کد ماشین‌نوشته اصلاً می‌تواند مجوز داشته باشد، و اینکه آیا اکوسیستم می‌تواند حجم را جذب کند. Debian دربارهٔ نخستین رأی‌گیری می‌کند و به نتیجه نرسیده است. Codeberg دربارهٔ دومی اقدام کرده. هیچ‌یک از دو نتیجه دیگری را حل نمی‌کند، و پاسخ‌هایی که یک پروژه به هرکدام می‌دهد تا حد زیادی بی‌ارتباط‌اند.

بخشی که ادعا نمی‌کنیم حل‌شده است

شاید اصلاً نیازی به انجام هیچ‌کدام از این‌ها نداشتیم.

سه استدلال را با هم در نظر بگیرید. عملکرد محافظت نمی‌شود — دیوان دادگستری اتحادیهٔ اروپا مستقیماً این را گفت. خروجیِ صرفاً ماشین‌تولید ممکن است مؤلف انسانی نداشته باشد، پس ممکن است هیچ حق نشر تازه‌ای برای نگرانی وجود نداشته باشد و، به‌طرزی ناخوشایند، هیچ‌کدام از آنِ ما نیز نباشد. و پروتکل دومدلی‌ای که با انضباط واقعی اجرا شود ممکن است اتاق‌تمیزی واقعی باشد، که در آن صورت پورت هرگز به بیان محافظت‌شده دست نزده.

اگر هر سه درست باشند، برخی از این پورت‌ها می‌توانستند با وجدانی آسوده با مجوز آزادگذارانه منتشر شوند. اگر هیچ‌کدام درست نباشند، انتخاب محتاطانهٔ ما صرفاً درست بود. نمی‌دانیم کدام است، و آن را نیازمودیم. علاقه‌ای به این نداریم که موردی باشیم که آن را حل می‌کند.

پرسش با نادیده‌گرفتن ناپدید نمی‌شود. این نوع پورت‌کردن دارد معمولی می‌شود — اکنون ارزان است، و مقدار زیادی C نگه‌داری‌نشده وجود دارد که ارزش انتقال به جایی را دارد که بتوان آن را نگه‌داری کرد. هر یک از آن پورت‌ها با همان دو پرسش روبه‌رو خواهد شد، و بیشترشان با نپرسیدن پاسخ خواهند داد. همین‌طور هر پروژه‌ای که پچی را که ننوشته ادغام می‌کند، یعنی همه‌شان. این پرسش‌ها فرامی‌رسند چه کد را بنویسید چه فقط آن را بپذیرید.