1 poin oleh GN⁺ 2023-11-14 | 1 komentar | Bagikan ke WhatsApp
  • Saat mengembangkan Basecamp di 37signals, David Heinemeier Hansson membuat sendiri alat yang ia butuhkan dengan Ruby, dan dari situlah titik awal Rails lahir
  • Kolaborasi Jason Fried dan David dimulai dari pertanyaan PHP di blog 37signals pada 2001, lalu berlanjut ke pengembangan backend Basecamp dan ekstraksi Rails
  • Rails berupaya menggabungkan nuansa pengembangan web cepat ala PHP dengan ketelitian desain berorientasi objek ala Java di dalam Ruby, dan bentuk intinya terbentuk dari musim panas 2003 hingga peluncuran Basecamp pada Februari 2004
  • Penyebaran awalnya ditopang oleh produk nyata bernama Basecamp, demo 15 menit, perbandingan dengan Java, serta reputasi 37signals, dan kemudian terbentuk kontributor awal seperti Jamis Buck, Jeremy Kemper, Tobias Lütke, serta Rails core team
  • Setelah dirilis sebagai open source berlisensi MIT, Rails mempertahankan arah bahwa tim kecil pun bisa membangun aplikasi web besar melalui contoh skala besar seperti Shopify dan GitHub serta komunitas yang terus berlanjut selama 20 tahun

Pertemuan 37signals dan David Heinemeier Hansson

  • Pada 1999 atau 2000, Jason Fried menjalankan perusahaan desain web bernama 37signals dan sedang membuat side project basis data buku online bernama Single File dengan PHP
  • Ia belajar PHP dari buku dan sudah cukup jauh, tetapi menemui bagian yang buntu, dan pada masa sebelum ada ruang tanya jawab seperti StackOverflow, ia meminta bantuan secara online
  • David Heinemeier Hansson, yang saat itu berada di industri web di Kopenhagen, Denmark, rutin membaca blog 37signals Signal vs. Noise, lalu menjawab pertanyaan pemrograman Jason pada 2001
  • Jawaban David sangat rinci, dan Jason merasa itu bukan sekadar komentar, melainkan sikap yang benar-benar ingin membantu
  • Setelah itu David melihat seluruh kode Jason dan berkata kira-kira, “Ini kurang bagus, jadi mari mulai lagi,” dan kolaborasi mereka pun dimulai dari titik itu
  • Keduanya sempat bekerja jarak jauh untuk beberapa waktu sebelum akhirnya pertama kali bertemu langsung di dekat Hancock building di Chicago, dan Jason mengenang pakaian serba putih David sangat mencolok

Rails lahir saat membangun Basecamp

  • Saat 37signals mengelola proyek klien lewat email, mereka merasa sulit melacak versi file, pekerjaan yang tersisa, dan status kesiapan rilis, sehingga pada 2003 mereka memutuskan membuat alat manajemen proyek untuk penggunaan internal
  • Saat itu David adalah mahasiswa sekolah bisnis di Kopenhagen sehingga hanya bisa bekerja sekitar 10 jam per minggu, dan sebagai imbalan untuk pengembangan backend Basecamp ia lebih menginginkan laptop Apple dan perlengkapan daripada uang
  • David mengenal Ruby lewat tulisan Martin Fowler dan Dave Thomas, dan tertarik pada bahasa dari Jepang ini karena kodenya terasa seperti membaca pseudocode
  • Sebelum Basecamp, pekerjaan 37signals memakai PHP, tetapi David memutuskan membangun backend Basecamp dengan Ruby dan Jason mempercayai pilihan itu
  • Kombinasi yang David temukan di Rails ada dua
    • Kesesegeraan untuk cepat tayang di web seperti PHP
    • Ketelitian intelektual desain dan pola berorientasi objek yang ia lihat di Java
  • Saat itu belum banyak library atau framework Ruby yang membantu pengembangan web dan akses basis data, sehingga David membuat sendiri alat yang diperlukan untuk membangun Basecamp
  • Dari musim panas 2003 hingga peluncuran Basecamp pada Februari 2004, inti Rails terbentuk, lalu setelah peluncuran Basecamp ia menghaluskan kode dan dokumentasi selama sekitar 6 bulan sebelum merilis Rails pada 2004

