โค้ดที่สร้างโดย LLM ท่วมท้นโปรเจกต์โอเพนซอร์ส บังคับให้ผู้ดูแลต้องคิดนโยบายการมีส่วนร่วมใหม่

ทีมชุมชน BigGo
โค้ดที่สร้างโดย LLM ท่วมท้นโปรเจกต์โอเพนซอร์ส บังคับให้ผู้ดูแลต้องคิดนโยบายการมีส่วนร่วมใหม่

ผู้ดูแลโอเพนซอร์สกำลังเผชิญกับความท้าทายใหม่ที่เปลี่ยนแปลงวิธีการจัดการโปรเจกต์อย่างพื้นฐาน การเพิ่มขึ้นของการสร้างโค้ดด้วย AI ได้สร้างปัญหาที่ไม่คาดคิด: ผู้มีส่วนร่วมตอนนี้ส่ง pull request ที่สมบูรณ์โดยไม่มีการหารือล่วงหน้า ซึ่งมักจะสร้างโดย large language models ( LLMs ) มากกว่าการพิจารณาอย่างรอบคอบของมนุษย์

การเปลี่ยนแปลงนี้แสดงถึงการพลิกผันอย่างสมบูรณ์ของแนวทางปฏิบัติโอเพนซอร์สแบบดั้งเดิม ในอดีต การเขียนโค้ดต้องใช้เวลาและความพยายามอย่างมาก ซึ่งเป็นการส่งเสริมให้ผู้มีส่วนร่วมเข้าร่วมในการหารือก่อนลงทุนพลังงาน ปัจจุบัน LLMs สามารถสร้างโค้ดที่ทำงานได้ภายในไม่กี่นาที ทำให้เกิดการท่วมท้นของการมีส่วนร่วมที่ไม่ได้รับเชิญซึ่งอาจทำงานได้ทางเทคนิคแต่ขาดการสอดคล้องกับเป้าหมายของโปรเจกต์

ปัญหา Signal-to-Noise แย่ลงไปอีก

ชุมชนได้สังเกตเห็นการลดลงอย่างมากของคุณภาพการมีส่วนร่วม ผู้ดูแลรายงานว่าได้รับ pull request ที่ดูเขียนได้ดีบนพื้นผิวแต่เห็นได้ชัดว่าถูกสร้างขึ้นโดยไม่เข้าใจปรัชญาหรือวิสัยทัศน์ระยะยาวของโปรเจกต์ นักพัฒนาที่หงุดหงิดคนหนึ่งกล่าวว่าผู้มีส่วนร่วมตอนนี้ส่ง issue ประโยคเดียวเพียงไม่กี่วินาทีก่อน pull request ของพวกเขา ซึ่งตรงตามข้อกำหนดทางเทคนิคแต่พลาดจิตวิญญาณของการพัฒนาแบบร่วมมืออย่างสิ้นเชิง

สิ่งนี้สร้างสถานการณ์ที่ท้าทายเป็นพิเศษสำหรับผู้ดูแลที่ต้องใช้เวลามากในการตรวจสอบโค้ดที่อาจถูกต้องทางเทคนิคแต่ไม่สอดคล้องทางปรัชญา ภาระได้เปลี่ยนจากผู้มีส่วนร่วมที่ลงทุนเวลาในการทำความเข้าใจโปรเจกต์ไปเป็นผู้ดูแลที่ลงทุนเวลาในการอธิบายว่าทำไมโค้ดที่ทำงานได้อย่างสมบูรณ์จึงไม่เหมาะสม

ความท้าทายหลักที่ผู้ดูแลระบุ:

  • ปริมาณ pull request ที่ไม่ได้รับเชิญที่เพิ่มขึ้น
  • โค้ดที่ทำงานได้ในเชิงเทคนิคแต่ขาดการสอดคล้องกับปรัชญา
  • ภาระการตรวจสอบที่เพิ่มขึ้นพร้อมกับการอภิปรายที่มีคุณภาพต่ำลง
  • ความรับผิดชอบในการดูแลรักษาระยะยาวสำหรับการมีส่วนร่วมที่ได้รับการยอมรับ
  • อัตราส่วนสัญญาณต่อสัญญาณรบกวนที่เสื่อมลงในการสื่อสารของโครงการ

กลยุทธ์ใหม่เกิดขึ้นสำหรับการจัดการ AI-Generated Contributions

โปรเจกต์ต่างๆ กำลังทดลองใช้วิธีการต่างๆ เพื่อจัดการกับความท้าทายนี้ บางโปรเจกต์ได้นำ contrib modules มาใช้ซึ่งฟังก์ชันที่มีประโยชน์แต่ไม่ใช่หลักสามารถอยู่ได้โดยไม่มีการรับประกันการบำรุงรักษาระยะยาวจากทีมหลัก โปรเจกต์อื่นๆ กำลังกำหนดให้มี issue ที่ละเอียดก่อน pull request ใดๆ แม้ว่าสิ่งนี้จะนำไปสู่ผลที่ไม่ได้ตั้งใจของการสร้าง issue แบบผิวเผิน

