- ไดรเวอร์กราฟิกระดับเคอร์เนลสำหรับ GPU Apple M1/M2 นอกจากมีจุดเด่นว่า พัฒนาบน Rust แล้วยังผ่านความสอดคล้องตามมาตรฐาน OpenGL 4.6 และ Vulkan 1.3 ทำให้รองรับมาตรฐานได้กว้างขึ้น
- Tessellation ซึ่งเป็นหัวใจของ OpenGL 4.0 ทำให้เป็นไปตามมาตรฐานได้ยากด้วยความสามารถของฮาร์ดแวร์ Apple GPU เพียงอย่างเดียว จึงจัดการด้วยการพอร์ต reference tessellator ของ Microsoft ไปเป็น OpenCL C แล้วรันบน GPU
- ในเดโม Vulkan บน M2 Mac, tessellation ที่ใช้ OpenCL ทำได้ 265fps เร็วกว่าการทำแบบซอฟต์แวร์ล้วนที่ต่ำกว่า 1fps มาก แต่ยังไม่ถึงฮาร์ดแวร์ tessellator ที่ทำได้ 820fps
- การรันเกม AAA ต้องปรับสภาพแวดล้อม DirectX·Windows·x86·เพจ 4KB ให้เข้ากับ Apple Silicon ที่อิง Linux·Arm64·เพจ 16KB โดยใช้ทั้งหลายชั้นการแปลงและการตั้งค่า virtual machine ร่วมกัน
- เกมอย่าง Portal, The Witcher 3 และ Cyberpunk 2077 รันได้จริงแล้ว แต่ความต้องการหน่วยความจำและขอบเขตการรองรับ ray tracing ยังคงเป็นข้อจำกัดสำคัญ
ไดรเวอร์ Apple GPU ที่ขยับขึ้นถึง OpenGL 4.6
- ไดรเวอร์กราฟิกระดับเคอร์เนลสำหรับ GPU Apple M1/M2 เขียนด้วย Rust และผ่าน ความสอดคล้องตามมาตรฐาน ของมาตรฐานกราฟิกหลายรายการ
- Alyssa Rosenzweig อัปเดตสถานะไดรเวอร์และเกมที่รองรับได้ในงาน X.Org Developers Conference 2024
- สไลด์การนำเสนอเผยแพร่เป็น วิดีโอ YouTube และ สไลด์
- ใน XDC ปีก่อน ไดรเวอร์ผ่านความสอดคล้องของ OpenGL ES 3.1 และหลังจากนั้นก็มาถึงความสอดคล้องของ OpenGL 4.6
- Tessellation) ที่จำเป็นใน OpenGL 4.0 คือเทคนิคสำหรับเพิ่มหรือลดรายละเอียดของฉากแบบไดนามิก
ข้อจำกัดของฮาร์ดแวร์ tessellator ใน Apple GPU
- Apple GPU มี hardware tessellator แต่ขาดฟังก์ชันที่จำเป็นสำหรับการทำตามมาตรฐาน OpenGL ไดรเวอร์จึงไม่สามารถใช้ตรง ๆ ได้
- ดูเหมือนว่าฮาร์ดแวร์จะไม่รองรับ point mode และ isoline โดยทั้งสองฟังก์ชันนี้สามารถจำลองได้
- ปัญหาใหญ่กว่าคือ transform feedback และ geometry shader
- ฮาร์ดแวร์ไม่รองรับทั้งสองอย่าง
- ไดรเวอร์จำลองสิ่งเหล่านี้ด้วย compute shader
- ความแตกต่างระหว่างอัลกอริทึม tessellation ของ hardware tessellator กับของการจำลองอาจทำให้ invariance ล้มเหลว จึงควรหลีกเลี่ยงชุดผสมนี้
- Apple รองรับ OpenGL 4.1 แต่ไม่ได้มีความสอดคล้องตามมาตรฐาน และฟังก์ชันที่ฮาร์ดแวร์ไม่รองรับจะถูกแทนที่ด้วยซอฟต์แวร์
- Rosenzweig ระบุว่าเธอไม่ได้กำลังทำ implementation ของ Metal จึงจะไม่ไปในแนวทางนั้น
Reference tessellator ที่พอร์ตไปเป็น OpenCL C
- ไดรเวอร์ใช้ reference tessellator ที่ Microsoft เผยแพร่มากว่า 10 ปีก่อน
- เดิมเป็นโค้ดสำหรับแสดงพฤติกรรมที่ผู้ผลิตฮาร์ดแวร์ควร implement เมื่อเริ่มรองรับ tessellation
- เป็นโค้ด C++ ประมาณ 2,000 บรรทัด และ tessellate patch เดียว
- เนื่องจากในไดรเวอร์ GPU ไม่สามารถรัน C++ 2,000 บรรทัดนี้ตรง ๆ ได้ จึงพอร์ตโค้ดนี้ไปเป็น OpenCL C
- OpenCL C แทบเหมือน C สำหรับ CPU ทั่วไป แต่มีข้อจำกัดและส่วนขยายสำหรับ GPU
- เป้าหมายไม่ใช่การทำความเข้าใจโค้ดทั้งหมด แต่คือไม่ทำให้พฤติกรรมเสียระหว่างการพอร์ต
- CPU tessellator ประมวลผลได้ครั้งละหนึ่ง patch เท่านั้น แต่ในฉากอาจมี patch 10,000 รายการ
- ใช้ความขนานขนาดใหญ่ของ GPU ให้หลายเธรดทำ tessellation
- ระหว่างประมวลผลแบบขนาน การจัดสรร output buffer จัดการด้วยคำสั่ง atomic ของ GPU
- เอาต์พุตของ tessellator ต้องถูกวาดเป็นคำสั่ง draw ในรูปแบบ packed data structure ที่ GPU ต้องการ
- โดยทั่วไปในโค้ดไดรเวอร์ภาษา C จะมีฟังก์ชันที่สร้างโดย GenXML tool คอยจัดการส่วนนี้
- เนื่องจาก tessellator อยู่ในรูปโค้ด C ด้วย OpenCL จึงสามารถรวมฟังก์ชันที่สร้างขึ้นเข้าไปในโค้ดที่รันบน GPU ได้
ประสิทธิภาพของ tessellation
- Tessellation ที่ใช้ OpenCL ถูกใช้เพื่อรัน terrain tessellation ของเดโม Vulkan บน M2 Mac
- การเปรียบเทียบประสิทธิภาพมีดังนี้
- terrain tessellation แบบซอฟต์แวร์ล้วน: ต่ำกว่า 1fps
- tessellation ที่ใช้ OpenCL: 265fps
- ตัวเลขที่วัดได้เมื่อเชื่อมต่อ hardware tessellator: 820fps
- Rosenzweig ประเมินว่าประสิทธิภาพของวิธี OpenCL นั้น “ใช้ได้” และมองว่าในเกมจริงมีโอกาสน้อยที่จะกลายเป็นคอขวด
- ประสิทธิภาพของไดรเวอร์ยังมีพื้นที่ให้ปรับปรุงได้อีก
Vulkan 1.3 และ Honeykrisp
- ไดรเวอร์ GPU Honeykrisp M1/M2 ผ่าน ความสอดคล้องตามมาตรฐาน Vulkan 1.3
- จุดเริ่มต้นคือการคัดลอก NVK Vulkan driver for NVIDIA GPUs แล้วนำมาผสานกับไดรเวอร์ OpenGL 4.6
- เริ่มผ่านชุดทดสอบความสอดคล้องได้ภายในประมาณหนึ่งเดือน
- จุดนั้นเกิดขึ้น 6 เดือนก่อนการนำเสนอ
- หลังจากนั้นมีการเพิ่มฟังก์ชันต่อไปนี้
- geometry shader
- tessellation shader
- transform feedback
- shader object
- ไดรเวอร์ปัจจุบันรองรับฟังก์ชันทั้งหมดที่จำเป็นสำหรับ DirectX หลายเวอร์ชัน
ชั้นการแปลงสำหรับรันเกม AAA
- หากต้องการรันเกม AAA บนสภาพแวดล้อม Apple Silicon ต้องจัดการความต่างของหลายสภาพแวดล้อมพร้อมกัน
- สภาพแวดล้อมเป้าหมายของเกม: DirectX, Windows, CPU x86, เพจ 4KB
- ฮาร์ดแวร์เป้าหมายจริง: Apple Silicon ที่อิง Linux, Arm64, เพจ 16KB
- การแปลงจาก DirectX ไป Vulkan และการรันจาก Windows ไป Linux รับหน้าที่โดย DXVK และ Wine ตามลำดับ
- สำหรับการแปลงจาก x86 ไป Arm64 มีตัวเลือกเดิมอย่าง FEX-Emu หรือ Box64
- อุปสรรคใหญ่ที่สุดคือ ความต่างของขนาดเพจ
- FEX-Emu ต้องใช้เพจ 4KB
- Box64 มีแฮ็กที่ใช้เพจ 16KB แต่ใช้กับ Wine ไม่ได้ จึงไม่ช่วยในกรณีนี้
- macOS สามารถใช้เพจ 4KB สำหรับการจำลอง x86 ได้ แต่ต้องอาศัยการรองรับในเคอร์เนลที่แทรกแซงสูงมาก
- Asahi Linux มีแพตช์ราว 1,000 รายการที่มุ่งเข้าสู่ mainline kernel อยู่แล้ว แนวทางเขียนตัวจัดการหน่วยความจำของ Linux ใหม่จึงไม่สมเหตุสมผล
การตั้งค่า VM ด้วย guest kernel 4KB
- Linux ไม่รองรับขนาดเพจต่างชนิดกันระหว่างโปรเซสต่าง ๆ แต่รองรับได้ระหว่างเคอร์เนลต่าง ๆ และจัดการด้วย virtualization
- KVM guest kernel สามารถมีขนาดเพจต่างจาก host kernel ได้
- โครงสร้างที่ใช้คือใส่ FEX-Emu, Wine, DXVK, Honeykrisp, Steam และทั้งเกมลงใน virtual machine ที่รัน guest kernel 4KB
- คาดว่าโอเวอร์เฮดของ CPU จะต่ำด้วย hardware virtualization และภาระจริงอยู่ที่ฝั่งอุปกรณ์ต่อพ่วง
- Honeykrisp ไม่ได้รันผ่าน host kernel แต่รันใน guest ผ่าน virtgpu native contexts
- งานสร้าง GPU command buffer ขั้นสุดท้ายทำใน guest
- แทนที่แต่ละ Vulkan call จะข้ามขอบเขต virtual machine, command buffer ที่เสร็จแล้วจะถูกส่งไปยัง host
- VirGL renderer บน host ส่งต่อสิ่งนี้ไปยัง GPU
- Rosenzweig กล่าวว่าวิธีนี้ไม่ใช่ความเร็วแบบ native 100% แต่ เกิน 90% อย่างแน่นอน
- โอเวอร์เฮดของ CPU และ GPU ทำงานแบบขนานกัน ต้นทุนจึงไม่สะสมทบกัน
เกมที่รันได้จริงและสถานะการเผยแพร่
- การตั้งค่านี้รันเกมหลายเกมได้จริง
- Portal
- Portal 2
- Castle Crashers
- The Witcher 3
- Fallout 4
- Control
- Ghostrunner
- Cyberpunk 2077
- คอมโพเนนต์ที่เกี่ยวข้องถูก เผยแพร่ ในวันที่นำเสนอคือ 10 ตุลาคม
- ผู้ใช้ Fedora Asahi Remix สามารถอัปเดตได้ทันทีเพื่อรับคอมโพเนนต์ดังกล่าว
- ระหว่างการนำเสนอ การเปิด Steam ใช้เวลาพอสมควรเพราะ virtual machine และการจำลอง x86 จากนั้น Control รันบนระบบ M1 MAX ที่ 45fps
ข้อจำกัดด้านหน่วยความจำและ ray tracing
- แม้บน Mac RAM 8GB เกมบางส่วนก็รันได้
- Rosenzweig เล่น Castle Crashers บนระบบ 8GB ระหว่างงานคอนเฟอเรนซ์
- Portal ก็ทำงานบนระบบ 8GB ได้
- เกมระดับสูงมีแนวโน้มสูงว่าจะทำงานได้เฉพาะบนระบบที่มี 16GB ขึ้นไป
- Rosenzweig หวังว่าเมื่อเวลาผ่านไป ทรัพยากรที่ต้องใช้จะลดลง
- การรองรับ ray tracing ไม่ใช่ลำดับความสำคัญสูง
- Control สามารถใช้ฟังก์ชันนี้ได้
- ฮาร์ดแวร์ Apple รองรับ ray tracing ตั้งแต่ M3 เป็นต้นไปเท่านั้น
- ไดรเวอร์ปัจจุบันสำหรับ GPU M1 และ M2
- Rosenzweig มีแผนจะเริ่มงานกับ M3 ในไม่ช้า
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ความทุ่มเทที่จะทำให้การรองรับ M1/M2 สมบูรณ์จนถึงที่สุดนั้นน่านับถือจริงๆ
มีโปรเจกต์มากเกินไปที่ถูกทิ้งทันทีที่ของเล่นใหม่แวววาวอย่าง ray tracing โผล่มา แต่งานแบบนี้แม้จะเจ็บปวดเพราะฮาร์ดแวร์มีเอกสารไม่พอ แต่เมื่อมันทำงานได้ก็ให้ผลตอบแทนคุ้มค่ามาก
ผมก็ซื้อ M1 เพราะโปรเจกต์นี้กับงาน OpenGL+ES ของ Alyssa และบูตแค่ Asahi Linux เท่านั้น
อุปกรณ์แบบนี้ถูกสร้างมาให้อยู่ได้นาน และการสนับสนุนระยะยาวทั้งจาก Apple เองกับชุมชน Linux ก็น่าชื่นชม
เพราะเป็นโอเพนซอร์ส Apple เองก็น่าจะกำลังดูอยู่ และบทความยังพูดถึงงานที่เลี่ยงข้อจำกัดของฟีเจอร์ที่ขาดไปในชิปด้วย
ผมเขียนโค้ดมากว่า 20 ปีแล้ว แต่ทั้งช่วงเวลาที่มีความสุขที่สุดและหดหู่ที่สุดในอาชีพ ล้วนมาจาก โปรเจกต์ฮาร์ดแวร์ ที่ผมเข้าไปร่วมแค่ 4 เดือนพอดี
วิธีของ Alyssa ที่รันทุกอย่างใน virtual machine เพื่อแก้ความต่างของ ขนาดเพจ 4KB กับ 16KB เป็นแฮ็กที่ฉลาด แต่ก็รู้สึกเหมือนเป็นคอขวดด้านประสิทธิภาพที่อาจเกิดขึ้นได้
อยากรู้ว่าวิธีเลี่ยงแบบนี้มีความหมายอย่างไรในระยะยาว
เรามาถึงจุดที่ความซับซ้อนในการอุดช่องว่างของฮาร์ดแวร์กรรมสิทธิ์ซึ่งถูกออกแบบมาให้เป็นระบบนิเวศปิด มีมากกว่าประโยชน์ที่ได้แล้วหรือเปล่า
การที่ Control รันได้ 45fps บน M1 MAX ด้วยไดรเวอร์โอเพนซอร์สเป็นเรื่องน่ายินดี แต่ก็สงสัยว่าชุมชนควรต้องทุ่มทรัพยากรจำนวนมากต่อไปเพื่อเปิดระบบปิดให้มากขึ้น หรือควรผลักดันมาตรฐานฮาร์ดแวร์ที่เปิดกว่านี้แทน
Apple กำลังสร้างอุปสรรคที่ไม่จำเป็นให้กับนักพัฒนาด้วยข้อจำกัดของ GPU ที่ทำให้ฟีเจอร์มาตรฐานอย่าง tessellation shader ทำได้ยาก และด้วยขนาดเพจที่ไม่เป็นมาตรฐาน ระบบนิเวศปิดแบบนี้ไม่เพียงทำให้ผู้ร่วมพัฒนาโอเพนซอร์สลำบาก แต่ยังกดทับนวัตกรรมที่จะเป็นประโยชน์ต่อผู้ใช้ทุกคนด้วย
เห็นได้ชัดว่าสิ่งนี้ค้ำจุนโมเดลธุรกิจแบบปิด และในทางปฏิบัติก็ได้ผลดีมากสำหรับ Apple
พวกเขาสร้างฮาร์ดแวร์ที่ยอดเยี่ยม และแม้ซอฟต์แวร์ช่วงหลังจะค่อนข้างไม่นิ่ง ผู้ใช้ทั่วไปก็มักได้ประสบการณ์ที่ดีโดยรวมจากชุดฮาร์ดแวร์กับซอฟต์แวร์
ดังนั้นการที่ Apple ออกแบบฮาร์ดแวร์แบบทุกวันนี้ไม่ได้หมายความว่ากำลังวาง “อุปสรรคที่ไม่จำเป็น” ให้กับนักพัฒนา แต่เป็นแค่การโฟกัสกับการออกแบบฮาร์ดแวร์ให้ตรงกับความต้องการของตัวเอง
อีกอย่าง ถ้าฮาร์ดแวร์ไม่ได้ยอดเยี่ยมขนาดนี้ ก็คงไม่มีคนสนใจมากขนาดนี้ที่จะเอาไปใช้ในแบบที่ Apple ไม่ได้ตั้งใจ
การไม่สนใจมาตรฐานแล้วสร้างล้อขึ้นมาใหม่ให้ดีกว่า กับการจงใจเบี่ยงออกจากมาตรฐานเพื่อขัดขวางความเข้ากันได้นั้นต่างกันมากทีเดียว
ประเด็นสำคัญคือพวกเขาไม่ใช้ทรัพยากรเพื่อรักษาพฤติกรรมตามมาตรฐาน หรือใช้ทรัพยากรอย่างจริงจังเพื่อเบี่ยงออกจากมาตรฐานกันแน่ และถ้าเป็นอย่างแรก ส่วนตัวผมก็ไม่คิดว่าเป็นเรื่องควรตำหนิ
ภายในระบบนิเวศนี้ สิ่งที่ Apple น่าจะสนใจหลักๆ คือความเข้ากันได้ของแอปเนทีฟกับ ประสบการณ์ AI inference ในระดับใกล้เคียงกัน ซึ่งทั้งสองอย่างก็ดูเหมือนบางครั้งจะถูกแก้ด้วยความพยายามร่วมกัน
นอกเหนือจากนั้น พวกเขาน่าจะชอบล็อกให้มากที่สุดเท่าที่ทำได้ และน่าเสียดายที่ชุมชนมักถูกดึงดูดด้วยความน่าใช้โดยรวมมากกว่า initiative แบบเปิดที่ดี
ก็ทำทั้งสองอย่างได้
ตอนแรกผมกำลังจะบอกว่า Alyssa ควรทำงานที่ Valve เพื่อช่วยให้ Steam รันบน Linux ของ Mac ได้ แต่ดูเหมือนว่าเป็นอย่างนั้นอยู่แล้ว [1]
[1] https://en.wikipedia.org/wiki/Alyssa_Rosenzweig#Career
ทำให้เกิดคำถามที่น่าสนใจมากว่า Valve กำลังวางแผนอะไรตรงนี้
แม้จะยาก แต่การทำให้ Steam/Proton รันบน Mac นั้นสมเหตุสมผลมากสำหรับ Valve และถ้าผู้คนบูต Linux บน Mac เพื่อเล่นเกม Apple ก็คงหงุดหงิดไม่น้อย
งานของ Alyssa R และ Asahi Lina ยอดเยี่ยมมาก
เพียงแต่ว่าถ้าไม่คุ้นกับโค้ดไดรเวอร์ เนื้อหาส่วนใหญ่จะเข้าใจยากจริงๆ และฝั่งฮาร์ดแวร์ก็มีส่วนที่แปลกเฉพาะตัวเยอะมาก จนอยากให้การเขียนโค้ดแบบนี้ทำได้ง่ายกว่านี้มาก
มุกแบบ old-school อย่างชุดแม่มดก็ดูเพลินทีเดียว
เลยสงสัยว่ามีฮาร์ดแวร์ที่เป็นที่รู้จักสำหรับทำสิ่งนี้หรือเปล่า
ลองค้นหาแล้ว แต่หาผลลัพธ์ที่ต้องการได้ยากท่ามกลางบล็อกสแปมเกี่ยวกับ PowerPoint และ AI ของ Google ก็ไม่ช่วยอะไร
สงสัยว่ามีใครอีกไหมที่ประหลาดใจกับข้อเท็จจริงที่ว่าฮาร์ดแวร์ขาดหลายอย่างขนาดนี้ และมีหลายส่วนมากที่ถูก emulation
โดยแท้จริงแล้วแทบทั้งหมดถือเป็น emulation ได้
หนึ่งในเหตุผลที่ผู้ผลิต GPU ไม่ค่อยอยากเปิดซอร์สไดรเวอร์ ก็เพราะส่วนสำคัญของความลับอยู่ในซอฟต์แวร์ไดรเวอร์ที่ทำงานบนสถาปัตยกรรมการคำนวณขนานขนาดใหญ่นั่นเอง
geometry shader ถูกมองอย่างกว้างขวางว่าเป็นความผิดพลาดที่ไม่ควรถูกทำให้เป็นมาตรฐานตั้งแต่แรก และ Metal ก็ไม่เคยรองรับเลย จึงน่าจะโผล่มาแค่ในโค้ด OpenGL เก่าบน macOS เท่านั้น เลยยากที่จะโทษ Apple ที่ไม่รองรับสิ่งนี้ในฮาร์ดแวร์
https://x.com/pointinpolygon/status/1270695113967181827
Alyssa เก่งมาก
ผมจำบทความแรกของเธอเกี่ยวกับงาน GPU ได้ แล้วพอรู้ทีหลังว่าเธออายุแค่ 17 ปี ตอนนั้นรู้สึกเหมือนหัวจะระเบิด
แค่มีใครสักคนทำเรื่องแบบนั้นได้ก็น่าทึ่งแล้ว ยิ่งเป็นวัยรุ่นที่ทำได้ยิ่งช็อกจริง ๆ
ถ้าการนำ OpenGL และ Vulkan รุ่นล่าสุดมาสู่ Apple Silicon ยังไงก็เป็นไปไม่ได้หากไม่มีเลเยอร์อีมูเลชัน ตามทฤษฎีแล้วจะสร้าง Metal API แบบเนทีฟ สำหรับ Linux ได้ไหม
หรือว่า Metal ฝังลึกอยู่ใน macOS SDK เกินไป
MoltenVK เองก็กำลังพยายามแก้ปัญหาแบบเดียวกับที่ Alyssa พูดถึงในงานนำเสนอ [1, คอมเมนต์สุดท้ายในอิชชูเป็นของ Alyssa]
[1] https://github.com/KhronosGroup/MoltenVK/issues/1524
นี่แทบจะเป็นข้อสรุปจากการนำเสนอของ Alyssa Rosenzweig เลย
Apple รู้เอกสารภายในอยู่แล้ว จึงอยู่ในตำแหน่งที่ดีที่สุดในการสร้าง implementation ระดับต่ำที่ดีกว่า
อุปสรรคหลักตอนนี้คือ จุดยืนแบบดื้อดึง ที่ว่าเส้นทางที่รองรับอย่างเป็นทางการมีแค่การพอร์ตไป Metal เท่านั้น
ถ้า Valve งัดวิธีแบบเวทมนตร์เพื่อรันเกม AAA บน Mac ได้โดยไม่ต้องมีการสนับสนุนจาก Apple ก็น่าจะกลายเป็นสถานการณ์ที่น่าสนใจ และอาจทำให้ Apple ต้องทบทวนแนวทางใหม่ ถ้าไม่อยากถูกบีบให้จนมุมบนแพลตฟอร์มของตัวเอง
ก็มี implementation ของ DirectX สำหรับ Linux อยู่ และ Proton ก็ทำงานในแนวนั้น
เพียงแต่ประเด็นคือจะทำ API นั้นเป็นเลเยอร์บน Vulkan, จัดการทั้งหมดฝั่งไคลเอนต์แบบ MoltenVK หรือ dxvk, หรือผสานเข้าไปใน Mesa ให้ลึกกว่านั้น
แบบแรกน่าจะง่ายกว่าแน่นอนสำหรับการเริ่มต้น
พอเห็นบทความชื่อแบบนี้ ผมถูกฝึกให้คาดหวังไปแล้วว่าจะเป็นเนื้อหาแนว “หยุดสนับสนุนแล้วถูก acqui-hire” อะไรทำนองนั้น
Alyssa Rosenzweig สมควรได้ Turing Award
ผมสงสัยลิงก์แบบ /SubscriberLink/ นี้มาตลอด
การแชร์ถือว่าไม่ถูกจริยธรรมหรือเปล่า
ไม่ว่าจะเป็นอีเมลส่วนตัว ข้อความในเมลลิงลิสต์ของโปรเจกต์ หรือบล็อกโพสต์ ล้วนเหมาะสม และบอกว่ายินดีให้แชร์ตราบใดที่ไม่ได้ใช้เป็นวิธีเลี่ยงความพยายามในการหาสมาชิก
แต่ก็ขออย่างสุภาพว่าอย่าเผยแพร่กันมากเกินไป เพราะต้องดูแลไซต์ นักเขียน และบรรณาธิการ ซึ่งแหล่งทุนเท่าที่ผมเข้าใจคือค่าสมาชิกเท่านั้น
ค่าสมาชิก LWN อยู่ในระดับที่จ่ายได้พอสมควร และช่วยสนับสนุนงานรายงานเชิงเทคนิคเชิงลึกที่ดีที่สุดเกี่ยวกับ Linux และหัวข้อที่เกี่ยวข้อง
ผมไม่ได้เกี่ยวข้องกับ LWN แค่เป็นสมาชิกที่พอใจ และคิดว่าความรู้ที่ได้จากบทความของ LWN ก็มีส่วนช่วยให้ผมประสบความสำเร็จในอาชีพด้วย
ก่อนที่ผู้คนจะสมัครสมาชิกได้ ก็ต้องรู้จัก การมีอยู่ของ LWN ก่อน
ดู FAQ ได้: https://lwn.net/op/FAQ.lwn#slinks
paywall ของ LWN มีเอกลักษณ์ตรงที่คอนเทนต์ทั้งหมดจะเปิดให้อ่านฟรีหลังผ่านไปหนึ่งสัปดาห์
ลิงก์สำหรับสมาชิกมีไว้เพื่อกระตุ้นให้สมัครสมาชิกถ้าพอมีศักยภาพ
ผมอาจเข้าใจผิดก็ได้ แต่ฟังดูเหมือนมีการจ่ายเงินเพื่อเปิดเผยคอนเทนต์ที่ก่อนหน้านี้เป็นแบบเสียเงิน อาจเป็นรายบทความ
สงสัยว่ามีใครรู้ไหมว่าจริง ๆ แล้วเป็นแบบนั้นหรือเปล่า