Phim tài liệu về Ruby on Rails [Video]
(youtube.com)- Trong quá trình phát triển Basecamp của 37signals, David Heinemeier Hansson đã tự tay xây dựng bằng Ruby những công cụ mình cần, tạo nên điểm khởi đầu của Rails
- Sự hợp tác giữa Jason Fried và David bắt đầu từ một câu hỏi về PHP trên blog của 37signals vào năm 2001, rồi dẫn tới việc phát triển backend cho Basecamp và tách Rails ra
- Rails cố gắng kết hợp cảm giác phát triển web nhanh của PHP với sự chặt chẽ trong thiết kế hướng đối tượng kiểu Java bên trong Ruby; hình dạng cốt lõi của nó được hình thành từ mùa hè 2003 đến khi Basecamp ra mắt vào tháng 2/2004
- Sự lan tỏa ban đầu được thúc đẩy bởi sản phẩm thực tế Basecamp, bản demo 15 phút, các so sánh với Java, danh tiếng của 37signals, và sự hình thành của những contributor đầu tiên như Jamis Buck, Jeremy Kemper, Tobias Lütke cùng Rails core team
- Sau khi được công bố dưới dạng mã nguồn mở giấy phép MIT, Rails tiếp tục giữ hướng đi rằng các nhóm nhỏ cũng có thể xây dựng ứng dụng web lớn, thông qua những trường hợp quy mô lớn như Shopify và GitHub cùng cộng đồng kéo dài 20 năm
Cuộc gặp giữa 37signals và David Heinemeier Hansson
- Năm 1999 hoặc 2000, Jason Fried đang điều hành một công ty thiết kế web tên là 37signals và làm một side project cơ sở dữ liệu sách trực tuyến tên Single File bằng PHP
- Anh học PHP qua sách và đã làm được khá nhiều, nhưng gặp chỗ bị kẹt; vào thời chưa có những nơi hỏi đáp như StackOverflow, anh lên mạng nhờ giúp đỡ
- David Heinemeier Hansson, khi đó làm trong ngành web ở Copenhagen, Đan Mạch, vẫn thường xuyên đọc blog Signal vs. Noise của 37signals và đã trả lời câu hỏi lập trình của Jason vào năm 2001
- Câu trả lời của David rất chi tiết, và Jason cảm nhận được đó không chỉ là một bình luận đơn thuần mà là thái độ thật sự muốn giúp
- Sau đó David xem toàn bộ mã của Jason và nói kiểu như “cái này không ổn lắm, hãy bắt đầu lại”, và sự hợp tác của hai người bắt đầu từ điểm đó
- Hai người làm việc từ xa một thời gian rồi lần đầu gặp trực tiếp gần Hancock building ở Chicago; Jason nhớ lại rằng bộ đồ màu trắng của David rất nổi bật
Rails ra đời khi xây dựng Basecamp
- 37signals quản lý các dự án khách hàng qua email và thấy khó theo dõi phiên bản file, các việc còn lại và trạng thái sẵn sàng phát hành, nên vào năm 2003 họ quyết định xây dựng một công cụ quản lý dự án dùng nội bộ
- Khi đó David là sinh viên trường kinh doanh ở Copenhagen nên chỉ có thể làm khoảng 10 giờ mỗi tuần, và để được trả công phát triển backend cho Basecamp, anh muốn laptop Apple và thiết bị hơn là tiền
- David biết đến Ruby qua các bài viết của Martin Fowler và Dave Thomas, rồi bị cuốn hút bởi việc mã của ngôn ngữ đến từ Nhật Bản này đọc lên giống như mã giả
- Các công việc trước Basecamp của 37signals dùng PHP, nhưng David quyết định xây dựng backend Basecamp bằng Ruby và Jason tin tưởng lựa chọn đó
- Tổ hợp mà David tìm kiếm ở Rails gồm hai điều
- Tính tức thời để đưa lên web nhanh chóng như PHP
- Sự chặt chẽ về mặt trí tuệ trong thiết kế và pattern hướng đối tượng như thấy ở Java
- Khi đó Ruby chưa có nhiều thư viện hay framework hỗ trợ phát triển web và truy cập cơ sở dữ liệu, nên David đã tự xây dựng các công cụ cần thiết để tạo Basecamp
- Từ mùa hè 2003 đến khi Basecamp ra mắt vào tháng 2/2004, phần cốt lõi của Rails được hình thành; sau khi Basecamp ra mắt, David dành khoảng 6 tháng chỉnh sửa mã và tài liệu rồi công bố Rails vào năm 2004
Công bố ban đầu, marketing gây tranh luận và hình thành core team
- Khi chuẩn bị công bố Rails, David coi trọng không chỉ mã mà cả chất lượng tài liệu, và cho rằng phiên bản đầu tiên phải đủ tốt
- Khi Rails bắt đầu được chú ý, David cố gắng bảo vệ mạnh mẽ định hướng của framework và nói “không” với những yêu cầu anh không muốn
- Tại một hội nghị Rails thời kỳ đầu, để phản ứng trước các yêu cầu vô lý và những lời đe dọa thất bại, David đã dùng một slide ghi “F()c% You”, thể hiện lập trường rằng mã nguồn mở không phải quan hệ thương mại và người dùng không thể chỉ đạo hướng đi
- Đồng thời, Rails phát triển bằng cách tiếp nhận những đóng góp tốt từ hàng nghìn contributor; David không hề từ chối bản thân việc phản hồi và đóng góp
- Tại International Ruby Conference năm 2004, David giới thiệu Rails và tập trung vào lý do tạo ra Rails cùng mục tiêu mang lại trải nghiệm tốt hơn cho lập trình viên, hơn là trình diễn mã
- Trong khoảng 1 năm đầu, chỉ David trực tiếp commit mã, còn patch được nhận qua email, Wiki và các kênh khác
- Sau đó, anh cấp quyền truy cập codebase cho những người đóng góp nhiều, từ đó Rails core team được tạo ra; Jamis Buck, Jeremy Kemper, Marcel Molina, Scott Barron, Sam Stephenson, Michael Koziarski và những người khác tham gia với tư cách committer ban đầu
- 37signals đã tuyển một số người trong Rails core team hoặc các contributor của Rails, và Jamis Buck trở thành lập trình viên đầu tiên mà 37signals tuyển khi Basecamp đang tăng trưởng
Sự lan tỏa do sản phẩm thực tế và hệ sinh thái tạo nên
- Danh tiếng của 37signals và sản phẩm thành công thực tế Basecamp đóng vai trò lớn trong việc Rails được chú ý ban đầu
- David cho rằng để giới thiệu một công cụ dựa trên ngôn ngữ ít được biết đến như Ruby, cần một tiếng hô mạnh mẽ hơn là lời giới thiệu lặng lẽ, nên anh tạo các tài liệu gây tranh luận so sánh triển khai bằng Java với triển khai bằng Rails
- Sự lan tỏa của Rails là kết quả kết hợp của bản demo 15 phút, khách hàng trả phí và sự tăng trưởng của Basecamp, cùng mã thực sự chạy được
- Tobias Lütke dùng Rails từ rất sớm khi xây dựng một cửa hàng snowboard trực tuyến trong lúc chuẩn bị khởi nghiệp ở Canada, và dự án Snowdevol đó về sau dẫn tới Shopify
- Tobias nhớ lại rằng nhờ Rails, anh có thể một mình xây dựng hệ thống và khi đó anh làm việc hiệu quả hơn các nhóm xây dựng cửa hàng trực tuyến khác
- Shopify là một công ty chịu ảnh hưởng từ Rails; đến nay họ vẫn dùng phiên bản Rails mới nhất, phần lớn codebase là Ruby và cấu trúc thư mục mặc định cũng giống một ứng dụng Rails thông thường
- Những phê phán rằng Rails “không scale được” đã có từ những ngày đầu, nhưng Basecamp hỗ trợ người dùng thực tế, và ngay cả trước khi có các ví dụ như Shopify, GitHub, vẫn có những phản biện rằng Rails đã có khả năng scale ngay từ đầu
- Shopify được nhắc tới như một dịch vụ quy mô lớn chiếm khoảng 10% thương mại điện tử toàn cầu, và cũng có chia sẻ kinh nghiệm rằng không biết quy mô nào là Rails không thể gánh nổi
Các bản phát hành, sáp nhập Merb và hướng đi kéo dài 20 năm
- Việc công bố Rails ngay từ đầu hiển nhiên đi theo hướng mã nguồn mở, và David cho rằng vì nền tảng giúp anh làm web là các công cụ mã nguồn mở, nên anh cũng phải chia sẻ hộp công cụ của mình
- Cũng từng có thảo luận về việc thu phí Rails hoặc độc quyền nó làm lợi thế cạnh tranh, nhưng David quyết định rằng mã nguồn mở giấy phép MIT là quan trọng và sẽ làm cho Rails trở nên rất thành công
- Công cụ mà Jamis Buck tạo ra để triển khai Basecamp về sau được biết đến với tên Capistrano
- Dòng chảy các bản phát hành chính của Rails như sau
- Rails 1.0 là điểm khởi đầu quan trọng
- Rails 1.2 được đánh giá là một bản phát hành sớm ổn định và là thời điểm Rails thể hiện dáng dấp của một web framework trưởng thành
- Tháng 12/2007, Rails 2.0 mang đến session dựa trên cookie, named scopes và các tính năng khác
- Tháng 3/2009, Rails 2.3 được xem là bản phát hành có đủ công cụ mà nhà phát triển web hiện đại cần, từ ứng dụng nhỏ đến ứng dụng lớn
- Vào thời Rails 2.3, jQuery đang xuất hiện, và Rails cố gắng tạo không gian để tiếp nhận năng lượng từ thế giới JavaScript
- Sau đó, web framework Ruby Merb xuất hiện như một đối thủ nhanh hơn, nhẹ hơn và làm ít việc hơn, và các nhà phát triển Rails nhận thấy có những điểm đáng học từ hướng đi đó
- Rails 3.0 dẫn tới việc sáp nhập với Merb, đòi hỏi một công việc lớn là thiết kế lại bên trong Rails thành cấu trúc có thể cấu hình, có thể tái tổ hợp và được mô-đun hóa
- Cộng đồng Rails tập trung vào việc giúp cả những người không được đào tạo chính quy về khoa học máy tính hay lập trình cũng có thể xây dựng ứng dụng web và tạo dựng sự nghiệp
- Rails cố gắng hạ thấp rào cản bắt đầu, rồi cung cấp con đường để sau đó trở thành lập trình viên trình độ cao trong công ty hoặc ngành
- Như câu chữ hiện nay trên website Rails, Rails là framework giúp một nhóm nhỏ đi từ “Hello World đến IPO”, và chất lượng cộng đồng lẫn codebase hiện được đánh giá là tốt nhất từ trước đến nay
1 bình luận
Ý kiến trên Hacker News
Tôi đã xem bộ phim tài liệu này rất thích, và qua câu chuyện cá nhân của Toby ở Shopify, góc nhìn về framework một người được thể hiện rất rõ
“From Hello World to IPO” cũng hay, và đặc biệt ấn tượng với nhận xét rằng dù mở bất kỳ ứng dụng Rails nào, từ ứng dụng Rails lớn nhất đến ứng dụng mới, cấu trúc gần như đều giống nhau
Trong môi trường ngày nay, nơi API và stack frontend đan xen với nhau, sự nhất quán như vậy không phải lúc nào cũng được bảo đảm
Những thay đổi mới nhất của Rails đang làm nền tảng vững chắc trở nên vững hơn nữa, và ngoài Kamal, cũng đang có những nỗ lực giúp hạ tầng dễ dùng hơn như Solid Cache, Solid Queue
Ở frontend, Turbo Morphing cũng đang hoạt động mạnh, còn với ứng dụng di động thì có Turbo Native và Strada
Tôi đã nâng cấp lên 7.1 và đang vận hành một ứng dụng di động làm bằng Turbo Native; cũng rất mong chờ việc thay Redis cache bằng Solid Cache để đơn giản hóa hơn và cache được lâu hơn
Thật vui khi thấy cộng đồng Rails vẫn rất sôi động, và các thành viên core team hiện tại lẫn trước đây vẫn gắn bó sâu sắc với framework này
Tôi chưa từng dùng Rails, nhưng điều tôi thật sự ghét ở hệ sinh thái Node.js là thiếu quy ước rõ ràng
Dù dùng cùng một framework, cấu trúc lúc nào cũng khác nên rất lộn xộn; ngoại lệ có lẽ là Next.js, nhưng cái đó lại nghiêng về phía frontend hơn
Công cụ phát triển quanh Ruby và Rails cũng xuất hiện nhiều, vì vậy hy vọng Rails 8.0 và Ruby 3.4 sẽ có thêm nhiều thay đổi tích cực
Hóa ra anh ấy là nhà sáng lập Shopify và có tài sản 5,5 tỷ USD, thật buồn cười
Các lập trình viên thường có xu hướng đánh giá rất thấp khía cạnh này của RoR
Nó không chỉ giúp onboarding dễ hơn mà còn giảm đáng kể tranh luận vụn vặt kiểu bikeshedding
MVC có thể không phải là tốt nhất cho mọi thứ, nhưng trong hầu hết trường hợp thì đủ tốt
Lát nữa hôm nay tôi phải xem cái này mới được
Tôi đã thử nhiều framework như Laravel, ExpressJS, MeteorJS, Django, Flask, mỗi cái đều có ưu nhược điểm, nhưng khi làm theo tutorial hoặc thử làm theo cách của mình thì cuối cùng tôi luôn bỏ cuộc
Ba ngày trước tôi bắt đầu với Rails, và chỉ trong cuối tuần đã có thể nhanh chóng dựng một MVP để cho đồng nghiệp xem
Rails khiến tôi tập trung vào việc ứng dụng cần làm gì, chứ không phải phải triển khai ứng dụng như thế nào, và giờ tôi mới hiểu vì sao mọi người thích nó đến vậy
Trong Rails, năng suất thật sự rất cao
Từ lâu, phàn nàn lớn nhất của tôi là khi đi chệch khỏi quy ước thì tài liệu thiếu hoặc có nhiều thông tin mâu thuẫn nhau
Việc tìm và hiểu “cách được ban phước” có thể rất khó, nhưng may là ChatGPT khá giỏi trong việc giúp tìm điểm khởi đầu cho những phần như vậy
Đây thật sự là một bộ phim tài liệu xuất sắc
Tôi đã dùng Rails vài năm qua, và nó rất hiệu quả về năng suất để một nhóm nhỏ xây dựng sản phẩm và triển khai business logic theo các pattern đã được thiết lập tốt
Nếu tò mò cấu trúc ứng dụng Rails thực tế trông ra sao, tôi khuyên nên xem codebase của Jumpstart. Đây là tài liệu tốt để học cách tổ chức cấu trúc
https://jumpstartrails.com/
Một lựa chọn khác là Bullet Train cũng khá tốt, nhưng nó thêm nhiều thư viện tùy biến nên khó gọi là “cách Rails”
https://bullettrain.co/
Tôi nghĩ phim tài liệu về Rails này và phim tài liệu về Elixir đã không truyền tải được nhiều điều
Vì ngắn nên mới chỉ kịp bắt đầu kể chuyện nguồn gốc rồi kết thúc, trước khi chạm tới những điểm đủ gây hào hứng
Thay vì cho cộng đồng hoặc những người ngoài cộng đồng thấy các công nghệ này tuyệt vời đến mức nào, nó trông giống như nhằm nâng cái tôi của các nhân vật xuất hiện hơn
Tôi muốn có phim tài liệu dài 1 giờ 30 phút cho riêng Elixir và Rails, vượt qua phần khen nhau để cho thấy nhiều năm vật lộn, các cách sử dụng khác nhau ở nhiều công ty, v.v.
Nói cách khác, nếu lấy format của Indie Game: The Movie thì có lẽ sẽ cuốn hút hơn nhiều, và tôi mong có thêm nhiều phim tài liệu hay về phần mềm
Có nhiều mảnh lịch sử nhỏ khó tìm thấy ở đâu khác, như cách tiếp cận của David đặc biệt đến mức nào, đội Rails đã hình thành qua Toby và những người khác ra sao, và nó đã hợp nhất với các framework khác như thế nào
Nếu dài hơn thì cũng tốt, nhưng việc làm ra được như thế này đã là tuyệt vời rồi
Tôi đã xem, nhưng nghĩ rằng nó chưa cho thấy đầy đủ những gì Rails đã làm được
Ruby on Rails đã thay đổi mô hình xây dựng ứng dụng web, thoát khỏi cách tiếp cận xoay quanh file như PHP, JSP, WebForms để chuyển sang route và mô hình MVC, và ngày nay hầu như web framework tử tế nào cũng có cách này
Phim tài liệu không nói đến phần đó, nhưng dù sao vẫn đáng xem và khá thú vị
Tuy vậy, đến mức hơi thấy có lỗi khi đặt Struts và Rails trong cùng một câu, vì Rails đã làm được nhiều hơn rất nhiều
Những nhân vật huyền thoại thời Rails sơ khai đã mở đường cho cách phát triển ứng dụng web hiện đại
Thậm chí có thể nói trong phát triển web có trước Rails và sau Rails
Nhìn các bình luận thì có vẻ Rails đang lại được ưa chuộng hơn một chút, vượt ra khỏi hình ảnh chỉ là một framework nhàm chán nhưng chắc chắn
Rails là hình ảnh của tôi ở thời còn làm mọi thứ vui hơn và thô ráp hơn, là ký ức của một thời khác nhưng khi đó phù hợp với con đường của tôi
Điều tôi thật sự đánh giá cao ở Rails là tầm nhìn mạnh mẽ, và việc nó không trở thành một framework cồng kềnh nữa để xây dựng ứng dụng “cấp enterprise”
Dù đã là framework 20 năm tuổi, nó vẫn không sợ thay đổi táo bạo cho phù hợp thời đại, và so với những thứ khác thì vẫn trông rất punk
Nghĩ lại câu chuyện của tôi khi bắt đầu dùng Rails 20 năm trước khiến tôi thấy ấm lòng
https://twitter.com/buger/status/1723040883325460818
Từ 2015 đến 2019 tôi đã làm việc trên một ứng dụng Rails vận hành thực tế rất lớn, và kết quả là tôi yêu Rails nhưng lại ghét Ruby
Nếu có Rails viết bằng TypeScript hoặc Go, tôi không nghĩ ra lý do gì để dùng thứ khác cho backend ứng dụng web
Rails Console là một trong những công cụ tăng năng suất tốt nhất mà tôi từng gặp
TypeScript có thể làm được nếu tận dụng Node REPL hiện có, nhưng lý do lớn khiến Rails console hữu ích đến vậy rốt cuộc vẫn nằm ở chính Ruby
Phim tài liệu của Honeypot thật sự hay, rất khuyến nghị xem