Rilis awal, pemasaran yang provokatif, dan pembentukan core team

  • Saat menyiapkan rilis Rails, David menganggap kualitas dokumentasi sama pentingnya dengan kode, dan menilai versi pertama harus cukup bagus
  • Ketika Rails mulai mendapat perhatian, David berusaha menjaga arah framework ini dengan tegas, dan mengatakan “tidak” pada permintaan yang tidak ia inginkan
  • Dalam konferensi Rails awal, David memakai slide bertuliskan “F()c% You” sebagai respons terhadap tuntutan yang tidak pantas dan ancaman kegagalan, menegaskan bahwa open source bukan hubungan komersial dan pengguna tidak bisa mendikte arahnya
  • Pada saat yang sama, Rails tumbuh dengan menerima karya bagus dari ribuan kontributor, jadi David bukan menolak umpan balik atau kontribusi itu sendiri
  • Di International Ruby Conference 2004, David memperkenalkan Rails dengan lebih menekankan alasan ia membuat Rails dan tujuannya memberi pengalaman yang lebih baik bagi programmer daripada sekadar demo kode
  • Selama sekitar satu tahun pertama, hanya David yang langsung melakukan commit kode, sementara patch diterima lewat email dan Wiki
  • Setelah itu, akses ke codebase diberikan kepada orang-orang yang banyak berkontribusi, dan Rails core team pun terbentuk, dengan Jamis Buck, Jeremy Kemper, Marcel Molina, Scott Barron, Sam Stephenson, dan Michael Koziarski sebagai committer awal
  • 37signals kemudian merekrut sebagian anggota Rails core team atau kontributor Rails, dan Jamis Buck menjadi programmer pertama yang dipekerjakan 37signals saat Basecamp sedang bertumbuh

Penyebaran yang didorong produk nyata dan ekosistem

  • Perhatian awal terhadap Rails sangat dipengaruhi oleh reputasi 37signals dan keberadaan Basecamp sebagai produk sukses yang nyata
  • David menilai bahwa untuk memperkenalkan alat berbasis bahasa yang kurang dikenal seperti Ruby, dibutuhkan seruan keras alih-alih perkenalan yang pelan, sehingga ia membuat materi provokatif yang membandingkan implementasi Java dan Rails
  • Penyebaran Rails didorong oleh demo 15 menit, pelanggan berbayar dan pertumbuhan Basecamp, serta kode yang benar-benar berjalan
  • Tobias Lütke, saat hendak memulai perusahaan di Kanada, memakai Rails pada tahap yang sangat awal ketika membangun toko snowboard online, dan proyek itu, Snowdevol, kemudian berkembang menjadi Shopify
  • Tobias mengenang bahwa berkat Rails ia bisa membangun sistem sendirian, dan saat itu ia lebih produktif dibanding tim lain yang membangun toko online
  • Shopify adalah perusahaan yang banyak dipengaruhi Rails, dan hingga kini masih memakai versi Rails terbaru, dengan sebagian besar codebase tetap berada di Ruby dan struktur folder dasarnya sama seperti aplikasi Rails pada umumnya
  • Kritik bahwa Rails “tidak bisa diskalakan” sudah ada sejak awal, tetapi Basecamp sudah melayani pengguna nyata, dan bahkan sebelum muncul contoh seperti Shopify dan GitHub, bantahan bahwa Rails memang skalabel sudah terus bermunculan sejak awal
  • Shopify dipandang sebagai layanan berskala besar yang menangani sekitar 10% e-commerce dunia, dan ada pula pengalaman yang mengatakan tidak tahu lagi skala seperti apa yang tidak bisa ditangani Rails

