- การ นำ Rust มาใช้ ของ Ubuntu แสดงให้เห็นว่า Rust กำลัง ก้าวจากกลุ่มผู้ใช้ยุคแรก ข้าม chasm ไปสู่กระแสหลัก ในวงจรการยอมรับเทคโนโลยี
- Canonical รับ Rust เป็น ภาษาหลักสำหรับซอฟต์แวร์โครงฐานตัวใหม่ เพื่อทดแทนการใช้ C, C++ และ Python บางส่วน พร้อมทั้งลงทุนทั้งด้านงบประมาณและชื่อเสียงในการพัฒนา utility ที่ปลอดภัยด้านหน่วยความจำ
- ผู้ใช้กลุ่ม Early Majority ต้องการ "มาตรฐานอุตสาหกรรม" และความเข้ากันได้กับ workflow เดิม ดังนั้นการเปลี่ยน utility แบบ drop-in จึงเป็นกลยุทธ์สำคัญในการข้าม chasm
- ประเด็นเรื่อง การขยาย standard library ของ Rust ถูกหยิบยกขึ้นมาอีกครั้ง และมีการประเมินใหม่ว่าแนวคิด "Rust Platform" ที่เคยถูกปฏิเสธในปี 2016 อาจเหมาะกับกลุ่ม Early Majority มากกว่า
- โครงสร้างที่เปลี่ยนการยอมรับไปเป็นการลงทุน และความครอบคลุมที่ตั้งอยู่บน ความเข้าอกเข้าใจ (empathy) ของชุมชนโอเพนซอร์ส เป็นสิ่งจำเป็นต่อการเติบโตในระยะถัดไปของ Rust
การ 'ข้าม chasm' ของ Rust แตกต่างกันไปในแต่ละด้าน
- การที่ Rust ข้าม chasm ใน Technology Adoption Life Cycle ได้หรือไม่นั้น แตกต่างกันไปตามแต่ละด้าน
- ภายใน Amazon นั้น Rust ได้ปักหลักอย่างมั่นคงในการสร้าง data plane ขนาดใหญ่หรือเอเจนต์ที่รับรู้ทรัพยากร แต่สำหรับงานพัฒนาทั่วไปยังมีมุมมองว่าเกินความจำเป็น
- ในด้าน Safety Critical Software มีกรณีความสำเร็จอยู่บ้าง แต่โดยรวมอุตสาหกรรมส่วนใหญ่ยังคงอยู่ในโหมด "รอดูไปก่อน"
ความสำคัญของ "ลูกค้าอ้างอิง"
- หัวใจสำคัญของการข้าม chasm คือการมี ลูกค้าอ้างอิง (reference customers)
- ผู้ใช้งานยุคแรกซื้อสิ่งที่เป็น "ตัวขับเคลื่อนการเปลี่ยนแปลง (change agent)" แต่ กลุ่ม Early Majority ต้องการเพิ่มผลิตภาพของการดำเนินงานเดิม และพยายามลดความไม่ต่อเนื่องให้น้อยที่สุด
- การได้เห็นองค์กรที่คล้ายกับตนประสบความสำเร็จ เป็นปัจจัยที่โน้มน้าวที่สุดในการนำเทคโนโลยีใหม่มาใช้
- ความสำเร็จของทีม S3 กับ Rust นั้นโน้มน้าวทีมบริการขนาดใหญ่ได้ แต่สำหรับ ทีมบริการ CRUD กลับโน้มน้าวโดยตรงได้ไม่มาก นี่คือตัวอย่างหนึ่ง
กลยุทธ์การนำ Rust มาใช้ของ Ubuntu (Canonical)
- ในงาน Rust Nation นั้น Canonical VP of Engineering Jon Seager ได้บรรยายคีย์โน้ตหัวข้อ "Rust Adoption At Scale with Ubuntu"
- ก่อนหน้านี้ Canonical จำกัดภาษาที่ใช้พัฒนาเองไว้ที่ Python, C/C++ และ Go แต่ล่าสุดได้เพิ่ม Rust และรับให้เป็น ภาษาหลักสำหรับงานโครงฐานใหม่
- คล้ายกับคีย์โน้ตของ Lars Bergstrom เรื่องการนำ Rust มาใช้ภายใน Google ซึ่งเป็นแนวทางที่ มีทั้งวิสัยทัศน์และความเป็นรูปธรรม
- นี่คือคุณลักษณะที่จำเป็นอย่างแม่นยำสำหรับการเปลี่ยนผ่านจากผู้ใช้ยุคแรกไปสู่กลุ่ม Early Majority
การลงทุนใน utility ที่ปลอดภัยด้านหน่วยความจำ
- Jon Seager กล่าวถึงว่า Ubuntu ควรสนับสนุน การสร้าง utility ที่ตั้งอยู่บนความปลอดภัยของหน่วยความจำ ในลักษณะของการ "pay it forward"
- Canonical กำลังสนับสนุนเงินทุนให้กับการพัฒนา sudo-rs, ntpd-rs ของ Trifecta Tech Foundation และงาน coreutils ของ uutils
- เป็นโครงสร้างที่ Ubuntu ทดลองและตรวจสอบสิ่งใหม่ก่อน แล้วเปิดโอกาสให้ดิสโทรอื่นได้รับประโยชน์ตามมา
- utility แบบ drop-in ที่เข้าแทนใน workflow เดิมได้ทันที สอดคล้องกับความต้องการของกลุ่ม Early Majority ที่ต้องการ "ลดความไม่ต่อเนื่องให้น้อยที่สุด"
ความต้องการของผู้ใช้กลุ่มใหม่: การขยาย standard library
- ระหว่างงานเลี้ยงอาหารค่ำ Jon Seager กล่าวว่าควร ทบทวนนโยบาย standard library ขนาดเล็ก ของ Rust
- นี่เป็นข้อเรียกร้องที่ถูกพูดซ้ำมาหลายปี และไม่ได้หมายถึงแค่การทำ standard library ให้ใหญ่ขึ้น แต่กำลังวางแนวทางทางเลือกในรูปโปรเจ็กต์ชื่อ "Battery Packs"
- แนวคิด Rust Platform ที่เสนอในปี 2016 (แนวคิดการยอมรับ crate บางตัวเป็น standard library แบบขยาย) เคยถูกปฏิเสธโดยผู้ใช้งานยุคแรกในเวลานั้น แต่ตอนนี้มีการประเมินใหม่ว่าอาจเหมาะกับกลุ่ม Early Majority
- ในเวลานั้นความเห็นส่วนใหญ่คือแค่เพิ่ม dependency ลงใน
Cargo.toml ก็เพียงพอแล้ว
ความจำเป็นของการเปลี่ยนแปลงเพื่อการเติบโต
- หากต้องการเปลี่ยนจากผู้ใช้ยุคแรกไปสู่กลุ่ม Early Majority จำเป็นต้องสื่อสารว่า Rust คือ "มาตรฐานอุตสาหกรรม (industry standard)" ไม่ใช่ "ล้ำสมัยที่สุด (state-of-the-art)"
- Rust ประสบความสำเร็จในการสร้างการรับรู้ในอุตสาหกรรมแล้ว และจากนี้ต้องเป็นตัวเลือกที่ดีที่สุดโดยยึดจาก "สิ่งที่มันเป็นจริง ๆ" ไม่ใช่ "สิ่งที่มันอาจเป็นได้"
- สองสิ่งนี้บางครั้งอาจอยู่ในความตึงเครียดต่อกัน
- การทำการตลาดกับกลุ่มนักปฏิบัตินิยมต้องอาศัยความอดทน ความเข้าใจประเด็นของอุตสาหกรรมนั้น ๆ และการเข้าร่วมคอนเฟอเรนซ์ในอุตสาหกรรม
โครงสร้างที่เปลี่ยนการยอมรับไปเป็นการลงทุน
- การขยายการนำ Rust มาใช้ ย่อมมาพร้อมกับ ความต้องการที่เพิ่มขึ้น ต่อโปรเจ็กต์และ ecosystem ของ Rust
- สำหรับองค์กรโอเพนซอร์สอย่าง Canonical สิ่งที่สำคัญกว่า $$ คือ การสร้างความสัมพันธ์ระหว่างองค์กรและการมีส่วนร่วม
- ช่วงแรกนักพัฒนา Rust for Linux ได้รับความช่วยเหลือจาก maintainer ของ Rust แต่ต่อมาก็ค่อย ๆ แก้บั๊กได้ด้วยตนเอง และ maintainer เปลี่ยนไปมีบทบาทเป็นพี่เลี้ยง
- แนวโน้มที่น่าสนใจคือ เงินทุนมักมาจาก บริษัทที่กำลังพิจารณานำ Rust มาใช้ มากกว่าบริษัทที่ใช้อยู่แล้ว
- ผู้ใช้งานยุคแรกภายในองค์กรจะผลักดันการนำมาใช้ในระดับองค์กร และจัดสรรงบประมาณให้กับการพัฒนาฟีเจอร์แบบ "table stakes"
- ตามข้อมูลของ Alexandru Radovici จาก Rust Foundation Silver Member Directory มี บริษัทด้านซอฟต์แวร์ที่ต้องการความปลอดภัยสูง จำนวนมากที่มีงบเพื่ออุดช่องว่างของ Rust แต่ยังไม่รู้ว่าจะใช้อย่างไร
บทบาทของโอเพนซอร์สและความสำคัญของความเข้าอกเข้าใจ
- โอเพนซอร์สเป็นแพลตฟอร์มที่ยอดเยี่ยมสำหรับการข้าม chasm แต่ พวกพ้อง (cliques) และ "ธรรมเนียมบอกเล่า (oral traditions)" อาจกลายเป็นอุปสรรคต่อการเข้ามามีส่วนร่วม
- การใช้คำศัพท์ไม่ถูกต้องแล้วถูกปฏิเสธไอเดีย หรือการตอบกลับอย่างหยาบคายเพียงครั้งเดียว อาจทำให้ผู้ร่วมพัฒนาใหม่ตัดสินใจจากไป
- สิ่งที่จำเป็นที่สุดต่อการเติบโตระยะถัดไปของ Rust คือ ความเข้าอกเข้าใจในโอเพนซอร์ส (Empathy in Open Source)
- หัวใจสำคัญคือการเข้าไปยังจุดที่ Rust สามารถช่วยผู้คนได้ แล้ว สนับสนุนและเสริมพลังให้พวกเขา
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
การที่ Ubuntu ใช้ userland ที่ไม่ได้ใช้ไลเซนส์ GPL หมายความว่าอาจเปิดทางให้มี TiVoization ในระบบนิเวศลินุกซ์มากขึ้น
หากรวมกับทิศทางที่ Amutable ฝั่ง systemd กำลังผลักดัน ก็อาจได้เห็น ดิสโทรลินุกซ์แบบปิดที่ผู้ใช้แก้ไขไม่ได้
จากมุมมององค์กร สภาพแวดล้อมแบบปิดที่ตรวจสอบลายเซ็นได้ครบถ้วนก็ดูน่าสนใจ โลกที่แม้แต่ “ls” หรือ “cd” ยังกลายเป็นซอร์สปิด ฟังดูเหมือนบรรยากาศวันสิ้นโลกแบบแปลก ๆ
ช่องว่าง (chasm) ที่แท้จริง ที่ Rust ต้องข้ามให้ได้คือ การรองรับ dynamic linking ที่มี ABI ปลอดภัย
ต้องสามารถแก้ไลบรารีหนึ่งตัวได้โดยยังคงความปลอดภัยไว้ และต้องมีเสถียรภาพของ ABI ระดับเดียวกับ C ถึงจะทำให้ฝั่ง C/C++ หันมารับ Rust ได้
ปัญหาใหญ่กว่าเรื่องที่ Ubuntu นำ Rust มาใช้ คือมันยังคงใช้ สคริปต์ curl|bash กับบิลด์สำคัญอยู่
ดูได้ชัดจาก snapcraft.yaml ของ firefox-snap
ผมติดใจตรงที่โปรเจกต์ Rust Coreutils ใช้ ไลเซนส์ MIT
แม้บางครั้งจะมีคนวิจารณ์แนวคิดของ FSF แต่ GPL ปกป้องโอเพนซอร์ส ถ้า Canonical เปลี่ยน Ubuntu ทั้งระบบไปเป็น MIT จะเกิดอะไรขึ้นก็ไม่รู้
rust-coreutils เคยทำให้ ติดตั้ง CUDA Toolkit ไม่ได้ ประเด็นนี้มีอยู่ใน ฟอรัม NVIDIA
แนวคิดเรื่อง “Crossing the chasm” น่าสนใจ นอกจากกรณี coreutils ของ Ubuntu แล้ว Rust ยังมีช่องว่างอีกหลายจุดที่พยายามจะข้าม
มีทั้ง Rust for Linux และ Rust สำหรับอุตสาหกรรมยานยนต์ แต่ตอนนี้ก็ดูเหมือนยังอยู่แค่ระดับไดรเวอร์
ตรรกะที่บอกว่าค่อยไปเปลี่ยน standard library ทีหลังเป็นแนวคิดที่อันตราย ผู้ใช้ต้องการ ระบบที่เสถียรและมีคุณภาพสูง มากกว่า “ช่องว่าง” ต่าง ๆ
ความยังไม่สุกงอม ของ ecosystem Rust เป็นปัจจัยที่ขัดขวางการยอมรับ crate จำนวนมากยังไม่ถึงเวอร์ชัน 1.0 หรือเป็นแค่ wrapper ของ C แบบง่าย ๆ ด้านคริปโตถือว่าโอเค แต่ของอย่าง SAML หาได้ยาก
libcที่ผูกกับ API ลึกมากก็ขึ้นเวอร์ชันได้ยากเหมือนกัน ส่วนตัวผมอ้างอิงลิสต์แบบ คัดสรรมาแล้ว อย่าง blessed.rsมีความพยายามจะ “แปลตามฟีล (vibe-translate)” โค้ด C++ เป็น Rust แล้ว เปลี่ยนไลเซนส์ ไปพร้อมกัน ตัวอย่างเช่น sudo-rs กลับมี สถิติด้านความปลอดภัยแย่กว่า เวอร์ชัน C เสียอีก
standard library ขนาดใหญ่ ของ .NET น่าใช้งานมาก งานส่วนใหญ่ทำได้ตามแนวทางมาตรฐาน และถ้ามี implementation แปลก ๆ คนส่วนมากก็มักผลักดันให้มันกลายเป็นมาตรฐาน
std/core ของ Rust เองก็ใหญ่เกินไปสำหรับไมโครคอนโทรลเลอร์อยู่แล้ว จนต้องใช้ลูกเล่นอย่าง weak symbol
stdlib ที่เล็กช่วยเรื่อง การรักษาเสถียรภาพของ API และลดภาระการบำรุงรักษา ได้มาก C++ เจอปัญหานี้มาแล้ว ดังนั้น Rust ควรระมัดระวัง