ประวัติ Unix และ Linux ตั้งแต่ปี 1969 จนถึงปัจจุบัน
ย้อนรอยต้นกำเนิด Unix จาก Bell Labs ในปี 1969 สู่การเปลี่ยนผ่านสู่ Linux เรียนรู้เบื้องหลังคดีความปี 1992 และเหตุผลที่ Linux กลายเป็นมาตรฐานหลักในเซิร์ฟเวอร์แทนที่ BSD
ประวัติโดยย่อของ Unix และ Linux
ประวัติของ Unix และ Linux คือการโต้เถียงที่ยาวนานว่าใครมีสิทธิ์เป็นเจ้าของซอร์สโค้ด Unix เริ่มต้นที่ Bell Labs ในปี 1969 ส่วน Linux เริ่มต้นที่ Helsinki ในปี 1991 โดยไม่ได้ใช้ซอร์สโค้ดดั้งเดิมร่วมกันเลย สิ่งที่ส่งต่อระหว่างกันคือการออกแบบและชุดอินเทอร์เฟซที่เผยแพร่ไว้ ได้แก่ ไฟล์, กระบวนการ (processes), ไปป์ (pipes) และเชลล์ (shell) ที่เชื่อมโปรแกรมขนาดเล็กเข้าด้วยกัน Unix แพร่หลายในมหาวิทยาลัยช่วงทศวรรษ 1970 เนื่องจากข้อตกลงต่อต้านการผูกขาดในปี 1956 ห้ามไม่ให้ AT&T (American Telephone and Telegraph) ขายซอฟต์แวร์ Bell Labs จึงใช้วิธีอนุญาตให้ใช้สิทธิ์ซอร์สโค้ดในราคาถูกแทน Unix จึงไปปรากฏอยู่ทุกที่โดยที่ไม่มีใครภายนอก AT&T เป็นเจ้าของ และการต่อสู้เรื่องลิขสิทธิ์ที่ตามมาเป็นตัวกำหนดว่าระบบปฏิบัติการแบบ Unix ที่เปิดให้ใช้งานฟรีตัวใดที่จะได้เข้าไปอยู่ในตู้เซิร์ฟเวอร์ของคุณ
1969: PDP-7 เครื่องสำรองและแนวคิดที่ยังคงอยู่
Bell Labs ถอนตัวจากโครงการ Multics ในปี 1969 โดย Multics (multiplexed information and computing service) เป็นระบบ time-sharing ขนาดใหญ่ที่สร้างร่วมกับ MIT และ General Electric แต่ทาง Labs ตัดสินใจว่าโครงการมีขนาดใหญ่เกินกว่าจะทำต่อให้สำเร็จ Ken Thompson จึงเลือกเก็บแนวคิดที่เขาชอบไว้และตัดส่วนที่เหลือทิ้ง โดยเขียนระบบ time-sharing ขนาดเล็กขึ้นบนมินิคอมพิวเตอร์ PDP-7 ที่ถูกโละทิ้ง Dennis Ritchie ได้เข้าร่วมงานกับเขาในภายหลัง ชื่อ Unix นั้นเป็นการล้อเลียน Multics
ในปี 1970 ระบบถูกย้ายไปรันบน PDP-11 ซึ่งทาง Labs ซื้อมาให้พนักงานพิมพ์ดีดของแผนกสิทธิบัตรใช้งาน เนื่องจากเครื่องมือประมวลผลข้อความนั้นขออนุมัติงบประมาณได้ง่ายกว่าระบบปฏิบัติการ เครื่องดังกล่าวมีหน่วยความจำ core memory ขนาด 24 KB ซึ่งต้องแบ่งใช้ระหว่างระบบและโปรแกรมของผู้ใช้ ความบังเอิญเรื่องงบประมาณนี้เองที่เป็นเหตุผลว่าทำไมคู่มือ Unix ฉบับแรกเมื่อเดือนพฤศจิกายน 1971 จึงเป็นชุดเอกสารที่ผ่านการจัดรูปแบบแล้ว และเป็นเหตุผลว่าทำไมคุณยังคงต้องพิมพ์ man 5 crontab ในปัจจุบัน เลขส่วนในคู่มือฉบับนั้นจึงกลายเป็นเลขส่วนในคู่มือของคุณ
มีการเปลี่ยนแปลงสองประการที่ทำให้การออกแบบนี้คงอยู่ถาวร ประการแรกคือ Pipes ซึ่งปรากฏใน Version 3 ในปี 1973 เนื่องจาก Doug McIlroy ได้เสนอมาหลายปีว่าควรจะสามารถเชื่อมโปรแกรมเข้าด้วยกันแบบปลายต่อปลายได้ Thompson จึงเพิ่มตัวดำเนินการ | เข้าไปเพื่อให้ผลลัพธ์ของโปรแกรมหนึ่งกลายเป็นอินพุตของโปรแกรมถัดไป จากนั้นใน Version 4 ช่วงปลายปี 1973 ระบบได้ถูกเขียนขึ้นใหม่ด้วยภาษา C ระบบปฏิบัติการที่เขียนด้วยภาษาที่พกพาได้ (portable language) สามารถย้ายไปรันบนฮาร์ดแวร์ที่ไม่ได้ถูกออกแบบมาเพื่อมันได้ ซึ่งเป็นเหตุผลว่าทำไม Unix จึงมีอายุยืนยาวกว่าเครื่องคอมพิวเตอร์ทุกรุ่นที่มันเคยรันในยุคเริ่มต้น
เหตุผลที่ Unix แพร่หลาย: AT&T ไม่ได้รับอนุญาตให้วางจำหน่าย
คำพิพากษาตามความยินยอมในปี 1956 ได้ยุติคดีผูกขาดทางการค้าที่ฟ้องร้อง AT&T โดย AT&T ยังคงสถานะการผูกขาดธุรกิจโทรศัพท์ไว้ แต่ต้องยอมรับข้อจำกัดในการแลกเปลี่ยน คือการไม่ประกอบธุรกิจอื่นนอกเหนือจากโทรคมนาคม ซึ่งซอฟต์แวร์ถือเป็นหนึ่งในธุรกิจเหล่านั้น ดังนั้นเมื่อมหาวิทยาลัยต่างๆ ต้องการใช้งาน Unix ทาง Bell Labs จึงไม่สามารถวางจำหน่ายในฐานะผลิตภัณฑ์ได้ บริษัทจึงใช้วิธีอนุญาตให้ใช้สิทธิ์ (license) ในซอร์สโค้ดด้วยค่าธรรมเนียมเพียงเล็กน้อย โดยไม่มีการสนับสนุนและไม่มีการรับประกันใดๆ
ผลกระทบที่เกิดขึ้นนั้นมหาศาลและไม่ได้เป็นไปตามที่ AT&T คาดการณ์ไว้ Unix รุ่น Sixth Edition ซึ่งเผยแพร่ในปี 1975 ได้เข้าถึงภาควิชาวิทยาการคอมพิวเตอร์หลายร้อยแห่งพร้อมซอร์สโค้ดฉบับสมบูรณ์ John Lions จาก University of New South Wales ได้พิมพ์ซอร์สโค้ดของ kernel ดังกล่าวพร้อมคำอธิบายแบบบรรทัดต่อบรรทัดเพื่อใช้ในการสอน คนรุ่นนั้นจึงได้เรียนรู้วิธีการทำงานของระบบปฏิบัติการจากการอ่านโค้ดจริง
จากนั้นเงื่อนไขการอนุญาตให้ใช้สิทธิ์ได้เปลี่ยนไป โดยใบอนุญาตของ Seventh Edition ในปี 1979 ห้ามมิให้นำซอร์สโค้ดไปใช้ในการเรียนการสอน ส่งผลให้คำอธิบายของ Lions ต้องถูกส่งต่อกันในรูปแบบสำเนาถ่ายเอกสาร นี่คือรูปแบบของเรื่องราวทั้งหมด Unix มีอยู่ทุกที่แต่ในขณะเดียวกันก็ไม่เป็นซอฟต์แวร์เสรี ดังนั้นการปรับปรุงใดๆ ที่ใครก็ตามได้ทำขึ้น จึงกลายเป็นการปรับปรุงโค้ดที่เป็นกรรมสิทธิ์ของผู้อื่นไปโดยปริยาย
Berkeley: ส่วนประกอบของ Unix ที่คุณใช้งานจริง
Ken Thompson ใช้เวลาช่วงปีการศึกษา 1975 ถึง 1976 ที่มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ และได้ทิ้งกลุ่มผู้ใช้งาน Unix ที่มีความกระตือรือร้นสูงไว้เบื้องหลัง กลุ่มวิจัยระบบคอมพิวเตอร์ (CSRG) ของเบิร์กลีย์ได้จัดส่งเทปบันทึกข้อมูลที่มีการปรับปรุงในระดับท้องถิ่น และเทปเหล่านั้นได้กลายเป็น BSD หรือ Berkeley Software Distribution ในเวลาต่อมา Bill Joy เป็นผู้เขียนผลงานส่วนใหญ่ในช่วงแรก ได้แก่ 1BSD ในปี 1978 และตามด้วย 2BSD ในปี 1979 ซึ่งมาพร้อมกับโปรแกรมแก้ไขข้อความ vi และ C shell
C shell คือจุดเริ่มต้นของ !! และ !$ ซึ่ง Bash ได้รับสืบทอดไวยากรณ์ดังกล่าวมาด้วย นั่นคือเหตุผลที่ การขยายประวัติคำสั่งของ bash ยังคงสร้างความประหลาดใจให้กับผู้ที่พิมพ์เครื่องหมายอัศเจรีย์ภายในเครื่องหมายคำพูดคู่ มาจนถึงปัจจุบันเป็นเวลากว่า 40 ปี
จากนั้น DARPA (หน่วยงานโครงการวิจัยขั้นสูงด้านกลาโหมของสหรัฐฯ) ได้ว่าจ้างให้เบิร์กลีย์นำโปรโตคอลอินเทอร์เน็ตใหม่มาใส่ใน Unix โดยในรุ่น 4.2BSD ซึ่งปล่อยออกมาในเดือนสิงหาคม 1983 ได้มีการรวม TCP/IP (Transmission Control Protocol over Internet Protocol) และอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชันแบบ socket เข้าไว้ด้วยกัน บริการเครือข่ายทุกอย่างบนเซิร์ฟเวอร์ของคุณยังคงเรียกใช้ socket(), bind(), listen() และ accept() ตามลำดับนั้นอยู่จนถึงทุกวันนี้ เนื่องจากเบิร์กลีย์เป็นผู้กำหนดชื่อเหล่านี้ไว้ตั้งแต่ปี 1983
มีรายละเอียดหนึ่งที่ตัดสินทิศทางของทศวรรษถัดมา นั่นคือเทป BSD ไม่ใช่ระบบที่สมบูรณ์ในตัวเอง แต่เป็นชุดส่วนเสริมสำหรับ Unix ของ AT&T ซึ่งคุณจำเป็นต้องมีใบอนุญาตซอร์สโค้ดที่ถูกต้องจาก AT&T เพื่อใช้งานอย่างถูกกฎหมาย เบิร์กลีย์จึงค่อยๆ แทนที่ส่วนประกอบของ AT&T ด้วยโค้ดของตนเองทีละไฟล์เป็นเวลาหลายปี คำถามที่ว่าการแทนที่ดังกล่าวสมบูรณ์จริงหรือไม่ คือประเด็นที่ถูกนำไปสู่การพิจารณาในชั้นศาลในเวลาต่อมา
1984: การแตกบริษัทและสงคราม Unix
Bell System ถูกแยกบริษัทเมื่อวันที่ 1 มกราคม 1984 และข้อตกลงยินยอมที่เคยห้ามไม่ให้ AT&T ทำธุรกิจซอฟต์แวร์ก็สิ้นสุดลง AT&T จึงสามารถขาย Unix เป็นผลิตภัณฑ์ได้ในที่สุด สัญญาอนุญาตซอฟต์แวร์เชิงพาณิชย์มีราคาสูงขึ้น Unix จึงเลิกเป็นสิ่งที่มหาวิทยาลัยแจกจ่ายให้นักศึกษาได้โดยง่าย
ผู้จำหน่ายซอฟต์แวร์ได้ทำการ fork ระบบไปก่อนหน้านี้แล้ว บริษัทผู้ผลิตเวิร์กสเตชันต่างจัดส่ง Unix ของตนเองบนฮาร์ดแวร์ของตน ส่งผลให้ในช่วงปลายทศวรรษ 1980 โปรแกรมที่เขียนขึ้นสำหรับระบบหนึ่งจำเป็นต้องถูกพอร์ตไปยังอีกระบบหนึ่ง อุตสาหกรรมแตกออกเป็นสองค่ายมาตรฐานในปี 1988 ได้แก่ Open Software Foundation และ Unix International ทั้งสองฝ่ายใช้เวลาหลายปีในการจัดส่งระบบที่ไม่รองรับซึ่งกันและกัน พร้อมกับโต้เถียงกันว่า Unix ของใครคือของจริง
POSIX (portable operating system interface) เกิดขึ้นจากความวุ่นวายดังกล่าว มาตรฐาน IEEE 1003.1 ถูกเผยแพร่ในปี 1988 โดยระบุข้อกำหนดว่าระบบที่คล้าย Unix ต้องทำอะไรได้บ้าง ทั้งการเรียกใช้ system calls, พฤติกรรมของ shell, ยูทิลิตี้มาตรฐาน และอินเทอร์เฟซของ C library สิ่งนี้มีความสำคัญมากกว่าที่คิด เพราะมาตรฐานคือข้อกำหนดทางเทคนิคที่ไม่มีสัญญาอนุญาตใดมาครอบคลุม สามปีต่อมา นักศึกษาคนหนึ่งจึงได้เขียน kernel ขึ้นโดยอ้างอิงจากเอกสารเหล่านั้น
Minix และช่องว่างที่ทิ้งไว้
Andrew Tanenbaum เผยแพร่ Minix ในปี 1987 เพื่อใช้เป็นระบบปฏิบัติการสำหรับการเรียนการสอนในหนังสือของเขา Minix เป็นระบบขนาดเล็กที่มีลักษณะคล้าย Unix โดยมีซอร์สโค้ดมาพร้อมกับหนังสือและสามารถรันบนเครื่อง PC ราคาประหยัดที่นักศึกษาเป็นเจ้าของได้จริง ซึ่งต่างจาก Seventh Edition Unix ที่ไม่สามารถนำมาใช้ในห้องเรียนได้อย่างถูกกฎหมายอีกต่อไป
Minix ถูกจำกัดขนาดไว้โดยเจตนาเพื่อให้สามารถอธิบายรายละเอียดได้ครบถ้วนภายในหนังสือเล่มเดียว Tanenbaum ปฏิเสธการรับ patch ที่จะทำให้ระบบนี้กลายเป็นระบบสำหรับใช้งานจริง (production system) นอกจากนี้ สิทธิ์การใช้งานยังไม่ใช่ซอฟต์แวร์เสรี เนื่องจากผู้ใช้ต้องซื้อหนังสือและไม่มีสิทธิ์ในการแจกจ่าย Minix ที่ผ่านการดัดแปลง ดังนั้นภายในปี 1991 นักศึกษาจึงทำได้เพียงอ่านโค้ดของ kernel ที่คล้าย Unix แต่ไม่สามารถสร้างผลงานที่ยั่งยืนบนระบบดังกล่าวได้
GNU มีทุกอย่างยกเว้นเคอร์เนล
Richard Stallman ประกาศโครงการ GNU ในเดือนกันยายน 1983 โดยมีเป้าหมายเพื่อสร้างระบบปฏิบัติการที่สมบูรณ์แบบและเป็นอิสระในลักษณะเดียวกับ Unix ภายในปี 1991 โครงการ GNU ได้พัฒนาส่วนประกอบส่วนใหญ่ที่ล้อมรอบเคอร์เนลไว้ได้สำเร็จ ได้แก่ คอมไพเลอร์ GCC, ไลบรารี GNU C, ยูทิลิตี้สำหรับจัดการไฟล์ไบนารี และ bash ซึ่งเป็นเชลล์ที่ Brian Fox เขียนขึ้นในปี 1989 และยังคงเป็นเชลล์เริ่มต้นที่เซิร์ฟเวอร์ของคุณใช้งานอยู่ในปัจจุบัน ส่วนเคอร์เนลของ GNU ที่ชื่อว่า Hurd เป็นชิ้นส่วนที่ยังคงล่าช้าไม่เสร็จสมบูรณ์
GNU General Public License เวอร์ชัน 2 ได้รับการเผยแพร่ในเดือนมิถุนายน 1991 กฎของไลเซนส์นี้มีความกระชับ คุณสามารถนำโค้ดไปใช้งานและแก้ไขได้ แต่หากคุณแจกจ่ายผลงานนั้น คุณต้องแจกจ่ายซอร์สโค้ดภายใต้เงื่อนไขเดียวกัน กฎข้อนี้จะกลายเป็นจุดเปลี่ยนสำคัญของเรื่องราวนี้ในอีกสองส่วนถัดไป
สิงหาคม 1991: โพสต์ใน comp.os.minix
เมื่อวันที่ 25 สิงหาคม 1991 นักศึกษาคนหนึ่งในเฮลซิงกิได้โพสต์ข้อความลงในกลุ่ม Usenet ที่ชื่อ comp.os.minix:
Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.เวอร์ชัน 0.01 ได้รับการเผยแพร่ในเดือนกันยายน 1991 โดยไม่ได้ใช้โค้ดร่วมกับทั้ง Unix หรือ Minix เลย มันเป็น kernel ใหม่สำหรับสถาปัตยกรรม 386 ซึ่งพัฒนาขึ้นบนเครื่องที่รัน Minix โดยเขียนขึ้นตามมาตรฐาน POSIX และใช้งานร่วมกับเครื่องมือ GNU ที่มีอยู่แล้ว Tanenbaum ได้กล่าวกับ Torvalds ในเดือนมกราคม 1992 ว่า monolithic kernel เป็นการออกแบบที่ล้าสมัย ซึ่งเขามีประเด็นที่ถูกต้องในแง่ของการออกแบบ แต่ Torvalds กำลังตอบคำถามที่ต่างออกไป นั่นคือ สิ่งใดที่สามารถรันได้ดีบนคอมพิวเตอร์ราคาประหยัดเพียงเครื่องเดียวที่นักศึกษาคนหนึ่งเป็นเจ้าของ
ในเดือนกุมภาพันธ์ 1992 เวอร์ชัน 0.12 ได้เปลี่ยนสัญญาอนุญาตมาเป็น GPL ซึ่ง Torvalds ได้กล่าวในภายหลังว่านั่นเป็นการตัดสินใจที่ดีที่สุดของเขา สัญญาอนุญาต Linux ฉบับดั้งเดิมห้ามไม่ให้มีการแลกเปลี่ยนเงินตรา ซึ่งจะขัดขวางผู้จำหน่าย CD และบริษัทสนับสนุนที่เกิดขึ้นในเวลาต่อมา สัญญาอนุญาต GPL เอื้อให้เกิดการพาณิชย์ในขณะที่บังคับให้การเปลี่ยนแปลงทุกอย่างที่มีการเผยแพร่ต้องถูกส่งกลับเข้ามาในโครงสร้างหลักที่ใช้ร่วมกันเดียวกันนี้
คดีความ: เมษายน 1992 ถึงกุมภาพันธ์ 1994
Berkeley เผยแพร่ Networking Release 2 (Net/2) ในเดือนมิถุนายน 1991 ซึ่งเป็นระบบ BSD ที่เกือบสมบูรณ์โดยตัดไฟล์ที่มาจาก AT&T ออกไป ไฟล์เคอร์เนล 6 ไฟล์หายไป Bill และ Lynne Jolitz จึงเขียนไฟล์ทดแทนขึ้นมาและเผยแพร่ 386BSD 0.0 ในเดือนมีนาคม 1992 และตามด้วย 386BSD 0.1 ในวันที่ 14 กรกฎาคม 1992 ในขณะนั้น BSD ที่ฟรี สมบูรณ์ และพร้อมใช้งานสำหรับ 386 ได้ถือกำเนิดขึ้น ในช่วงเวลาเดียวกับที่ Linux ยังเป็นเพียงเคอร์เนลงานอดิเรก Berkeley Software Design, Inc. (BSDi) ได้จำหน่าย BSD/386 ซึ่งเป็นรุ่นเชิงพาณิชย์ที่มีการสนับสนุน และโฆษณาด้วยหมายเลขโทรศัพท์ 1-800-ITS-UNIX
ในเดือนเมษายน 1992 Unix System Laboratories (USL) ซึ่งเป็นบริษัทลูกของ AT&T ที่เป็นเจ้าของ Unix ในขณะนั้น ได้ฟ้องร้อง BSDi ต่อศาลรัฐบาลกลางในรัฐนิวเจอร์ซีย์ในประเด็นความลับทางการค้าและเครื่องหมายการค้า Unix ต่อมาคดีได้ถูกแก้ไขเพื่อเพิ่มชื่อ Regents of the University of California เข้าไปเป็นจำเลย ทางมหาวิทยาลัยได้ฟ้องกลับในรัฐแคลิฟอร์เนียในปี 1993 โดยโต้แย้งว่า AT&T ได้นำโค้ดของ Berkeley ไปรวมไว้ใน System V โดยไม่ได้ให้เครดิตตามที่ใบอนุญาตกำหนดไว้
ประเด็นทางกฎหมายเริ่มคลี่คลายในปี 1993 ผู้พิพากษา Dickinson Debevoise ปฏิเสธคำร้องขอคำสั่งคุ้มครองชั่วคราวของ USL โดยมีความเห็นว่าข้อเรียกร้องเรื่องลิขสิทธิ์ของ USL เหนือโค้ด 32V รุ่นเก่าอาจไม่สมบูรณ์ เนื่องจาก AT&T ได้แจกจ่ายโค้ดดังกล่าวมานานหลายปีโดยไม่มีการแจ้งเตือนเรื่องลิขสิทธิ์ Novell ได้เข้าซื้อกิจการ USL จาก AT&T ในช่วงกลางปี 1993 และฝ่ายบริหารของ Novell ต้องการยุติข้อพิพาทนี้ คดีได้ข้อยุติในเดือนกุมภาพันธ์ 1994 จากไฟล์ประมาณ 18,000 ไฟล์ในชุดแจกจ่ายของ Berkeley มีการนำออก 3 ไฟล์ และอีกประมาณ 70 ไฟล์ถูกเพิ่มประกาศลิขสิทธิ์ของ USL เข้าไป
Berkeley เผยแพร่ 4.4BSD-Lite ในเดือนมิถุนายน 1994 ซึ่งถือว่ามีความถูกต้องตามกฎหมาย FreeBSD และ NetBSD ซึ่งทั้งคู่ก่อตั้งขึ้นในปี 1993 บนพื้นฐานของโค้ด Net/2 ที่เป็นข้อพิพาท จึงต้องสร้างระบบขึ้นใหม่บนฐานข้อมูลชุดใหม่ ซึ่งใช้เวลาเกือบตลอดช่วงที่เหลือของปี 1994 ในขณะที่ Linux 1.0 ถูกเผยแพร่ในเดือนมีนาคม 1994 ท่ามกลางช่วงเวลาของการสร้างระบบใหม่นั้นเอง
เหตุใด Linux ถึงครองตลาดเซิร์ฟเวอร์แทนที่จะเป็น BSD?
คำตอบที่นิยมพูดถึงกันคือเรื่องคดีความ ซึ่งก็เป็นส่วนหนึ่งของคำตอบ ในช่วงระหว่างเดือนเมษายน 1992 ถึงกุมภาพันธ์ 1994 ใครก็ตามที่เลือกใช้ Unix แบบฟรีสำหรับผลิตภัณฑ์ของตน ต้องชั่งน้ำหนักระหว่างข้อเรียกร้องทางกฎหมายจากทนายความของ AT&T กับ kernel จากนักศึกษาชาวฟินแลนด์ที่ไม่มีใครสามารถฟ้องร้องได้ นั่นคือช่วงเวลาสำคัญที่เว็บถือกำเนิดขึ้นและเป็นช่วงที่ Linux distribution ชุดแรกปรากฏตัวออกมา ได้แก่ Slackware ในเดือนกรกฎาคม 1993, Debian ในเดือนสิงหาคม 1993 ตามด้วย Red Hat และ SUSE
ยังมีอีก 4 ปัจจัยที่มีความสำคัญไม่น้อยไปกว่าเรื่องคดีความ:
- ฮาร์ดแวร์: Linux มุ่งเป้าไปที่เครื่อง PC สถาปัตยกรรม 386 ที่เป็นสินค้าทั่วไปตั้งแต่บรรทัดแรกของโค้ด ซึ่งเป็นฮาร์ดแวร์ที่มีราคาถูกลงในขณะนั้น ในขณะที่จุดเน้นของ BSD อยู่ที่ VAX และเครื่อง workstation ส่วนการพอร์ตลง 386 นั้นเป็นความพยายามจากภายนอกโดยคนเพียงสองคน
- สิทธิ์การใช้งาน: GPL กำหนดให้บริษัทที่จัดส่ง kernel ที่ผ่านการแก้ไขต้องเผยแพร่การเปลี่ยนแปลงนั้น ทำให้งานของผู้พัฒนาฝั่ง vendor ไหลกลับเข้าสู่ต้นทางเดียวกัน ในขณะที่สิทธิ์การใช้งานแบบ BSD อนุญาตให้บริษัทเก็บการเปลี่ยนแปลงไว้เป็นความลับได้ ซึ่งบริษัทต่างๆ ก็ทำเช่นนั้นจริง
- รูปแบบการพัฒนา: Torvalds รวม patch จากคนแปลกหน้าอย่างรวดเร็วและปล่อยเวอร์ชันใหม่ออกมาอย่างต่อเนื่อง ส่วน 386BSD ปล่อยเวอร์ชันใหม่ช้าจนผู้ใช้งานของตนเองต้องแตกแขนง (fork) ออกไปถึงสองครั้งในปี 1993 คือ NetBSD และ FreeBSD และอีกครั้งเป็น OpenBSD ในปี 1995
- แรงส่ง: นักพัฒนามักจะไปในที่ที่มีนักพัฒนาคนอื่นอยู่แล้ว และ driver ก็มักจะถูกเขียนขึ้นสำหรับระบบที่มีผู้ใช้งานมากที่สุด
หากพูดถึงคำถามเชิงเทคนิคอย่างตรงไปตรงมา BSD ในปี 1994 เป็นระบบที่เสร็จสมบูรณ์มากกว่า มีฐานระบบที่สอดคล้องกัน มีประวัติที่บันทึกไว้อย่างชัดเจน และมีโค้ดด้านเครือข่ายที่ Linux ต้องใช้เวลาหลายปีกว่าจะไล่ตามทัน ไม่มีใครเลือก Linux ในปี 1994 เพราะมันดีกว่า แต่ผู้คนเลือกเพราะมันพร้อมใช้งาน ไม่มีภาระผูกพันทางกฎหมาย ทำงานบนฮาร์ดแวร์ที่พวกเขามีอยู่แล้ว และมีการปรับปรุงให้ดีขึ้นในทุกๆ สัปดาห์
สิ่งที่ BSD ยังคงรักษาไว้และสถานะการใช้งานในปัจจุบัน
BSD ยังคงพัฒนาต่อไป สิ่งที่สูญเสียไปคือสถานะการเป็นระบบปฏิบัติการเริ่มต้น หลักฐานที่ชัดเจนที่สุดอยู่บนเครื่องของคุณเอง: โครงการ OpenBSD ได้พัฒนา OpenSSH ขึ้นในปี 1999 และปัจจุบันมันกลายเป็น SSH server บนระบบ Linux แทบทุกระบบที่จัดส่งในปัจจุบัน ซึ่งเป็นเหตุผลว่าทำไม นิสัยการใช้ SSH key ที่ควรเรียนรู้ จึงเหมือนกันทั้งสองตระกูล
Netflix ให้บริการวิดีโอผ่านอุปกรณ์ FreeBSD ส่วน Junos ซึ่งเป็นระบบปฏิบัติการบนเราเตอร์ของ Juniper นั้นมีพื้นฐานมาจาก FreeBSD ซอฟต์แวร์ระบบของ PlayStation ก็มีรากฐานมาจาก FreeBSD เช่นกัน macOS และ iOS ของ Apple มีโค้ด BSD อยู่ใน kernel และทั่วทั้ง userland ใบอนุญาตแบบเสรี (permissive license) ที่ทำให้ BSD สูญเสียการมีส่วนร่วมใน shared server tree กลับกลายเป็นสิ่งที่นำโค้ด BSD ไปอยู่ในฮาร์ดแวร์จำนวนมหาศาลที่ไม่ได้ระบุถึงที่มาของมัน
หากคุณกำลังตัดสินใจเลือกในวันนี้ คำถามจะเป็นเรื่องของการใช้งานจริงมากกว่าประวัติศาสตร์ การ เปรียบเทียบ Linux และ FreeBSD ในฐานะเซิร์ฟเวอร์ ขึ้นอยู่กับ ZFS, jails, ports tree และปริมาณซอฟต์แวร์จากภายนอกที่ตั้งสมมติฐานว่าต้องรันบน Linux FreeBSD 15 ในฐานะเซิร์ฟเวอร์ เป็นระบบที่ทันสมัยและมีการดูแลรักษา ไม่ใช่สิ่งจัดแสดงในพิพิธภัณฑ์ และ Linux เทียบกับ Windows Server เป็นอีกคำถามหนึ่งที่แยกต่างหาก ซึ่งคำตอบขึ้นอยู่กับ stack ของแอปพลิเคชันที่คุณใช้งาน
การออกแบบจากปี 1969 ที่คุณใช้งานบน VPS ในปัจจุบัน
แต่ละอย่างที่กล่าวถึงนี้มีอายุมากกว่าคนส่วนใหญ่ที่ใช้งานมันเสียอีก
- Pipe:
who | wc -lนับจำนวนผู้ใช้งานที่ล็อกอินอยู่ เพราะ Unix Version 3 ในปี 1973 อนุญาตให้ผลลัพธ์ของโปรแกรมหนึ่งกลายเป็นข้อมูลนำเข้าของอีกโปรแกรมหนึ่งได้ - ส่วนของคู่มือ (Manual sections):
man 1 lsและman 5 crontabใช้ระบบการนับเลขจากคู่มือฉบับเดือนพฤศจิกายน 1971 - การแบ่งส่วนระบบไฟล์ (Filesystem split):
/usrเกิดขึ้นเพราะดิสก์ root บนเครื่อง PDP-11 เต็มในปี 1971 นักพัฒนาจึงย้ายไฟล์ไปยังชุดดิสก์ที่สอง ปัจจุบัน Linux distributions ได้ยกเลิกการแบ่งส่วนนี้แล้ว โดยเมื่อรันls -ld /binบน Ubuntu 24.04 หรือ Debian 13 คุณจะพบว่าเป็นเพียง symbolic link ไปยังusr/binเท่านั้น - การเรียกใช้ Socket: Berkeley เขียนขึ้นสำหรับ 4.2BSD ในปี 1983 และ network daemon ทุกตัวในปัจจุบันยังคงใช้งานมันอยู่
- POSIX: สคริปต์
#!/bin/shที่เขียนตามมาตรฐานนี้สามารถทำงานได้โดยไม่ต้องแก้ไขบน Linux, FreeBSD, macOS และ Solaris เพราะมาตรฐานนี้คือสิ่งที่ระบบปฏิบัติการทั้งหมดได้นำไปปรับใช้
เมื่อคุณเช่า virtual private server และล็อกอินเข้าใช้งาน คุณกำลังพิมพ์คำสั่งผ่านอินเทอร์เฟซที่ออกแบบมาสำหรับเครื่องที่มีหน่วยความจำเพียง 24 KB และต้องรองรับฝ่ายสิทธิบัตร ระบบนี้อยู่รอดมาได้เพราะอินเทอร์เฟซถูกเผยแพร่ มีการถกเถียง มีการกำหนดมาตรฐาน และถูกเขียนขึ้นใหม่ทั้งหมดโดยกลุ่มคนที่ไม่มีโอกาสได้เห็นซอร์สโค้ดต้นฉบับเลยแม้แต่น้อย
FAQ
Linux มีโค้ด Unix ดั้งเดิมอยู่บ้างหรือไม่
ไม่มี Linus Torvalds เขียน kernel ขึ้นใหม่ทั้งหมดตั้งแต่ปี 1991 โดยมุ่งเน้นที่อินเทอร์เฟซ POSIX แทนที่จะใช้ซอร์สโค้ดของ AT&T มรดกที่ได้รับจาก Unix คือการออกแบบและอินเทอร์เฟซที่เผยแพร่ไว้ เช่น ไฟล์, กระบวนการ (processes), ท่อ (pipes) และชื่อ system call ส่วนเครื่องมือ GNU ที่อยู่รอบ kernel ก็ถูกเขียนขึ้นใหม่ทั้งหมดเช่นกันโดยเริ่มตั้งแต่ปี 1983 ความเป็นอิสระนี้คือเหตุผลที่การฟ้องร้องของ AT&T เกี่ยวกับโค้ด BSD ไม่เคยส่งผลกระทบต่อ Linux เลย
คดีความของ AT&T ที่ฟ้อง BSD เกิดขึ้นเมื่อใด และมันทำให้ BSD ล่มสลายหรือไม่
USL ซึ่งเป็นบริษัทลูกของ AT&T ที่ถือครอง Unix ได้ฟ้องร้อง BSDi ในเดือนเมษายน 1992 และต่อมาได้เพิ่มมหาวิทยาลัยแคลิฟอร์เนียเป็นจำเลย ในปี 1993 ผู้พิพากษาปฏิเสธคำสั่งคุ้มครองชั่วคราว โดยวินิจฉัยว่าการอ้างสิทธิ์ลิขสิทธิ์เหนือโค้ด 32V รุ่นเก่ามีแนวโน้มที่จะไม่สมบูรณ์ Novell เข้าซื้อกิจการ USL ในช่วงกลางปี 1993 และตกลงยอมความในเดือนกุมภาพันธ์ 1994 โดยมีการลบไฟล์ออก 3 ไฟล์จากทั้งหมดประมาณ 18,000 ไฟล์ และมีการเปลี่ยนประกาศลิขสิทธิ์ใหม่ประมาณ 70 ไฟล์ คดีนี้ไม่ได้ทำให้ BSD ล่มสลาย แต่ทำให้การยอมรับ BSD หยุดชะงักในช่วงสองปีที่โลกกำลังตัดสินใจเลือกใช้ Unix แบบเสรี
ทำไม Linux ถึงครองตลาดเซิร์ฟเวอร์แทนที่จะเป็น BSD
ความแน่นอนทางกฎหมายเป็นเหตุผลหนึ่ง ในช่วงปี 1992 และ 1993 Linux ไม่มีการฟ้องร้องใดๆ ในขณะที่ BSD มีคดีความติดตัว เหตุผลอื่นๆ ได้แก่ การตั้งเป้าหมายที่สถาปัตยกรรม 386 ตั้งแต่วันแรก, สัญญาอนุญาต GPL ที่ดึงการเปลี่ยนแปลงจากผู้จำหน่ายกลับเข้ามาใน tree เดียวกัน และกระบวนการรวมโค้ดที่รวดเร็วพอที่จะรักษาความสนใจของผู้ร่วมพัฒนา ในขณะที่ 386BSD แตกแขนงออกไปสามทาง คุณภาพทางเทคนิคไม่ใช่ปัจจัยตัดสิน เนื่องจาก BSD เป็นระบบที่สมบูรณ์กว่าในปี 1994
FreeBSD ยังน่าใช้งานในปัจจุบันหรือไม่
น่าใช้งาน และมีเหตุผลที่ชัดเจนรองรับ ได้แก่ ZFS ที่รวมเข้ากับระบบพื้นฐาน, jails ที่เป็นโมเดลการแยกส่วน (isolation) ที่สมบูรณ์, ระบบพื้นฐานที่พัฒนาเป็นหน่วยเดียวกันอย่างสอดคล้อง และเอกสารประกอบที่ยังคงความถูกต้องแม่นยำ ต้นทุนที่ต้องจ่ายคือการจัดการเรื่องความเข้ากันได้ เนื่องจากซอฟต์แวร์เซิร์ฟเวอร์ของบุคคลที่สาม เครื่องมือ container และการสนับสนุนจากผู้จำหน่ายส่วนใหญ่ตั้งอยู่บนพื้นฐานของ Linux ให้เลือกใช้ FreeBSD เมื่อความสามารถด้านการจัดเก็บข้อมูลและเครือข่ายของมันคุ้มค่ากับต้นทุนนั้น มากกว่าการเลือกใช้เพียงเพราะความภักดีต่อสายเลือดที่เก่าแก่กว่า