Rilis, penggabungan Merb, dan arah yang berlanjut selama 20 tahun

  • Sejak awal, merilis Rails sebagai open source adalah pilihan yang terasa wajar, karena David melihat fondasi yang memungkinkan pekerjaannya di web berasal dari alat open source, sehingga toolbox miliknya juga harus dibagikan
  • Pernah ada diskusi untuk menjual Rails atau memonopolinya sebagai keunggulan kompetitif, tetapi David memutuskan bahwa open source berlisensi MIT itu penting dan bahwa ia akan membuat Rails menjadi sangat sukses
  • Alat yang dibuat Jamis Buck untuk deployment Basecamp kemudian dikenal dengan nama Capistrano
  • Alur rilis utama Rails adalah sebagai berikut
    • Rails 1.0 adalah titik awal yang penting
    • Rails 1.2 dinilai sebagai rilis awal yang stabil sekaligus momen ketika ia mulai tampak sebagai web framework yang matang
    • Pada Desember 2007, Rails 2.0 membawa session berbasis cookie dan named scopes
    • Pada Maret 2009, Rails 2.3 dipandang sebagai rilis yang membekali developer web modern dengan alat yang dibutuhkan, dari aplikasi kecil hingga besar
  • Pada era Rails 2.3, jQuery mulai muncul, dan Rails berusaha menciptakan ruang untuk menerima energi dari dunia JavaScript
  • Setelah itu, web framework Ruby Merb muncul sebagai pesaing yang lebih cepat, lebih ringan, dan melakukan lebih sedikit hal, dan para developer Rails melihat ada pelajaran yang bisa diambil dari arah tersebut
  • Rails 3.0 kemudian lahir dari penggabungan dengan Merb, dan itu membutuhkan pekerjaan besar untuk merancang ulang bagian dalam Rails agar lebih bisa dikonfigurasi, disusun ulang, dan dimodularisasi
  • Komunitas Rails berfokus pada membantu orang yang tidak menempuh pendidikan formal ilmu komputer atau pemrograman agar tetap bisa membuat aplikasi web dan membangun karier
  • Rails berusaha menurunkan hambatan untuk memulai, lalu menyediakan jalur agar orang-orang itu bisa menjadi programmer tingkat tinggi di perusahaan atau industri
  • Seperti frasa di situs Rails saat ini, Rails adalah framework yang memungkinkan tim kecil melangkah “dari Hello World hingga IPO”, dan kualitas komunitas maupun codebase-nya dinilai terbaik saat ini

