ประวัติ Unix และ Linux ตั้งแต่ปี 1969 จนถึงปัจจุบัน
เจาะลึกจุดเริ่มต้นจาก Bell Labs สู่การกำเนิด Linux ในปี 1991 พร้อมวิเคราะห์คดีความเรื่องลิขสิทธิ์ปี 1992 และเหตุผลที่ Linux กลายเป็นมาตรฐานหลักของระบบเซิร์ฟเวอร์ในปัจจุบัน
ประวัติโดยย่อของ 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 แต่ทางห้องปฏิบัติการตัดสินว่าระบบนั้นใหญ่เกินกว่าจะทำต่อให้เสร็จได้ Ken Thompson จึงเลือกเก็บแนวคิดที่เขาชอบไว้และตัดส่วนที่เหลือทิ้ง โดยเขียนระบบ time-sharing ขนาดเล็กขึ้นบนมินิคอมพิวเตอร์ PDP-7 ที่ถูกโละทิ้งมา โดยมี Dennis Ritchie เข้ามาร่วมงานด้วย ชื่อ Unix นั้นเป็นการล้อเลียน Multics
ในปี 1970 ระบบถูกย้ายไปรันบน PDP-11 ซึ่ง Bell 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 จึงไม่สามารถวางจำหน่ายในฐานะผลิตภัณฑ์ได้ ทำได้เพียงให้สิทธิ์การใช้งานซอร์สโค้ดในราคาเพียงเล็กน้อย โดยไม่มีการสนับสนุนและไม่มีการรับประกันใดๆ
ผลกระทบที่เกิดขึ้นนั้นมหาศาลและไม่ได้เป็นไปตามที่ AT&T คาดการณ์ไว้ Unix รุ่น Sixth Edition ซึ่งปล่อยออกมาในปี 1975 ได้เข้าถึงภาควิชาวิทยาการคอมพิวเตอร์หลายร้อยแห่งพร้อมซอร์สโค้ดฉบับเต็ม John Lions จาก University of New South Wales ได้พิมพ์ซอร์สโค้ดของเคอร์เนลนั้นพร้อมคำอธิบายทีละบรรทัดและใช้ในการเรียนการสอน คนรุ่นหนึ่งจึงได้เรียนรู้วิธีการทำงานของระบบปฏิบัติการจากการอ่านโค้ดของระบบจริง
จากนั้นเงื่อนไขการอนุญาตใช้งานก็เปลี่ยนไป ใบอนุญาตของ Seventh Edition ในปี 1979 ห้ามไม่ให้ใช้ซอร์สโค้ดในการเรียนการสอน ทำให้หนังสือคำอธิบายของ Lions ต้องถูกส่งต่อกันในรูปแบบสำเนาถ่ายเอกสาร นี่คือรูปแบบของเรื่องราวทั้งหมด Unix อยู่ในทุกที่แต่ในขณะเดียวกันก็ไม่เป็นอิสระ ดังนั้นทุกการปรับปรุงที่ใครก็ตามทำขึ้น จึงกลายเป็นการปรับปรุงโค้ดที่เป็นกรรมสิทธิ์ของผู้อื่นไปโดยปริยาย
Berkeley: ส่วนประกอบของ Unix ที่คุณใช้งานจริง
Ken Thompson ใช้เวลาช่วงปีการศึกษา 1975 ถึง 1976 ที่มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ และได้ทิ้งกลุ่มผู้ใช้งาน Unix ที่มีความกระตือรือร้นสูงไว้เบื้องหลัง กลุ่มวิจัยระบบคอมพิวเตอร์ (Computer Systems Research Group หรือ CSRG) ของเบิร์กลีย์ได้จัดส่งเทปบันทึกการปรับปรุงระบบในท้องถิ่น ซึ่งเทปเหล่านั้นได้กลายเป็น BSD หรือ Berkeley Software Distribution ในเวลาต่อมา Bill Joy เป็นผู้เขียนผลงานส่วนใหญ่ในช่วงแรก ได้แก่ 1BSD ในปี 1978 และตามด้วย 2BSD ในปี 1979 ซึ่งมาพร้อมกับโปรแกรมแก้ไขข้อความ vi และ C shell
C shell คือจุดกำเนิดของ !! และ !$ โดย Bash ได้รับสืบทอดไวยากรณ์ดังกล่าวมา ซึ่งเป็นเหตุผลว่าทำไม การขยายประวัติคำสั่งของ bash ยังคงสร้างความประหลาดใจให้กับผู้ที่พิมพ์เครื่องหมายอัศเจรีย์ภายในเครื่องหมายคำพูดคู่ ในอีกสี่สิบกว่าปีต่อมา
จากนั้น 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 โปรแกรมที่เขียนขึ้นสำหรับระบบหนึ่งจำเป็นต้องถูก port ไปยังอีกระบบหนึ่ง อุตสาหกรรมแตกออกเป็นสองค่ายมาตรฐานในปี 1988 ได้แก่ Open Software Foundation และ Unix International ทั้งสองฝ่ายใช้เวลาหลายปีในการจัดส่งระบบที่ไม่สามารถใช้งานร่วมกันได้ พร้อมกับโต้เถียงกันว่า Unix ของใครคือของจริง
POSIX (portable operating system interface) เกิดขึ้นจากความวุ่นวายดังกล่าว มาตรฐาน IEEE 1003.1 ถูกเผยแพร่ในปี 1988 โดยระบุสิ่งที่ระบบที่คล้าย Unix ต้องทำไว้เป็นลายลักษณ์อักษร ได้แก่ system call, พฤติกรรมของ shell, ยูทิลิตี้มาตรฐาน และอินเทอร์เฟซของ C library สิ่งนี้มีความสำคัญมากกว่าที่คิด เพราะมาตรฐานคือข้อกำหนดทางเทคนิคที่ไม่มีใบอนุญาตใดมาครอบคลุม สามปีต่อมา นักศึกษาคนหนึ่งได้เขียน kernel ขึ้นโดยอ้างอิงจากเอกสารเหล่านั้น
Minix และช่องว่างที่ทิ้งไว้
Andrew Tanenbaum เผยแพร่ Minix ในปี 1987 เพื่อใช้เป็นระบบสำหรับการเรียนการสอนในหนังสือตำราด้านระบบปฏิบัติการของเขา Minix เป็นระบบขนาดเล็กที่มีลักษณะคล้าย Unix โดยมีซอร์สโค้ดมาพร้อมกับหนังสือ และสามารถรันบนเครื่อง PC ราคาประหยัดที่นักศึกษาเป็นเจ้าของได้จริง การศึกษาระบบนี้ในห้องเรียนสามารถทำได้อย่างถูกกฎหมาย ซึ่งต่างจาก Seventh Edition Unix ที่ไม่สามารถทำได้อีกต่อไป
Minix ถูกจำกัดขนาดไว้โดยเจตนาเพื่อให้สามารถอธิบายเนื้อหาได้ครบถ้วนภายในหนังสือเล่มเดียว Tanenbaum ปฏิเสธการรับ patch ที่จะทำให้มันกลายเป็นระบบสำหรับใช้งานจริง นอกจากนี้ license ของมันยังไม่ใช่ซอฟต์แวร์เสรี เนื่องจากผู้ใช้ต้องซื้อหนังสือ และการแจกจ่าย Minix ที่ผ่านการแก้ไขแล้วไม่ใช่สิทธิ์ที่ผู้ใช้จะตัดสินใจเองได้ ดังนั้นภายในปี 1991 นักศึกษาจึงทำได้เพียงอ่านโค้ดของ kernel ที่ทำงานได้จริงในลักษณะ Unix แต่ไม่สามารถสร้างผลงานที่ยั่งยืนบนระบบนั้นได้
GNU มีทุกอย่างยกเว้น kernel
Richard Stallman ประกาศโครงการ GNU ในเดือนกันยายน 1983 โดยมีเป้าหมายเพื่อสร้างระบบปฏิบัติการที่สมบูรณ์แบบและเป็นอิสระในลักษณะเดียวกับ Unix ภายในปี 1991 GNU ได้พัฒนาส่วนประกอบส่วนใหญ่ที่อยู่รอบ kernel ขึ้นมาได้สำเร็จ ได้แก่ compiler อย่าง GCC, GNU C library, binary utilities และ bash ซึ่งเป็น shell ที่ Brian Fox เขียนขึ้นในปี 1989 และยังคงเป็น shell ที่เซิร์ฟเวอร์ของคุณเริ่มต้นใช้งานในปัจจุบัน ส่วน Hurd ซึ่งเป็น kernel ของ GNU นั้นเป็นชิ้นส่วนที่ยังคงล่าช้าอยู่เสมอ
GNU General Public License version 2 ถูกเผยแพร่ในเดือนมิถุนายน 1991 กฎของ license นี้สั้นและเรียบง่าย คุณสามารถนำโค้ดไปใช้งานและแก้ไขได้ แต่หากคุณเผยแพร่ผลงานนั้น คุณต้องเผยแพร่ source code ภายใต้เงื่อนไขเดียวกัน กฎข้อนี้จะกลายเป็นจุดเปลี่ยนสำคัญของเรื่องราวนี้ในอีกสองส่วนถัดไป
สิงหาคม 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 ที่มีอยู่เดิม ในเดือนมกราคม 1992 Tanenbaum ได้กล่าวกับ Torvalds ว่าการออกแบบ kernel แบบ monolithic นั้นล้าสมัย ซึ่งในแง่ของการออกแบบเขามีประเด็นที่ถูกต้อง แต่ 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 กับการเลือกใช้เคอร์เนลจากนักศึกษาชาวฟินแลนด์ที่ไม่มีใครสามารถฟ้องร้องได้ นั่นเป็นช่วงเวลาเดียวกับที่เว็บถือกำเนิดขึ้นและเป็นช่วงที่ Linux distribution แรกๆ ปรากฏตัวออกมา ได้แก่ Slackware ในเดือนกรกฎาคม 1993, Debian ในเดือนสิงหาคม 1993 ตามด้วย Red Hat และ SUSE ซึ่ง Red Hat ได้เปลี่ยนความได้เปรียบในช่วงเริ่มต้นนั้นให้กลายเป็นมาตรฐานเชิงพาณิชย์ และ เส้นทางจาก Red Hat Linux สู่ CentOS และต่อมาเป็น Rocky และ AlmaLinux ได้อธิบายว่าเหตุใด distribution ที่ก่อตั้งในปี 1993 จึงยังคงเป็นตัวกำหนดว่าเซิร์ฟเวอร์ธุรกิจจำนวนมากจะรันด้วยอะไร
ยังมีอีก 4 ปัจจัยที่มีความสำคัญไม่น้อยไปกว่าเรื่องคดีความ:
- ฮาร์ดแวร์: Linux มุ่งเป้าไปที่ PC สถาปัตยกรรม 386 ที่เป็นสินค้าทั่วไปตั้งแต่บรรทัดแรกของโค้ด ซึ่งเป็นฮาร์ดแวร์ที่มีราคาถูกลงในขณะนั้น ในขณะที่จุดเน้นของ BSD อยู่ที่ VAX และเครื่องเวิร์กสเตชัน ส่วนการพอร์ตลง 386 เป็นความพยายามจากคนภายนอกเพียงสองคน
- สิทธิ์การใช้งาน: GPL กำหนดให้บริษัทที่จัดส่งเคอร์เนลที่มีการแก้ไขต้องเผยแพร่การเปลี่ยนแปลงนั้น ทำให้งานของผู้จำหน่ายไหลกลับเข้าสู่ต้นทางเดียวกัน ในขณะที่สิทธิ์การใช้งานแบบ BSD อนุญาตให้บริษัทเก็บการเปลี่ยนแปลงไว้เป็นความลับได้ ซึ่งบริษัทต่างๆ ก็เลือกที่จะเก็บไว้จริง
- รูปแบบการพัฒนา: Torvalds รวม patch จากคนแปลกหน้าอย่างรวดเร็วและปล่อยเวอร์ชันใหม่อย่างต่อเนื่อง ส่วน 386BSD ปล่อยเวอร์ชันช้าจนผู้ใช้ของตนเองต้องแยกโปรเจกต์ (fork) ออกไปถึงสองครั้งในปี 1993 กลายเป็น NetBSD และ FreeBSD และแยกอีกครั้งเป็น OpenBSD ในปี 1995
- แรงส่ง: นักพัฒนามักจะไปในที่ที่มีนักพัฒนาคนอื่นอยู่แล้ว และไดรเวอร์ต่างๆ ก็มักจะถูกเขียนขึ้นสำหรับระบบที่มีผู้ใช้มากที่สุด
หากพูดถึงคำถามเชิงเทคนิคอย่างตรงไปตรงมา 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 สัญญาอนุญาตแบบเสรีที่ทำให้ BSD สูญเสียการเป็นฐานโค้ดเซิร์ฟเวอร์ร่วมกันนั้น กลับทำให้โค้ด BSD ไปอยู่ในฮาร์ดแวร์จำนวนมากที่ไม่ได้ระบุถึงที่มาของมันเลย
หากคุณกำลังตัดสินใจในวันนี้ คำถามจะเป็นเรื่องของการใช้งานจริงมากกว่าประวัติศาสตร์ การเปรียบเทียบ Linux และ FreeBSD ในฐานะเซิร์ฟเวอร์ ขึ้นอยู่กับ ZFS, jails, ports tree และปริมาณซอฟต์แวร์จากภายนอกที่ตั้งสมมติฐานว่ารันบน Linux FreeBSD 15 ในฐานะเซิร์ฟเวอร์ เป็นระบบที่ทันสมัยและมีการดูแลรักษา ไม่ใช่สิ่งจัดแสดงในพิพิธภัณฑ์ และ Linux เทียบกับ Windows Server เป็นอีกคำถามหนึ่งซึ่งคำตอบขึ้นอยู่กับ stack ของแอปพลิเคชันที่คุณใช้งาน
การออกแบบจากปี 1969 ที่คุณใช้งานบน VPS ในปัจจุบัน
แต่ละสิ่งเหล่านี้มีอายุมากกว่าคนส่วนใหญ่ที่ใช้งานมันเสียอีก
- Pipe:
who | wc -lใช้สำหรับนับจำนวนผู้ใช้งานที่ล็อกอินอยู่ เพราะ Version 3 Unix ในปี 1973 อนุญาตให้ผลลัพธ์ของโปรแกรมหนึ่งกลายเป็นข้อมูลนำเข้าของอีกโปรแกรมหนึ่งได้ - ส่วนของคู่มือ (Manual sections):
man 1 lsและman 5 crontabใช้ระบบการนับเลขจากคู่มือฉบับเดือนพฤศจิกายน 1971 - การแยกส่วนระบบไฟล์:
/usrมีอยู่เพราะดิสก์ root บนเครื่อง PDP-11 ในตอนนั้นเต็มในปี 1971 นักพัฒนาจึงย้ายไฟล์ไปไว้บนดิสก์แพ็กชุดที่สอง ปัจจุบัน Linux distribution ต่างๆ ได้ยกเลิกการแยกส่วนนี้ไปแล้ว โดยเมื่อรัน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 เพราะมาตรฐานนี้คือสิ่งที่ระบบปฏิบัติการทั้งหมดได้นำไปปรับใช้
มีมรดกตกทอดหนึ่งอย่างที่ไม่รอดมาถึงปัจจุบัน นั่นคือลำดับการบูตด้วย shell-script ที่ Linux รับมาจาก System V ซึ่งแทบไม่มี distribution ใดใช้งานแล้วในขณะนี้ และ ข้อโต้แย้งที่นำ systemd มาแทนที่ ถือเป็นการต่อสู้ครั้งล่าสุดเกี่ยวกับนิยามของระบบปฏิบัติการแบบ Unix-like
เมื่อคุณเช่า 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) ที่สมบูรณ์, ระบบพื้นฐานที่ถูกพัฒนาเป็นหน่วยเดียวกันอย่างสอดคล้อง และเอกสารประกอบที่ถูกต้องแม่นยำ ต้นทุนที่ต้องแลกคือการจัดการเรื่องความเข้ากันได้ เนื่องจากซอฟต์แวร์เซิร์ฟเวอร์ของบุคคลที่สาม เครื่องมือคอนเทนเนอร์ และการสนับสนุนจากผู้จำหน่ายส่วนใหญ่ตั้งสมมติฐานว่าใช้งานบน Linux ให้เลือกใช้ FreeBSD เมื่อความสามารถด้านการจัดเก็บข้อมูลและเครือข่ายคุ้มค่ากับต้นทุนที่ต้องเสียไป มากกว่าการเลือกใช้เพียงเพราะความภักดีต่อสายเลือดที่เก่าแก่กว่า