เว็บเฟรมเวิร์กใหม่สำหรับ Ruby ที่มีชื่อว่า Brut ได้เกิดขึ้น โดยวางตำแหน่งตัวเองเป็นจุดกึ่งกลางระหว่าง Sinatra ที่มีน้ำหนักเบาและ Rails ที่มีฟีเจอร์ครบครัน อย่างไรก็ตาม โปรเจกต์นี้ได้จุดประกายการถกเถียงอย่างมากในชุมชน ไม่เพียงแต่เกี่ยวกับคุณสมบัติทางเทคนิคเท่านั้น แต่ยังรวมถึงการเลือกใช้ลิขสิทธิ์ที่ก่อให้เกิดข้อถกเถียงและการตัดสินใจในการออกแบบที่มีจุดยืนชัดเจน
คุณสมบัติหลักของ Brut Framework :
- ไม่มี controllers, verbs หรือ resources - มุ่งเน้นไปที่หน้าเว็บ, ฟอร์ม และตัวจัดการแอคชันเดียว
- มีการติดตั้ง OpenTelemetry instrumentation ในตัว
- ชั้นการเข้าถึงข้อมูลที่ขับเคลื่อนด้วย Sequel
- ใช้ Phlex สำหรับการสร้าง HTML
- รวม RSpec พร้อมกับ custom matchers
- สภาพแวดล้อมการพัฒนาแบบ Docker
- เปิดใช้งาน Content Security Policy โดยค่าเริ่มต้น
- การจัดการเวลาที่รองรับ timezone
ข้อกังวลเรื่องลิขสิทธิ์บดบังคุณสมบัติทางเทคนิค
การถกเถียงที่ร้อนแรงที่สุดมุ่งเน้นไปที่การใช้ลิขสิทธิ์ First, Do No Harm ของ Brut แทนที่จะเป็นลิขสิทธิ์โอเพนซอร์สแบบดั้งเดิม สมาชิกในชุมชนได้แสดงความกังวลอย่างจริงจังเกี่ยวกับการเลือกนี้ โดยชี้ให้เห็นว่าทำให้โปรเจกต์นี้ไม่ใช่โอเพนซอร์สตามคำนิยามอย่างเป็นทางการ และไม่สามารถใช้ร่วมกับลิขสิทธิ์ยอดนิยมอย่าง GPL ได้ การนำไปใช้ในธุรกิจอาจจะถูกจำกัดอย่างมาก เนื่องจากทีมกฎหมายจะต้องประเมินลิขสิทธิ์ที่ไม่คุ้นเคยและสร้างขึ้นเอง
มักจะเป็นสัญญาณของโปรเจกต์ส่วนตัว/งานอดิเรกที่ไม่ควรนำมาใช้จริงจัง
ผู้เขียนเฟรมเวิร์กได้ปกป้องการตัดสินใจเรื่องลิขสิทธิ์ โดยระบุว่าพวกเขาเลือกลิขสิทธิ์ที่ดีที่สุดเพื่อสื่อสารความต้องการของตน และรู้สึกสบายใจหากธุรกิจกึ่งจริงจังไม่ต้องการใช้ซอฟต์แวร์นี้ การตอบสนองนี้ได้แบ่งแยกชุมชนระหว่างผู้ที่ชื่นชมจุดยืนด้านจริยธรรมและผู้ที่มองว่าไม่เป็นประโยชน์สำหรับการนำไปใช้ในโลกแห่งความเป็นจริง
ปัญหาด้านการออกใบอนุญาต:
- ใช้ใบอนุญาต "First, Do No Harm" แทนใบอนุญาตโอเพนซอร์สแบบดั้งเดิม
- ไม่เข้ากันได้กับ GPL และใบอนุญาต copyleft ที่คล้ายกัน
- ไม่ใช่ "โอเพนซอร์ส" อย่างเป็นทางการตามคำนิยามมาตรฐาน
- อาจจำกัดการนำไปใช้ในธุรกิจเนื่องจากข้อกำหนดทางกฎหมายที่ไม่คุ้นเคย
การเลือกใช้เฟรมเวิร์กทดสอบจุดประกายการถกเถียงทางเทคนิค
นอกเหนือจากเรื่องลิขสิทธิ์แล้ว นักพัฒนาได้มีส่วนร่วมในการถกเถียงอย่างกระตือรือร้นเกี่ยวกับการใช้ RSpec แบบบังคับของ Brut เฟรมเวิร์กนี้ใช้แนวทางที่มีจุดยืนชัดเจน โดยกำหนดให้ใช้ RSpec แทนที่จะเป็น Minitest ที่มีมาพร้อมกับ Ruby ผู้วิจารณ์โต้แย้งว่า Minitest สอดคล้องกับปรัชญาของ Brut ในเรื่องความเรียบง่ายและการหลีกเลี่ยงการพึ่งพาที่ไม่จำเป็นมากกว่า ในขณะที่ผู้สนับสนุนชื่นชมไวยากรณ์ที่เข้าใจง่ายกว่าและความสามารถในการจำลองที่แข็งแกร่งของ RSpec
ผู้เขียนได้อธิบายเหตุผลของตน โดยอ้างถึงระบบการจำลองที่เหนือกว่าของ RSpec และความสามารถในการสร้าง custom matcher เป็นปัจจัยสำคัญ อย่างไรก็ตาม นักพัฒนาที่มีประสบการณ์บางคนได้ตั้งคำถามว่าการจำลองอย่างกว้างขวางมีความจำเป็นหรือไม่เมื่อทำงานกับ plain Ruby objects โดยแนะนำว่าแนวทางการทดสอบที่เรียบง่ายกว่าอาจจะเหมาะสมกว่า
ทางเลือกจากชุมชนที่ได้รับการกล่าวถึง:
- Roda: ระบบที่ใช้ plugin พร้อม routing tree แนะนำเป็นตัวเลือกระดับกลาง
- Sinatra: กล่าวถึงเป็นตัวเลือกระดับต่ำ/พื้นฐาน
- Rails: มีฟีเจอร์ครบครันแต่ถูกวิจารณ์ว่ามี boilerplate มากเกินไป
- Minitest: แนะนำเป็นทางเลือกแทนข้อกำหนดบังคับของ RSpec
ปรัชญาเฟรมเวิร์กพบกับข้อกังวลเชิงปฏิบัติ
ปรัชญาการออกแบบของ Brut เน้นย้ำหน้าเว็บและฟอร์มมากกว่าคอนโทรลเลอร์ MVC แบบดั้งเดิม ซึ่งได้รับการตอบสนองจากนักพัฒนาที่ชอบโมเดลทางความคิดที่เรียบง่ายกว่า เฟรมเวิร์กสัญญาว่าจะขจัดความหงุดหงิดทั่วไปของ Rails เช่น การตัดสินใจเรื่องสถาปัตยกรรมที่ไม่มีที่สิ้นสุดและการถกเถียงเรื่องการกำหนดเส้นทางที่ซับซ้อน อย่างไรก็ตาม นักพัฒนาที่มีประสบการณ์ได้ตั้งคำถามว่าแนวทางนี้ขยายขนาดได้จริงหรือไม่นอกเหนือจากโปรเจกต์ส่วนตัว
สมาชิกในชุมชนได้แสดงทั้งความตื่นเต้นเกี่ยวกับศักยภาพของเฟรมเวิร์กในการนำความสนุกกลับมาสู่การพัฒนาเว็บ และความสงสัยเกี่ยวกับความยั่งยืนระยะยาวสำหรับแอปพลิเคชันธุรกิจ การถกเถียงสะท้อนความตึงเครียดที่กว้างขึ้นในชุมชน Ruby ระหว่างนวัตกรรมและแบบแผนที่ก่อตั้งขึ้น
การถกเถียงเผยให้เห็นชุมชนที่กำลังต่อสู้กับคำถามพื้นฐานเกี่ยวกับการออกแบบเฟรมเวิร์ก จริยธรรมการออกใบอนุญาต และความสมดุลระหว่างความสุขของนักพัฒนาและการปฏิบัติทางธุรกิจ แม้ว่า Brut อาจไม่ประสบความสำเร็จในการนำไปใช้อย่างแพร่หลายเนื่องจากข้อจำกัดด้านลิขสิทธิ์ แต่ก็ได้จุดประกายการสนทนาที่สำคัญเกี่ยวกับทิศทางในอนาคตของการพัฒนาเว็บ Ruby ได้สำเร็จ
อ้างอิง: Brut: A New Web Framework for Ruby