5 poin oleh GN⁺ 2025-07-31 | 3 komentar | Bagikan ke WhatsApp
  • Untuk ekosistem Ruby, kerangka kerja web sederhana dan kuat berbasis "abstraksi rendah, low-ceremony", yang menyediakan struktur yang berfokus pada halaman, form, dan aksi tunggal tanpa konsep controller dan sumber daya REST
  • Server-rendered HTML, penulisan JS/CSS secara langsung, integrasi OpenTelemetry, Sequel·OptionParser, dan alat Ruby modern sudah terintegrasi, membuat instalasi serta pengembangan bisa dilakukan dalam hitungan menit
  • Struktur berbasis kelas, manajemen sesi, form, dan parameter berbasis tipe nyata, serta minimnya penggunaan dynamic method dan hash untuk mengarah pada kode yang jelas dan dokumentasi otomatis
  • Pemanfaatan platform web modern: integrasi validasi server-klien, BrutJS (Web Components), hash dan bundel CSS lewat esbuild, serta penguatan kebijakan keamanan dan desain database dasar
  • Minimisasi YAML, konfigurasi berbasis Ruby/Hash dengan penamaan dan pemisahan peran yang jelas, dengan tujuan memanfaatkan Ruby dan teknologi browser secara menyenangkan tanpa memaksakan abstraksi atau pola yang tidak perlu

Fitur utama kerangka kerja Brut

Struktur yang benar-benar baru – berfokus halaman tanpa controller

  • Dibangun dengan kelas halaman, form, dan handler aksi tunggal berbasis kelas sebagai pengganti controller, sumber daya REST, dan route action
  • HTML dibuat langsung di server, JS/CSS dapat ditulis sesuka hati
  • Contoh: halaman penampil waktu didefinisikan langsung sebagai TimePage < AppPage

Pemanfaatan aktif platform web modern

  • UX form dengan validasi server-klien yang terintegrasi
  • Dukungan untuk perluasan bertahap HTML dengan BrutJS (pustaka Web Components)
  • Aplikasi esbuild untuk bundel dan hashing CSS, diproses ringkas tanpa PostCSS atau SASS

Produktivitas pengembangan dan fondasi bawaan

  • Instrumentasi berbasis OpenTelemetry, akses data berbasis Sequel, otomatisasi baris perintah berbasis OptionParser
  • Kebijakan keamanan dasar, nilai default kolom DB/kunci asing, indeks, waktu yang selalu timezone-aware, dan lokalisasi yang sederhana
  • Pengujian RSpec, pembuatan data dengan Faker/FactoryBot, generasi HTML dengan Phlex

Eliminasi YAML, struktur konfigurasi yang jelas

  • I18n berbasis Ruby Hash, konfigurasi dinamis dikelola lewat dotenv (hampir tidak ada penggunaan YAML)
  • Hanya docker-compose yang menggunakan YAML secara eksklusif

Tidak ada pemaksaan abstraksi atau pola yang tidak perlu

  • Penamaan dan struktur yang jelas (contoh: WidgetsPage diakses lewat /widgets)
  • Lapisan data (DB::Widget) dan lapisan domain (Widget) dapat dipisahkan sepenuhnya
  • Tidak ada konsep controller, logika bisnis dapat diimplementasikan sesuai kebutuhan
  • Tanpa pemaksaan pola fungsional kompleks, monad, Proc, dan seterusnya

Pengalaman pengembangan dan fleksibilitas

  • Alat utama ekosistem Ruby modern seperti RSpec sudah tersedia secara bawaan
  • Pemanfaatan aktif library utama seperti Phlex (HTML), Faker/FactoryBot, Sequel, OpenTelemetry
  • Berfokus pada “keseruan” Ruby dan teknologi browser, keluar dari boilerplate, konfigurasi, dan pengambilan keputusan yang berulang

Mengapa Brut?

  • Alih-alih setup berulang pada framework lama seperti Rails, perdebatan desain dan struktur yang tiada henti, serta fleksibilitas yang tidak perlu, Brut mengejar kesenangan dari kode itu sendiri
  • Berfokus pada produktivitas dan kejernihan sebagai kerangka kerja aplikasi web berbasis Ruby yang memungkinkan Anda membangun, mengembangkan, dan deploy dengan cepat

Memulai dan roadmap ke depan

  • Dukungan image Docker resmi Brut serta pembuatan dan eksekusi aplikasi cepat berbasis perintah
  • Menyediakan contoh aplikasi nyata seperti ADRs.cloud
  • Rencana pembaruan versi 1.0 dan roadmap resmi akan terus hadir

