18 คะแนน โดย GN⁺ 2025-02-25 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

ปรัชญา(Philosophy)

  • เราเป็นชุมชนที่พัฒนาซอฟต์แวร์คุณภาพสูงอย่าง dwm, dmenu, st โดยยึดถือ ความเรียบง่าย, ความชัดเจน, ความประหยัด (Simplicity, Clarity, Frugality) เป็นค่านิยมหลัก
  • เราคัดค้าน สภาพความเป็นจริงที่ซอฟต์แวร์ซับซ้อนเกินความจำเป็น มีข้อผิดพลาดมาก และทำงานช้า แพร่หลายไปทั่วอุตสาหกรรมไอที
  • โครงการของเรามุ่งหมาย สวนกระแสนี้ ด้วยการทำให้ทุกอย่างเรียบง่าย คงความมินิมอล และใช้งานได้ง่าย
  • โครงการของเรามีกลุ่มเป้าหมายเป็น ผู้ใช้คอมพิวเตอร์ที่มีทักษะและผู้เชี่ยวชาญ
    • เราเห็นว่าซอฟต์แวร์เชิงพาณิชย์ส่วนใหญ่และโครงการโอเพนซอร์สจำนวนมาก ถูกพัฒนาสำหรับผู้ใช้ทั่วไปและผู้ที่ไม่ใช่ผู้เชี่ยวชาญ จนผู้ใช้ที่มีทักษะถูกมองข้าม
    • ในทางกลับกัน เราเชื่อว่า ตลาดของผู้ใช้ที่มีทักษะกำลังเติบโตอย่างต่อเนื่อง และผู้ใช้ระดับสูงสามารถค้นหาโซลูชันที่เหมาะที่สุดกับวิธีการทำงานของตนเองได้
  • การออกแบบซอฟต์แวร์ที่เรียบง่ายและสง่างามนั้นยากกว่ามาก
    • แต่เพื่อให้ได้มาซึ่งความน่าเชื่อถือและการบำรุงรักษาที่ดี ก็จำเป็นต้องยอมจ่ายต้นทุนนี้
    • หากคงไว้ซึ่ง แนวมินิมอล (minimalism) ก็จะมี เป้าหมายที่สมเหตุสมผลและบรรลุได้จริง
    • เรามุ่งมั่นรักษาความมินิมอลและความชัดเจน

แถลงการณ์(Manifest)

  • นักพัฒนาจำนวนมาก เข้าใจผิดว่าการเขียนโค้ดให้ยาวคือความสำเร็จ
    • แต่การมีโค้ดจำนวนมากไม่ได้หมายความว่าคุณภาพของซอฟต์แวร์จะดีขึ้นเสมอไป
    • ยิ่งเดินหน้าต่อไปก็เหมือนทักษะจะยิ่งเพิ่มขึ้น แต่แท้จริงแล้วเป็นเพียงภาพลวงตา
  • นักพัฒนาจำนวนมาก ไม่ใส่ใจคุณภาพของโค้ด และพอใจกับแค่สิ่งที่ทำงานได้เหมือนจะแก้ปัญหาได้
    • หากแนวทางนี้ดำเนินต่อไป เมื่อเวลาผ่านไปก็จะเหลือเพียง โค้ดจำนวนมหาศาล โครงสร้างโค้ดที่พังยับเยิน และการออกแบบระบบที่เต็มไปด้วยข้อบกพร่อง
    • นี่เกิดจากการขาดความชัดเจนเชิงแนวคิดและความสมบูรณ์ในกระบวนการพัฒนา
  • ความซับซ้อนของโค้ดคือสาเหตุรากฐานที่ก่อให้เกิดซอฟต์แวร์ที่ไม่มีประสิทธิภาพและขาดความสอดคล้อง
    • โค้ดที่ซับซ้อนทำให้เกิดประสิทธิภาพตกต่ำ การสิ้นเปลืองทรัพยากร และช่องโหว่ด้านความปลอดภัย
    • ทางออกเดียวคือทิ้งทั้งโปรเจกต์แล้วเขียนใหม่ตั้งแต่ต้น
  • ปัญหาคือแทบไม่มีการเขียนโค้ดใหม่ที่มีคุณภาพสูงเกิดขึ้นเลย
    • นักพัฒนาหลายคนภูมิใจกับปริมาณโค้ด และเข้าใจผิดว่าตนเข้าใจความซับซ้อนดีแล้ว จึงคิดว่าไม่จำเป็นต้องเขียนใหม่
    • พวกเขาคิดว่าตนเองเป็นอัจฉริยะ และเข้าใจผิดว่าซอฟต์แวร์ที่ซับซ้อนคือเป้าหมายในอุดมคติ
  • ไอเดียที่ยอดเยี่ยมคือความเรียบง่าย ซอฟต์แวร์ที่ยอดเยี่ยมก็เรียบง่ายเช่นกัน
    • ความเรียบง่ายคือแก่นของปรัชญา Unix
    • ยิ่งลบบรรทัดโค้ดออกได้มากเท่าไร ก็ยิ่งหมายถึงความก้าวหน้าที่มากขึ้น และยิ่งโค้ดน้อยลง นักพัฒนาก็ยิ่งเชี่ยวชาญขึ้น ซอฟต์แวร์ก็ยิ่งดีขึ้น