กลยุทธ์ที่มีประสิทธิภาพที่สุดดูเหมือนจะเป็นการจัดทำเอกสารอย่างชัดเจนไม่เพียงแต่ว่าโปรเจกต์ทำงานอย่างไร แต่ว่าทำไมมันถึงมีอยู่ โปรเจกต์ที่มีปรัชญาที่ชัดเจนมักจะดึงดูดผู้มีส่วนร่วมที่มีวิสัยทัศน์เดียวกัน ทำให้เกิดตัวกรองธรรมชาติต่อการมีส่วนร่วมที่ไม่สอดคล้อง

กลยุทธ์ทั่วไปสำหรับการจัดการการมีส่วนร่วมที่สร้างโดย LLM:

  • กำหนดให้มีการระบุปัญหาโดยละเอียดก่อนการส่ง pull request
  • นำโมดูล "contrib" มาใช้สำหรับฟังก์ชันการทำงานที่ไม่ใช่หลัก
  • จัดทำเอกสารปรัชญาและวิสัยทัศน์ของโครงการอย่างชัดเจน
  • กำหนดขอบเขตการบำรุงรักษาอย่างชัดแจ้ง
  • ใช้เครื่องมือคัดกรองอัตโนมัติพร้อมกับการดูแลโดยมนุษย์

ความเป็นจริงของภาระการบำรุงรักษา

แง่มุมสำคัญที่มักถูกมองข้ามคือความรับผิดชอบระยะยาวที่มาพร้อมกับการยอมรับการมีส่วนร่วมใดๆ เมื่อผู้ดูแล merge pull request พวกเขาจะมุ่งมั่นที่จะสนับสนุนโค้ดนั้นอย่างไม่มีกำหนด หากมันแนะนำข้อบกพร่อง สร้างความสับสน หรือเชิญชวนคำขอฟีเจอร์เพิ่มเติม ผู้มีส่วนร่วมเดิมไม่ค่อยอยู่เพื่อช่วยบำรุงรักษา

ความจริงที่ว่ามีคน clone repo ของคุณหรือใช้ซอฟต์แวร์ของคุณไม่ได้หมายความว่าคุณเป็นหนี้พวกเขาอะไร ทุกคนที่มีโค้ดโอเพนซอร์สควรตระหนักถึงสิ่งนี้ก่อนที่พวกเขาจะเริ่มตอบสนองต่อคำขอฟีเจอร์

ความเป็นจริงนี้ทำให้ผู้ดูแลหลายคนเลือกมากขึ้น แม้กับการมีส่วนร่วมที่เขียนได้ดี คำถามไม่ใช่แค่ว่าโค้ดทำงานหรือไม่ แต่ว่าผู้ดูแลเต็มใจและสามารถสนับสนุนมันเป็นปีๆ หรือไม่

การรักษาจิตวิญญาณชุมชน

แม้จะมีความท้าทายเหล่านี้ ชุมชนโอเพนซอร์สกำลังทำงานเพื่อรักษาจิตวิญญาณการร่วมมือที่ทำให้โปรเจกต์เหล่านี้ประสบความสำเร็จตั้งแต่แรก กุญแจสำคัญอยู่ที่การรักษาขอบเขตโปรเจกต์ที่ชัดเจนในขณะที่ยังคงต้อนรับผู้มีส่วนร่วมที่แท้จริงที่ต้องการมีส่วนร่วมอย่างมีความหมายกับเป้าหมายของโปรเจกต์

โปรเจกต์ที่ประสบความสำเร็จที่สุดคือโปรเจกต์ที่สามารถอธิบายวิสัยทัศน์ของพวกเขาได้อย่างชัดเจนพอที่จะดึงดูดผู้มีส่วนร่วมที่สอดคล้องในขณะที่ปฏิเสธการมีส่วนร่วมที่ไม่เหมาะสมอย่างสุภาพ โดยไม่คำนึงถึงคุณค่าทางเทคนิค วิธีการนี้ช่วยรักษาความสอดคล้องของโปรเจกต์ในขณะที่ส่งเสริมชุมชนของผู้มีส่วนร่วมที่เข้าใจและแบ่งปันวัตถุประสงค์ระยะยาวของโปรเจกต์

เมื่อเครื่องมือ AI กลายเป็นที่แพร่หลายมากขึ้น ชุมชนโอเพนซอร์สยังคงปรับตัว แสวงหาวิธีการใช้ประโยชน์จากการสร้างโค้ดอัตโนมัติในขณะที่รักษาการดูแลอย่างรอบคอบที่ทำให้โปรเจกต์ที่ยอดเยิ่ยมมีคุณค่าอย่างแท้จริงต่อผู้ใช้

อ้างอิง: An Open-Source Maintainer's Guide to Saying No