3 komentar

 
jhk0530 2025-07-31

https://naildrivin5.com/blog/2025/…

Sepertinya perlu diperbaiki ke tautan ini

 
colus001 2025-07-31

Sepertinya tautannya salah terpasang.

 
GN⁺ 2025-07-31
Komentar Hacker News
  • Saya suka pendekatan yang berfokus pada forms dan pages, saya juga memakai pendekatan seperti ini di aplikasi saya, semua interaksi digerakkan oleh Forms dan Links, semua peningkatan yang dilakukan dengan JavaScript pada dasarnya hanya sebatas mengklik form yang sudah ada sebelumnya (termasuk yang tersembunyi), saya selalu bisa memeriksa HTML secara langsung untuk mengetahui dengan jelas route mana yang benar-benar menangani interaksi, menurut saya controllers terlalu sering dipakai berlebihan, pada praktiknya forms dan models (backend), serta views (Pages) saja sudah cukup, banyak validasi atau prosedur berulang di controller juga bisa ditangani framework dengan cara yang lebih rapi

    • Saya penasaran kenapa form disimulasikan lewat event klik, apa bedanya dengan memanggil submit() secara langsung
  • Saya suka penjelasan bahwa kita tidak perlu benar-benar memahami konsep rumit seperti monad, algebraic data types, currying, atau memproses semuanya sebagai Proc, kalau ingin memakai functor dalam business logic juga tetap bisa dipilih sesuka hati, saya suka fleksibilitas seperti ini sehingga terasa ingin mencobanya untuk side project bersama beberapa rekan ahli

  • Framework ini tampaknya bisa menjadi titik tengah yang sangat bagus antara kesederhanaan Sinatra dan kelengkapan Rails, saya selama ini memakai Sinatra untuk aplikasi sederhana dan Rails saat dibutuhkan, tetapi untuk aplikasi yang tidak rumit Rails justru terasa membebani, jadi saya antusias ingin mencoba sesuatu yang baru

    • Sebagai opsi pembanding, ada juga Roda, itu sangat optimal untuk proyek kecil dan skalanya juga bagus, berkat sistem plugin perluasan fiturnya mudah, dan routing tree-nya juga mudah ditangani

    • Buat saya, hanami adalah titik tengah terbaik, tetapi saya akan terus mengamati perkembangan bruts ke depannya

  • Saya sangat menyukai buku David Sustainable Rails, dan itu selalu saya rekomendasikan untuk hal-hal terkait Rails, pendekatan framework ini terasa mengesankan, akan sangat menarik jika salah satu framework alternatif kecil seperti ini mengadopsi Sorbet secara penuh dan memakainya untuk hal seperti form validation, tentu ini bisa bertentangan dengan pendekatan gradual typing, tetapi sebagai eksperimen rasanya akan menyenangkan

    • David bukan hanya developer yang sangat bertalenta, tetapi juga pembicara yang sangat bagus, saya juga merekomendasikan ceramah videonya yang sejalan dengan tema bukunya: https://www.youtube.com/watch?v=CRboMkFdZfg

    • Sorbet memang bagus, tetapi untuk pemaksaan struktur dan validasi data (data validation) saya pribadi lebih menyukai ekosistem dry-rb

  • Saya paham framework ini memakai lisensi yang tidak biasa, tetapi saya penasaran apakah ini berarti kita tidak bisa melihat source code-nya

  • Melihat proyek ini mengingatkan saya pada framework lama Camping, hanya saja bedanya tidak ada dynamic parent class constructor

  • Situs resmi Brut (https://brutrb.com/overview.html) juga punya banyak hal menarik

  • Saya mencoba login di situs contoh, tetapi langsung menemui error setelah autentikasi github

    • Saya penulisnya, saat ini login di situs contoh memang diblokir untuk mencegah penyalahgunaan, saya mendadak memutuskan untuk merilisnya hari ini jadi belum siap mengizinkan siapa pun login, Anda bisa menjalankannya secara lokal atau menelusuri halaman dan mengklik tautan di https://brutrb.com/adrs.html
  • Saya belum memakai Ruby, tetapi jadi tertarik dengan proyek ini dan memberi Star, proyek ini mungkin bisa menjadi pemicu saya benar-benar mencoba Ruby

  • Saya terutama suka pemilihan Phlex, saya pribadi penasaran apakah framework ini juga akan cocok dengan library js Datastar serta penggunaan SSE (server-sent events) di library itu, terima kasih