Trending
7 phút đọc1 tháng 6, 20261

Bram Moolenaar và di sản Vim: Khi một text editor thay đổi cả ngành

Ngày 3/8/2023, cha đẻ của Vim Bram Moolenaar qua đời. Nhìn lại di sản mà ông để lại cho hàng triệu developer trên toàn thế giới.

N

Nguyễn Nhật Long

@nguyennhatlong1303

Bram Moolenaar và di sản Vim: Khi một text editor thay đổi cả ngành

Bram Moolenaar và di sản Vim: Khi một text editor thay đổi cả ngành

Ngày 5 tháng 8 năm 2023, một bức thư ngắn được đăng lên mailing list vim_announce. Không phải thông báo release mới, không phải patch note. Đó là thư từ gia đình Bram Moolenaar thông báo ông đã qua đời vào ngày 3 tháng 8, sau vài tuần chống chọi với bệnh tật.

Mình đọc đi đọc lại bức thư đó mấy lần. Ngắn gọn, nhẹ nhàng, đúng phong cách của một người đã dành cả đời viết code mà không cần nói nhiều. Và mình nghĩ đây là câu chuyện mà bất kỳ developer nào cũng nên biết.

Bram Moolenaar là ai?

Nếu bạn đã từng mở terminal và gõ vim, bạn đã dùng sản phẩm của Bram Moolenaar. Ông là người tạo ra Vim Vi IMproved từ năm 1991. Đúng vậy, hơn 30 năm trước.

Bram sinh năm 1961 tại Hà Lan. Ông bắt đầu phát triển Vim như một bản cải tiến của Vi trên máy Amiga, rồi port sang Unix, rồi Windows, rồi hầu như mọi platform có thể tưởng tượng được. Suốt hơn 30 năm, ông là Benevolent Dictator For Life (BDFL) của project người review code, merge patch, quyết định hướng đi, và viết phần lớn core codebase.

Điều mình thấy ấn tượng nhất: Bram không làm việc cho công ty nào để phát triển Vim. Đây là một open source project thuần túy, được maintain bởi một người đàn ông Hà Lan với sự giúp đỡ của cộng đồng. Không có VC funding, không có corporate sponsor lớn, không có marketing team. Chỉ có code và sự kiên trì.

Vim Nhiều hơn một text editor

Để hiểu di sản của Bram, bạn cần hiểu Vim đã ảnh hưởng đến ngành software thế nào.

Theo khảo sát Stack Overflow Developer Survey qua các năm, Vim luôn nằm trong top editor được sử dụng nhiều nhất. Nhưng con số thống kê không nói hết được câu chuyện.

Modal editing thay đổi cách chúng ta nghĩ về text editing

Trước Vim (và Vi), mọi editor đều hoạt động theo một cách: bạn gõ phím, chữ xuất hiện trên màn hình. Vim đưa ra một ý tưởng khác hoàn toàn: tách biệt giữa việc nhập text và việc thao tác với text.

Normal mode, Insert mode, Visual mode, Command mode nghe phức tạp, nhưng ý tưởng cốt lõi rất đẹp: phần lớn thời gian của developer không phải là gõ code mới, mà là đọc, navigate, sửa, refactor code cũ. Vim được thiết kế cho đúng thực tế đó.

Theo kinh nghiệm của mình, khi đã quen với Vim keybinding, bạn sẽ thấy mọi editor khác đều... chậm. Không phải chậm về performance, mà chậm về workflow. Tay bạn không cần rời khỏi home row, mọi thao tác đều có thể compose được như một ngôn ngữ.

Và ý tưởng này đã lan tỏa khắp nơi:

Bạn thấy không? Vim không chỉ là một editor nó là một paradigm. Khi một text editor ảnh hưởng đến cách thiết kế của hàng chục tool khác, đó không còn là phần mềm nữa, đó là triết lý.

Tool/EditorVim Integration
VS CodeExtension "Vim" với 15M+ downloads
JetBrains IDEsIdeaVim plugin
Sublime TextVintage mode built-in
NeovimFork hiện đại hóa của Vim
BrowsersVimium extension
Terminal multiplexertmux hỗ trợ vi mode
ShellBash/Zsh vi mode

Vimscript và hệ sinh thái plugin

Bram cũng tạo ra Vimscript ngôn ngữ scripting riêng cho Vim. Nói thật, Vimscript không phải ngôn ngữ đẹp nhất thế giới. Nhiều người (kể cả mình) hay phàn nàn về syntax khá quirky của nó. Nhưng nó đã enable một hệ sinh thái plugin khổng lồ: từ NERDTree, fzf.vim, vim-fugitive cho đến coc.nvim.

