📅 เขียนเมื่อ: กรกฎาคม 2026
⚠️ อ้างอิงจากเอกสารต้นฉบับของ Bell Labs และบันทึกของผู้พัฒนา
ถ้าผมถามว่า "ระบบปฏิบัติการที่เจ๋งที่สุดในโลกคืออะไร" — คุณคงตอบ Linux, macOS, หรือ Windows
แต่ถ้าถาม Ken Thompson และ Dennis Ritchie — สองคนที่สร้าง Unix ขึ้นมา — พวกเขาจะตอบว่า Plan 9
Plan 9 คือระบบปฏิบัติการที่ Bell Labs สร้างขึ้นในช่วงปลายยุค 80 ถึงต้นยุค 90 โดยทีมเดียวกับที่สร้าง Unix แต่มันไม่ใช่แค่ "Unix เวอร์ชันใหม่" — มันคือการเริ่มต้นใหม่ทั้งหมด
และถึงแม้วันนี้แทบไม่มีใครใช้ Plan 9 — แนวคิดของมันแทรกซึมอยู่ในทุกระบบปฏิบัติการที่คุณใช้อยู่
จุดเริ่มต้น — "Unix เริ่มแก่แล้ว"
ปัญหาที่ Unix สะสมมา
Unix เกิดในปี 1969 — ตอนนั้นคอมพิวเตอร์คือเครื่องเดียวที่มี terminal ต่อพ่วง
พอยุค 80 มาถึง โลกเปลี่ยน — network กลายเป็นเรื่องปกติ, graphics เริ่มสำคัญ, distributed computing เริ่มเกิด
แต่ Unix ไม่ได้ถูกออกแบบมาเพื่อสิ่งเหล่านี้ มันถูก patch, extend, retrofit — จนกลายเป็นระบบที่ซับซ้อนเกินกว่าที่ผู้สร้างจะภูมิใจ
Ken Thompson เคยพูดประมาณว่า: "Unix เริ่มต้นด้วยความเรียบง่าย แต่มันค่อย ๆ สะสมความซับซ้อนเข้าไปเรื่อย ๆ — ถึงเวลาที่ต้องเริ่มใหม่"
ทำไมต้องชื่อ Plan 9
ชื่อ "Plan 9" มาจากหนัง B-movie สุดคลาสสิกเรื่อง "Plan 9 from Outer Space" (1959) ของ Ed Wood — ที่ได้ชื่อว่าเป็น "หนังที่แย่ที่สุดตลอดกาล"
แต่ชื่อนี้ไม่ได้หมายความว่า OS นี้แย่ — มันคือมุกวงในของทีม Bell Labs ที่ชอบตั้งชื่อแปลก ๆ (Unix เองก็เป็นมุก — มันล้อ Multics)
หัวใจของ Plan 9 — "ทุกอย่างคือไฟล์" จริง ๆ
จาก Unix สู่ Plan 9 — ทำให้สุดทาง
Unix มีแนวคิด famous: "everything is a file"
- filesystem เป็นไฟล์ →
/home/user/document.txt - devices เป็นไฟล์ →
/dev/sda,/dev/tty - processes เป็นไฟล์ →
/proc/1234
แต่มันมีข้อยกเว้น — network sockets, graphics, window system — สิ่งเหล่านี้ไม่ใช่ไฟล์ใน Unix
Plan 9 เอาแนวคิดนี้ไป สุดทาง — ใน Plan 9, ทุกอย่างคือไฟล์ ไม่มีข้อยกเว้น
9P — โปรโตคอลเดียวที่เชื่อมทุกอย่าง
หัวใจของ Plan 9 คือ 9P — โปรโตคอลที่ทำให้ทุกอย่างสื่อสารกันผ่าน filesystem
หน้าต่าง GUI → mount เป็นไฟล์
network connection → mount เป็นไฟล์
เครื่องอื่นใน network → mount เป็นไฟล์
Enter fullscreen mode Exit fullscreen mode
ลองนึกภาพ: คุณ ls ดูไฟล์ในเครื่องคนอื่นได้เหมือนกับเป็น local disk — โดยไม่ต้องใช้ NFS, Samba, หรืออะไรซับซ้อนเลย
ตัวอย่างจริง: ถ้าผมเปิดหน้าต่าง editor (acme) ใน Plan 9 — หน้าต่างนั้นคือไฟล์ใน /mnt/acme/ คุณสามารถ echo "hello" > /mnt/acme/body แล้วข้อความก็จะไปโผล่ใน editor ทันที
GUI ของ Plan 9 ไม่ใช่ "โปรแกรมที่วาดรูปบนจอ" — มันคือ "filesystem ที่บังเอิญแสดงผลเป็นกราฟิกได้"
Namespace — มุมมองส่วนตัวของทุก process
ใน Linux, ทุก process มองเห็น filesystem เดียวกัน
ใน Plan 9, แต่ละ process มี namespace ของตัวเอง — คุณสามารถ mount, unmount, และจัดเรียง filesystem ใหม่ได้โดยไม่กระทบ process อื่น
Process A: /bin → /usr/local/bin
Process B: /bin → /remote/machine/bin
Enter fullscreen mode Exit fullscreen mode
สอง process นี้เห็น filesystem คนละชุด — แต่รันอยู่บนเครื่องเดียวกัน
แนวคิดนี้คือต้นกำเนิดของ Linux namespaces ที่ใช้ใน Docker และ container ทุกวันนี้
ชีวิตใน Plan 9 — หน้าตาเป็นยังไง
Rio — หน้าต่างที่ไม่มี title bar
Rio คือ window system ของ Plan 9 — และมัน minimal สุด ๆ
ไม่มี taskbar, ไม่มี desktop icons, ไม่มี minimize button — มีแต่หน้าต่างที่คุณจัดการด้วยเมาส์ 3 ปุ่ม
- ปุ่มซ้าย = เลือกข้อความ
- ปุ่มกลาง = execute (รันข้อความที่เลือก)
- ปุ่มขวา = เมนู (New, Resize, Delete ฯลฯ)
ลองนึกภาพการใช้งานจริง:
คุณเปิดหน้าต่าง terminal ขึ้นมา — พิมพ์ ls -la — ผลลัพธ์โผล่ในหน้าต่าง คุณใช้ปุ่มซ้ายลากเลือกชื่อไฟล์ที่สนใจ → กดปุ่มกลาง → Plan 9 เอาไฟล์นั้นมาเป็น argument ให้คำสั่งถัดไปโดยอัตโนมัติ
หรือใน editor: คุณพิมพ์ man 9p ใน buffer → ลากคลุม → ปุ่มกลาง → หน้าต่าง man page โผล่ขึ้นมาทันที
ไอเดียคือ: คุณไม่ต้อง copy-paste — คุณแค่เลือกแล้ว execute ทุกอย่างที่เลือกคือ command ได้หมด
นี่คือ UX ที่ต่างจากสิ่งที่เราใช้ทุกวันนี้โดยสิ้นเชิง — ไม่มี clipboard, ไม่มี Ctrl-C/Ctrl-V — แต่เมื่อคุณชินแล้ว มันเร็วและ natural กว่ามาก
Acme — editor ที่เป็นมากกว่า editor
Acme คือ text editor ในตำนานที่ Rob Pike สร้าง — และมันก็คือ "หน้าต่างที่ควบคุมด้วยเมาส์แบบ hypertext"
- ทุกคำใน Acme เป็น clickable link
- คุณพิมพ์คำสั่ง shell ลงไปใน buffer แล้วคลิก execute ได้เลย
- ไฟล์ทุกไฟล์ที่เปิดอยู่คือหน้าต่างที่จัดการได้ด้วย mouse gesture
Acme ดู primitive สำหรับยุคนี้ — แต่มันคือต้นแบบของ IDE สมัยใหม่: code + terminal + file browser อยู่ในหน้าต่างเดียวกัน
Plumbing — messsage bus ก่อนจะมี D-Bus
Plumbing คือระบบส่งข้อความระหว่างโปรแกรมใน Plan 9
คุณ click ที่ URL → มันส่งไปให้ browser
คุณ click ที่ error message → มันเปิดไฟล์ไปที่บรรทัดนั้น
ทุกอย่างเชื่อมกันด้วยไฟล์ — และ plumbing ก็คือไฟล์พิเศษที่อ่านเขียนข้อความได้
มรดกของ Plan 9 — สิ่งที่อยู่รอดมาจนถึงวันนี้
1. UTF-8 — เกิดบนกระดาษรองจานในร้านอาหารแห่งหนึ่ง
คืนหนึ่งในปี 1992 — Ken Thompson กับ Rob Pike นั่งกินข้าวที่ร้านอาหารสไตล์ diner แห่งหนึ่งใน New Jersey
พวกเขาคุยกันเรื่องปัญหาที่โลกคอมพิวเตอร์มี encoding เป็นร้อย ๆ แบบ — ASCII, Latin-1, Shift-JIS — แต่ละตัวใช้กับภาษาเดียว
ทั้งคู่หยิบกระดาษรองจานขึ้นมา แล้วออกแบบ UTF-8 — encoding ที่ backward compatible กับ ASCII และรองรับทุกภาษาในโลก
วันนี้ UTF-8 ใช้ใน 98% ของเว็บทั้งโลก
และมันถูกออกแบบระหว่างการพัฒนา Plan 9 — โดยคนของ Plan 9
2. /proc filesystem — เกิดใน Unix แต่ Plan 9 ทำให้มันเป็นอย่างที่เราใช้
Linux users รู้จัก /proc — filesystem ที่เก็บข้อมูล process:
cat /proc/cpuinfo # ดู CPU
cat /proc/meminfo # ดูหน่วยความจำ
Enter fullscreen mode Exit fullscreen mode
/proc เกิดครั้งแรกใน Unix รุ่น 8 (1984) โดย Tom Killian — ผู้เขียน paper "Processes as Files" ที่นำเสนอใน USENIX เดือนมิถุนายน 1984 ซึ่งเกิดก่อน Plan 9 จะเริ่มพัฒนาด้วยซ้ำ
แต่ /proc ใน Unix 8 เป็นแบบ flat — หนึ่ง process = หนึ่งไฟล์
Plan 9 คือคนที่พัฒนาแนวคิดนี้ต่อไป — ทำให้แต่ละ process เป็น directory ที่มีหลายไฟล์ย่อย (ใช้ ls ดู, cat อ่านค่าต่าง ๆ ได้) — กลายเป็น hierarchical /proc แบบที่เราใช้กันทุกวันนี้
Linux สืบทอด hierarchical model นี้มาจาก Plan 9 — และทุกวันนี้ /proc กลายเป็นมาตรฐาน
3. Linux Namespaces — Container ทั้งหมดมีรากจาก Plan 9
Docker, Kubernetes, container ทั้งหมด — ใช้ Linux namespaces ในการแยก process
แนวคิด "แต่ละ process มีมุมมองของระบบที่แตกต่างกัน" — เกิดใน Plan 9
พูดให้เห็นภาพ: Plan 9 คิดเรื่อง per-process namespace ตั้งแต่ปลายยุค 80 — ส่วน Linux namespaces ที่เป็นรากฐานของ Docker และ container ทั้งหมด เพิ่งมาใน kernel ราวปี 2008 หรือเกือบ 20 ปีให้หลัง
4. Go — ภาษาโปรแกรมที่สืบทอด DNA จาก Plan 9
Go ถูกสร้างโดย Rob Pike, Ken Thompson, และ Robert Griesemer — สามคนที่เคยทำงานบน Plan 9
และ Go ก็เต็มไปด้วยแนวคิดจาก Plan 9:
- Goroutines — lightweight threads → ต้นแบบคือ lightweight processes ของ Plan 9
- Channels — สื่อสารด้วยการส่งข้อความ → ต้นแบบคือ 9P และ plumbing
- Gofmt — ทุกคนเขียนโค้ดหน้าตาเหมือนกัน → ต้นแบบคือ philosophy "หนึ่งวิธีที่ดีที่สุด" ของ Plan 9
- Static binary — compile เป็นไฟล์เดียว → ต้นแบบคือ Plan 9 binaries
Go คือ Plan 9 ในร่างของภาษาโปรแกรม
ทำไม Plan 9 ถึงไม่รุ่ง
ปัญหาที่แก้ไม่ได้
- Chicken-and-egg problem — ไม่มี applications เพราะไม่มี users → ไม่มี users เพราะไม่มี applications
- Licensing — ยุค 90 Bell Labs ถูกขายต่อหลายมือ (AT&T → Lucent → ...) ทำให้ license ของ Plan 9 ซับซ้อน
- Linux ชนะไปแล้ว — ตอน Plan 9 เริ่ม stable (กลางยุค 90), Linux กำลังโตเร็วและมี ecosystem ใหญ่กว่า
- Hardware support — Plan 9 รองรับ hardware น้อยมาก เทียบกับ Linux/Windows
แต่ปัญหาหลักคือ: Plan 9 ไม่ได้พยายามจะ "ดีกว่า Unix นิดหน่อย" — มันพยายามจะ "ใหม่หมด"
และโลกไม่พร้อมจะเปลี่ยน OS ทั้งระบบเพื่อไอเดียใหม่ ๆ — ถึงแม้ไอเดียเหล่านั้นจะดีกว่า
Plan 9 ในปี 2026
Plan 9 ยังมีชีวิตอยู่ — ในรูปแบบของ 9front (community fork) และ Plan 9 from User Space (port ของ tools บน Linux/macOS)
มีกลุ่ม enthusiasts ที่ใช้ Plan 9 เป็น daily driver — เล็ก แต่บ้าพลัง
และทุก concept ที่ Plan 9 เคยคิด — ถูก implement ใหม่ใน Linux ในอีก 20 ปีต่อมา
สิ่งที่ Plan 9 สอนเรา
"แนวคิดที่ดีไม่ได้แปลว่าจะชนะ — แต่มันจะถูกขโมย"
Plan 9 ล้มเหลวในฐานะผลิตภัณฑ์ — แต่ชนะในฐานะแนวคิด
ทุก container ที่รันอยู่บน Kubernetes...
ทุก UTF-8 byte ที่ส่งผ่าน network...
ทุก Go routine ที่ทำงานอยู่บน cloud...
ทั้งหมดมี DNA ของ Plan 9 อยู่ในนั้น
ที่มา: Bell Labs Technical Journal, Plan 9 manual pages, Rob Pike's personal blog (herpolhode.com), 9fans.net, Wikipedia
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.