1 komentar

 
GN⁺ 2023-11-14
Komentar Hacker News
  • Saya sangat menikmati dokumenter ini, dan lewat kisah pribadi Toby di Shopify, sudut pandang tentang framework satu orang terasa sangat jelas
    “From Hello World to IPO” juga bagus, dan yang paling berkesan adalah komentar bahwa apa pun aplikasi Rails yang dibuka, entah aplikasi Rails terbesar atau aplikasi baru, strukturnya hampir selalu sama
    Di lingkungan masa kini yang API dan stack frontend-nya saling terikat, konsistensi seperti ini tidak selalu terjamin
    Perubahan terbaru di Rails makin memperkuat fondasi yang sudah kokoh, dan selain Kamal, juga ada upaya mempermudah infrastruktur seperti Solid Cache dan Solid Queue
    Di frontend, Turbo Morphing juga aktif dikembangkan, dan untuk aplikasi mobile ada Turbo Native serta Strada
    Saya sudah upgrade ke 7.1 dan sedang menjalankan aplikasi mobile yang dibuat dengan Turbo Native, jadi saya juga menantikan penggantian cache Redis ke Solid Cache agar sistem lebih sederhana dan cache bisa bertahan lebih lama
    Menyenangkan melihat komunitas Rails masih sangat aktif, dan anggota core team lama maupun sekarang tetap terhubung erat dengan framework ini

    • Kalimat “apa pun aplikasi Rails yang dibuka, entah aplikasi terbesar atau aplikasi baru, strukturnya hampir selalu sama” terdengar sangat keren
      Saya belum pernah memakai Rails, tapi salah satu hal yang paling saya benci dari ekosistem Node.js adalah tidak adanya konvensi yang jelas
      Bahkan saat memakai framework yang sama, strukturnya selalu berbeda dan berantakan; mungkin pengecualiannya hanya Next.js, tapi itu pun lebih dekat ke sisi frontend
    • YJIT di Ruby 3.3 dua kali lebih cepat daripada Ruby 2.5 di RailsBench, dan juga sedang ada upaya memindahkan Ruby Gem berbasis C ke Ruby sehingga JIT bisa menjadi lebih mudah
      Di sekitar Ruby dan Rails juga mulai banyak bermunculan developer tool, jadi semoga ada lebih banyak perubahan bagus di Rails 8.0 dan Ruby 3.4
    • Saya sudah berkutat dengan Rails selama 15 tahun dan bahkan menulis buku tentangnya, tapi saya cuma mengenal Tobi sebagai orang yang membuat banyak hal populer terkait Rails
      Ternyata dia pendiri Shopify dan kekayaannya 5,5 miliar dolar AS, itu cukup lucu
    • Saya sangat setuju bahwa struktur aplikasi Rails hampir sama terlepas dari skalanya
      Developer cenderung benar-benar meremehkan aspek RoR yang satu ini
      Bukan hanya mempermudah onboarding, tapi juga sangat mengurangi bikeshedding
      MVC mungkin bukan yang terbaik untuk semuanya, tapi dalam kebanyakan kasus, itu sudah cukup bagus
    • Struktur Rails adalah pengalaman pertama saya dengan web development sebagai profesi, dan setelah itu standar saya untuk hal-hal lain jadi benar-benar rusak
  • Nanti hari ini saya harus menonton ini
    Saya sudah mencoba banyak framework seperti Laravel, ExpressJS, MeteorJS, Django, Flask, dan masing-masing punya kelebihan serta kekurangan, tapi saya selalu menyerah saat mengikuti tutorial atau mencoba cara saya sendiri
    Tiga hari lalu saya mulai memakai Rails, dan selama akhir pekan saya bisa cepat membuat MVP untuk ditunjukkan ke rekan kerja
    Rails membuat saya fokus pada apa yang harus dilakukan aplikasi, bukan bagaimana cara mengimplementasikannya, dan sekarang saya akhirnya paham kenapa orang-orang sangat menyukainya

    • Saya sudah lama bekerja sebagai developer Rails dan sudah mencoba banyak hal, tapi pada akhirnya saya selalu kembali ke Rails karena alasan yang sama
      Produktivitas di Rails memang sangat tinggi
      Keluhan terbesar saya sejak lama adalah ketika keluar dari jalur konvensi, dokumentasinya kurang atau informasinya sering saling bertentangan
      Menemukan dan memahami “cara yang diberkahi” bisa sangat sulit, tapi untungnya ChatGPT cukup bagus untuk membantu menentukan titik awal di bagian seperti ini
  • Dokumenternya benar-benar luar biasa
    Saya sudah memakai Rails selama beberapa tahun terakhir, dan untuk tim kecil yang membangun produk serta mengimplementasikan logika bisnis dengan pola yang sudah mapan, produktivitasnya sangat tinggi
    Kalau penasaran seperti apa struktur aplikasi Rails yang nyata, saya sarankan melihat codebase Jumpstart. Itu materi yang bagus untuk belajar bagaimana menata strukturnya
    https://jumpstartrails.com/
    Sebagai alternatif, Bullet Train juga cukup bagus, tapi ia menambahkan banyak library kustom yang sulit disebut sebagai “cara Rails”
    https://bullettrain.co/

  • Menurut saya, dokumenter Rails ini dan dokumenter Elixir sama-sama gagal memuat banyak hal
    Durasi mereka terlalu pendek, jadi baru sempat membuka cerita asal-usul lalu langsung selesai, bahkan sebelum mencapai bagian yang benar-benar membangkitkan antusiasme
    Alih-alih menunjukkan kepada komunitas atau orang di luar komunitas betapa keren teknologi-teknologi ini, rasanya lebih seperti menaikkan gengsi para orang yang tampil di dalamnya
    Saya berharap ada dokumenter berdurasi 1 jam 30 menit untuk masing-masing Elixir dan Rails, yang tidak berhenti pada bagian saling memuji, tetapi juga menyorot perjuangan bertahun-tahun dan berbagai cara pemakaiannya di banyak perusahaan
    Dengan kata lain, kalau format seperti Indie Game: The Movie dipakai, hasilnya akan jauh lebih menarik, dan saya ingin lebih banyak dokumenter bagus tentang software

    • Kesan saya cukup berbeda
      Ada banyak potongan kecil sejarah yang sulit ditemukan di tempat lain, seperti betapa uniknya pendekatan David, bagaimana tim Rails terbentuk lewat Toby dan orang-orang lain, dan bagaimana ia menyatu dengan framework-framework lain
      Akan lebih baik kalau durasinya lebih panjang, tapi tetap saja luar biasa bahwa ini bisa dibuat
  • Saya sudah menontonnya, tapi menurut saya dokumenter ini tidak cukup menunjukkan apa yang sudah dicapai Rails
    Ruby on Rails mengubah paradigma pembuatan web application dari pendekatan berbasis file seperti PHP, JSP, dan WebForms menjadi route dan pola MVC, dan sekarang hampir semua web framework yang layak punya pendekatan ini
    Dokumenternya memang tidak membahas bagian itu, tapi tetap menyenangkan untuk ditonton

    • Struts adalah framework Java MVC yang populer di awal 2000-an dan muncul lebih dulu daripada Rails
      Meski begitu, rasanya agak tidak enak menaruh Struts dan Rails dalam kalimat yang sama, karena Rails mencapai jauh lebih banyak hal
    • MVC sudah digunakan jauh sebelum Ruby on Rails muncul, misalnya di framework seperti WebObjects
  • Para tokoh legendaris di era awal Rails membuka jalan bagi cara modern membangun web app
    Bahkan bisa dibilang ada sebelum dan sesudah Rails dalam web development

  • Dari komentar-komentarnya, terdengar seperti Rails mulai sedikit mendapatkan kembali popularitasnya, bukan sekadar dikenal sebagai framework yang membosankan tapi solid

    • Saya rasa saya tidak akan memakainya lagi untuk proyek ke depan, tapi videonya menyenangkan karena rasa nostalgia
      Rails mengingatkan saya pada versi diri saya di masa ketika saya membuat hal-hal yang lebih seru dan liar, dan pada masa berbeda yang cocok dengan perjalanan saya saat itu
  • Hal yang sangat saya hargai dari Rails adalah visi yang kuat, dan fakta bahwa ia tidak berubah menjadi framework raksasa lain yang tambun untuk membuat aplikasi “enterprise-grade”
    Ini framework yang sudah berumur 20 tahun, tapi tidak takut berubah drastis mengikuti zaman, dan dibandingkan yang lain, ia masih terasa seperti punk
    Ini membuat hati saya hangat karena mengingatkan pada kisah saya saat mulai memakai Rails 20 tahun lalu
    https://twitter.com/buger/status/1723040883325460818

  • Dari 2015 sampai 2019 saya bekerja di aplikasi Rails operasional yang sangat besar, dan hasilnya saya jadi mencintai Rails tapi membenci Ruby
    Kalau ada Rails yang berbasis TypeScript atau Go, saya sampai tidak terpikir alasan untuk memakai yang lain sebagai backend web app
    Rails Console adalah salah satu alat peningkat produktivitas terbaik yang pernah saya pakai

    • Saya ingin melihat REPL Go yang bisa melakukan sebanyak yang bisa dilakukan Ruby REPL, tapi secara realistis itu tampak hampir mustahil
      TypeScript mungkin bisa mendekati itu dengan memakai Node REPL yang sudah ada, tapi alasan besar kenapa Rails console begitu berguna pada akhirnya adalah karena Ruby itu sendiri
  • Dokumenter Honeypot benar-benar bagus, sangat saya rekomendasikan