คำสั่ง /bin/true และลิขสิทธิ์

by pruet
31 January 2012 - 04:32

ในช่วงที่ผ่านมา เรื่องราวของ SOPA ดูจะได้รับความสนใจสูงมาก (ข่าวเก่า ) ซึ่ง OSNews ก็เอากรณีที่น่าสนใจเกี่ยวกับลิขสิทธิ์ซอฟต์แวร์มาลงครับ เป็นลิขสิทธิ์ของคำสั่ง /bin/true ในระบบปฏิบัติการ Unix

ใน Unix เวลาเขียน Shell script อาจจะต้องมีการเขียนการทำงานแบบทำซ้ำ (Loop) ที่ทำงานซ้ำไม่สิ้นสุด หรือที่เรียกว่า Infinity Loop ซึ่งโดยทั่วไป จะใช้วิธีการเขียนแบบ while(true) กัน ซึ่งคำสั่งที่ให้ค่าออกมาเป็นจริงเสมอใน Unix คือคำสั่ง /bin/true หรือว่า /usr/bin/true แต่ใน Unix คำสั่งที่เป็น Shell script ใดก็ตาม ที่ทำงานเสร็จสิ้นโดยไม่แจ้งข้อผิดพลาด จะให้ค่าสถานะหยุดการทำงาน (Exit status) เป็น 0 ซึ่งมีค่าเท่ากับ true นั้นเอง (ใครเคยเขียนภาษา C คงจำ return 0; ได้) ดังนั้น การเขียนคำสั่ง /bin/true ที่ง่ายที่สุด ก็คือการสร้างแฟ้มข้อมูลเปล่าขึ้นมา เช่นใช้คำสั่ง touch แล้วก็ตั้งค่า Executable bit เช่นผ่านการใช้คำสั่ง chmod +x ก็จะได้คำสั่ง /bin/true แล้ว

ทีนี้ มันเริ่มสนุกเมื่อ ฝ่ายกฏหมายของ AT&T ซึ่งเป็นเจ้าของลิขสิทธิ์ Unix อยู่ ตัดสินใจว่า มันจะต้องมีการประกาศลิขสิทธิ์ในทุกโปรแกรมที่อยู่ในซอร์สโค้ดของ Unix ตัวซอร์สโค้ดของ /bin/true ก็เลยกลายเป็นแบบนี้

 | 
 | #     Copyright (c) 1984 AT&T
 | #       All Rights Reserved
 | 
 | #     THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
 | #     The copyright notice above does not evidence any
 | #     actual or intended publication of such source code.
 | 
 | #ident        "@(#)cmd/true.sh        50.1"

(ทำซ้ำจากเว็บต้นทาง เครื่องหมาย | ใส่แทรกเข้าไปที่ต้นบรรทัดเพื่อแสดงว่า บรรทัดไหนบ้างที่อยู่ในซอร์สโค้ด)

จากซอร์สโค้ด จะเห็นว่า 7 บรรทัดแรก เป็นคำประกาศสิทธิ์ ส่วนบรรทัดสุดท้าย เป็นข้อมูลสำหรับ revision control และไม่มีส่วนซอร์สโค้ดของโปรแกรมเลย เพราะว่าไม่จำเป็น ซึ่งก็ไม่ใช่เฉพาะ AT&T ที่ทำแบบนี้ เพราะ ในซอร์สโค้ดของ SunOS ที่ออกโดยบริษัทซัน ก็มีโค้ดลักษณะเดียวกันอยู่

แต่อย่างน้อย วิศวกรที่โครงการ FSF ไม่ได้บ้าตามไปกับ AT&T หรือว่าซัน เพราะพวกเขาได้พัฒนาโปรแกรม /bin/true ขึ้นมาใหม่ โดยใช้ภาษา C แล้วใส่คำประกาศสิทธิ์ตามด้านล่าง

 lulu:~$ /bin/true --version
 true (GNU coreutils) 6.10
 Copyright (C) 2008 Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
 There is NO WARRANTY, to the extent permitted by law.

 Written by Jim Meyering.
 lulu:~$ 

น่าสนใจนะครับว่า โปรแกรมที่ทำงานโดยไม่ทำอะไรเลย ไม่จำเป็นต้องมีซอร์สโค้ดใด ๆ สามารถอ้างสิทธิ์ได้หรือไม่

ที่มา The /bin/true Command and Copyright ผ่านทาง OSNews

Blognone Jobs Premium