2 ความคิดเห็น

 
aer0700 2025-02-25

เป็นแถลงการณ์ที่เต็มไปด้วยพลังจริง ๆ เลย 555 เท่มาก

 
GN⁺ 2025-02-25
ความเห็นจาก Hacker News
  • FAQ ของ Stali Linux จาก Suckless มีอิทธิพลกับผมมาก พวกเขาสร้าง userspace ที่ลิงก์แบบสแตติกทั้งหมดสำหรับ Linux

    • ก่อนหน้านี้ผมมองแนวทาง "ใช้ shared library สำหรับทุกอย่าง" ของ Linux เป็นเรื่องปกติ
    • ตอนทำเครื่องมือ CLI เล็ก ๆ ผมจะทำแพ็กเกจแจกจ่ายหรือใช้ tarball เพื่อตั้งค่าไลบรารี
    • แล้วก็ได้ตระหนักว่าวิธีแบบนั้นไม่จำเป็นเสมอไป
    • หลังจากนั้นผมก็ใช้ static linking ให้มากที่สุดเท่าที่ทำได้ และถ้าไม่ได้ก็ใช้ AppImage
    • dynamic linking ก็ยังจำเป็น แต่ผมคิดว่าโดยพื้นฐานแล้วการแจกจ่ายซอฟต์แวร์ไม่จำเป็นต้องซับซ้อน
  • ขอบคุณ dwm กับ dmenu ที่ทำให้เดสก์ท็อปของผมแทบไม่เปลี่ยนไปเลยตลอด 10 ปีที่ผ่านมา ผมชอบความเสถียรที่ความมินิมอลมอบให้

  • ผมไม่เข้าใจว่าทำไมถึงบอกว่าไม่ควรใช้การประกาศตัวแปรเริ่มต้นในลูป for ทั้งที่ variadic macro กลับโอเค แต่ for(int i = 0...) กลับถูกมองว่าซับซ้อนเกินไป

  • ผมพอรับแนวคิดมินิมอลได้ แต่ไม่ได้หมายความว่าทุกอย่างต้องเป็นแบบนั้น

  • ปรัชญาการเขียนโค้ดของ Suckless นั้นงดงาม อยากให้ซอฟต์แวร์ทั้งหมดถูกเขียนด้วยแนวคิดแบบนี้ แต่ window manager กับ X-menu ไม่ใช่ตัวอย่างที่ดีที่สุด

  • ดราม่าในคอมมูนิตี้เป็นเรื่องไร้สาระ ผมใช้เครื่องมือเหล่านี้เพราะชอบปรัชญาซอฟต์แวร์ของมัน ไม่ได้สนใจความเชื่อส่วนตัวหรือแนวทางการเมืองของผู้เขียน

  • หลังจากลองประเมินเทอร์มินัลหลายตัว สุดท้ายผมก็กลับมาใช้ st fork ใช้มาหลายปีแล้ว และมันเสถียรกับแทบไม่มีบั๊ก

  • ปรัชญานี้อาจไม่สมบูรณ์แบบ แต่เป็นแนวทางที่ใกล้เคียงที่สุดในการสร้างซอฟต์แวร์ที่เชื่อถือได้ การควบคุมไม่ให้ความซับซ้อนบานปลายคือเรื่องที่ยากที่สุดและสำคัญที่สุด

  • surf เป็นเว็บเบราว์เซอร์แบบเรียบง่ายที่สร้างบน WebKit2/GTK+ มันแสดงเว็บไซต์และตามลิงก์ได้

  • dwm ปรับแต่งโดยการแก้ซอร์สโค้ด ดังนั้นการทำแพ็กเกจไบนารีจึงไม่มีความหมาย ฐานผู้ใช้มีขนาดเล็กและค่อนข้างเอลิท

  • อยากได้ซอฟต์แวร์แบบ Suckless แต่เป็น asynchronous และทำได้ทุกอย่าง กำลังมองหาแอปที่ทำงานในลักษณะที่หลายแอปแบบ single-threaded ร่วมมือกัน

  • ดีแล้วที่พวกเขามีอยู่ และผมก็ซาบซึ้งกับสิ่งที่พวกเขาทำ แต่ผมชอบซอฟต์แวร์ที่มีความไม่สะดวกอยู่บ้าง การตั้งค่าของ BSPWM กำลังพอดี แต่การต้องคอมไพล์โค้ด C ใหม่ถือว่าเกินไป