Điều mình thấy hay là Bram luôn ưu tiên backward compatibility. Code Vimscript viết từ 15 năm trước vẫn chạy được trên Vim mới nhất. Trong thế giới JavaScript nơi framework thay đổi mỗi 6 tháng, sự ổn định này là vô giá.

ICCF Holland Mặt ít người biết của Bram

Khi bạn mở Vim lần đầu, bạn sẽ thấy dòng chữ: "Help poor children in Uganda". Đó không phải Easter egg hay joke. Bram là người sáng lập ICCF Holland, một tổ chức từ thiện hỗ trợ trẻ em ở Uganda.

Vim là charityware bạn dùng miễn phí, nhưng được khuyến khích donate cho ICCF. Bram đã kết hợp đam mê công nghệ với mong muốn giúp đỡ cộng đồng theo cách rất riêng, rất Bram.

Theo mình, đây là điều đáng ngưỡng mộ nhất. Ông có thể monetize Vim theo trăm cách khác nhau. Thay vào đó, ông chọn dùng nó như một cầu nối đến những đứa trẻ ở một đất nước cách Hà Lan hàng ngàn km.

Sau Bram Vim sẽ đi về đâu?

Đây là câu hỏi mà cộng đồng đã phải đối mặt ngay sau khi Bram qua đời. Và nó cũng là bài học lớn cho bất kỳ ai maintain open source project.

Vim là một trong những project lớn nhất thế giới mà phần lớn quyết định nằm trong tay một người duy nhất. Khi người đó ra đi, project phải chuyển sang mô hình governance mới một nhóm maintainer thay vì một BDFL.

Song song đó, Neovim fork của Vim ra đời từ 2014 đã trở thành lựa chọn cho nhiều developer muốn một hướng đi hiện đại hơn: Lua thay cho Vimscript, LSP native, tree-sitter, async built-in. Neovim không thay thế Vim, nhưng nó tiếp tục phát triển ý tưởng mà Bram đã gieo mầm.

Vim (post-Bram)Neovim
GovernanceCommittee-basedCommunity-driven
Config languageVimscript (+ Vim9 script)Lua + Vimscript
LSP supportQua pluginBuilt-in
AsyncCó (từ Vim 8)Native từ đầu
Triết lýStability & compatibilityInnovation & extensibility

Bài học cho developer Việt Nam

Mình viết bài này không chỉ để tưởng nhớ Bram. Mình muốn chia sẻ vài điều mình rút ra từ cuộc đời ông.

Thứ nhất: Consistency beats intensity. Bram maintain Vim hơn 30 năm. Không phải sprint 3 tháng rồi burnout. Hơn 30 năm commit đều đặn. Trong thời đại mà chúng ta hay nhảy từ project này sang project khác, sự kiên trì của Bram là một lời nhắc nhở.

Thứ hai: Một người có thể tạo ra impact khổng lồ. Bạn không cần team 500 người hay funding hàng triệu đô để tạo ra thứ gì đó có ý nghĩa. Bram làm Vim phần lớn một mình, và nó đã thay đổi cách hàng triệu developer làm việc.

Thứ ba: Open source cần succession planning. Đây là bài học thực tế. Nếu bạn maintain một project mà nhiều người phụ thuộc vào, hãy nghĩ đến chuyện gì sẽ xảy ra khi bạn không còn ở đó. Document mọi thứ. Chia sẻ quyền maintain. Đừng để project trở thành single point of failure.

Lời cuối

Mình vẫn dùng Vim mỗi ngày. Mỗi lần gõ dd để xóa một dòng, ciw để thay đổi một từ, hay :wq để save và thoát, mình đang dùng thứ mà một người đàn ông Hà Lan đã dành cả đời để xây dựng.

Bram Moolenaar không chỉ viết một text editor. Ông đã tạo ra một ngôn ngữ để nói chuyện với text và ngôn ngữ đó sẽ sống mãi.

Nếu bạn chưa từng thử Vim, hãy mở terminal lên và gõ vimtutor. Dành 30 phút. Coi như đó là cách bạn nói lời cảm ơn với Bram.

Và nếu bạn muốn đi xa hơn hãy donate cho ICCF Holland. Đó là điều Bram muốn nhất.

Rest in peace, Bram. :wq

NN

Nguyễn Nhật Long

@nguyennhatlong1303

Nguyễn Nhật Long is a Senior Frontend Engineer and Frontend Team Leader with 7 years of experience building real-time fintech platforms. Specializing in React, Next.js, TypeScript, and React Native, shipping 10+ products across Web, Mobile, Telegram Mini-Apps, and Web3.

Thấy hay? Chia sẻ cho bạn bè!