หนี้ทางเทคนิค: ตอนนี้ไลบรารี Rust ของฉันกลายเป็น CDO ไปแล้ว
- มีมุกล้อเกี่ยวกับหนี้ทางเทคนิคว่า ถ้ามีหนี้ทางเทคนิค ก็ต้องมีอนุพันธ์ทางการเงินไว้จัดการหนี้นั้นด้วย
- ระบบนิเวศของ Rust ดูเหมือนจะสร้างวิธีแก้ปัญหาที่คล้ายกับการนำหนี้ทางเทคนิคไปแปลงเป็นหลักทรัพย์ค้ำประกัน
- ตัวอย่างเช่น ไลบรารี
stuff ตัวหนึ่งพึ่งพาไลบรารีอีกตัวชื่อ learned-rust-this-way แต่ผู้เขียน learned-rust-this-way หมดความสนใจไปแล้ว และปัญหาก็เริ่มสะสมขึ้น
สภาพที่แท้จริงของหนี้ทางเทคนิค
learned-rust-this-way ถือเป็นหนี้ทางเทคนิค ซึ่งไม่ได้ก่อปัญหาโดยตรงในทันที แต่ก็ยังคงเป็นหนี้อยู่ดี
- ในจุดหนึ่ง จะมีคนตระหนักว่า
learned-rust-this-way เป็นหนี้ และเมื่อไม่สามารถติดต่อผู้เขียนเดิมได้ มันก็ถูกเพิ่มเข้าไปในฐานข้อมูล RUSTSEC
- RUSTSEC ทำหน้าที่เหมือนสถาบันจัดอันดับ และประเมินหนี้ก้อนนี้ว่าเป็นขยะ ส่งผลให้ CI (การผสานรวมอย่างต่อเนื่อง) ของผู้คนจำนวนมากเริ่มล้มเหลว
วิธีจัดการหนี้
- ในฐานะผู้ดูแล
stuff ความเครียดจะเพิ่มขึ้นเมื่อผู้ใช้เริ่มตั้งปัญหาเกี่ยวกับการใช้ learned-rust-this-way และเรียกร้องให้มีมาตรการจัดการหนี้นี้
- การย้ายไปใช้ทางเลือกอื่นเป็นหนึ่งในตัวเลือก แต่ในกรณีนี้ ทางเลือกทั้งหมดกลับไม่น่าดึงดูดนัก
- หาก fork
learned-rust-this-way ก็จะต้องเจอกับข้อเรียกร้องแบบเดิมอีก ซึ่งเป็นเพียงการแก้ปัญหาเฉพาะหน้า ไม่ได้แก้ปัญหาจริง
วิธีแก้ที่ได้ผลจริง
- ถ้านำโค้ดส่วนนั้นมารวมเข้าในไลบรารีของตัวเอง หนี้ทางเทคนิคขยะก้อนนั้นก็จะถูกประเมินเป็นระดับ ‘AAA’ ขึ้นมาทันที
- ไม่ต้องไปแตะโค้ดนั้นอีก ซ่อนความจริงที่ว่ามันถูกควบรวมเข้าไป แล้วดูแลไลบรารีต่อไปเหมือนเดิม โลกก็ยังหมุนต่อไปได้
- ด้วยการ vendor
yaml-rust เข้ามารวมไว้ใน insta ทำให้มันกลายเป็นร่างผสมของโค้ด insta กับ yaml-rust และเป็นการอัปเกรดหนี้ทางเทคนิคให้กลายเป็นระดับ AAA
ความเห็นของ GN⁺
- บทความนี้เปรียบเทียบหนี้ทางเทคนิคกับตราสารอนุพันธ์ทางการเงิน เพื่ออธิบายปัญหาที่เกิดขึ้นในการพัฒนาซอฟต์แวร์อย่างมีไหวพริบ
- หนี้ทางเทคนิคเป็นปัญหาที่พบได้บ่อยในการพัฒนาซอฟต์แวร์ และบทความนี้นำเสนอวิธีจัดการหนี้แบบสร้างสรรค์ให้กับนักพัฒนา
- ระบบการประเมินอย่าง RUSTSEC ในระบบนิเวศของ Rust อาจช่วยให้นักพัฒนาประเมินความมั่นคงของไลบรารีได้ แต่ในขณะเดียวกันก็อาจก่อความเครียดที่ไม่จำเป็นได้เช่นกัน
- การรวมโค้ดเข้ามาเพื่อแก้หนี้ทางเทคนิคอาจเป็นเพียงทางออกชั่วคราว และในระยะยาวก็ยังต้องการกลยุทธ์การบำรุงรักษาที่ยั่งยืน
- ในสถานการณ์เช่นนี้ ควรพิจารณาวิธีแก้หลายแบบ เช่น การบำรุงรักษาโดยชุมชน การดูแลร่วมกันของโครงการโอเพนซอร์ส หรือการมองหาไลบรารีเวอร์ชันทดแทน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
yaml-rustและเขียนใหม่เป็น Rust ล้วนจนกลายเป็นyaml-rust2ฟอร์กนี้ผ่าน YAML test suite ได้ครบถ้วน และยังมีประสิทธิภาพดีกว่าในการ benchmark ด้วย การย้ายระบบก็ดูเรียบง่าย ท้ายที่สุดปัญหายังคงอยู่ เรากำลังพึ่งพาคนอื่นที่ลงแรงให้ฟรีในตอนนี้ แต่ไม่มีหลักประกันว่าพวกเขาจะทำเช่นนั้นไปตลอด