24 điểm bởi GN⁺ 2026-01-11 | 1 bình luận | Chia sẻ qua WhatsApp
  • Một định dạng dựa trên văn bản đơn giản đã trở thành ngôn ngữ chung của toàn bộ ngành công nghệ toàn cầu, được sử dụng rộng rãi từ các hệ thống AI đến những ứng dụng ghi chú hằng ngày
  • Đây là định dạng do John Gruber tạo ra vào năm 2004 để giải quyết sự bất tiện trong việc biên tập bài blog, giúp bất kỳ ai cũng có thể dễ dàng viết tài liệu web
  • Cung cấp cú pháp trực quancấu trúc mở cho cả lập trình viên lẫn người dùng phổ thông, nhờ đó được tích hợp vào gần như mọi nền tảng như GitHub, Slack và Apple Notes
  • Được tạo ra với tinh thần chia sẻ và hợp tác hơn là vì lợi ích thương mại, cho thấy tính bền vững của hệ sinh thái công nghệ mở
  • Ngày nay, đây là định dạng nền tảng của Internet đến mức ngay cả hệ thống điều khiển cốt lõi của ngành AI cũng được viết bằng Markdown

Nguồn gốc và quá trình lan rộng của Markdown

  • Markdown là một ngôn ngữ định dạng ngắn gọn được tạo ra để giải quyết vấn đề chỉnh sửa HTML phức tạp trong các công cụ blog vào đầu những năm 2000
    • John Gruber khi điều hành blog tập trung vào Apple là Daring Fireball từ năm 2002 đã phát triển nó để giảm bớt sự bất tiện khi viết bài
    • Khi đó, các blogger phải tự viết HTML trực tiếp để chèn liên kết hoặc chữ in đậm
  • Năm 2004, Gruber cùng với Aaron Swartz tiến hành thử nghiệm beta để tinh chỉnh định dạng này, rồi công bố vào tháng 3
    • Phản hồi từ Swartz đã góp phần nâng cao tính ổn định và độ linh hoạt
  • Ngay sau khi ra mắt, nó lan rộng không chỉ trong giới blog mà còn cho nhiều mục đích khác nhau, phát triển từ một công cụ cá nhân đơn giản thành định dạng tiêu chuẩn trên toàn bộ web

Nguyên lý và đặc điểm của Markdown

  • Một cấu trúc cú pháp trực quan cho phép biểu đạt định dạng web chỉ bằng các ký tự thông thường trên bàn phím
    • Ví dụ: dạng [văn bản liên kết](URL) hoặc # tiêu đề
  • Đúng như cái tên “Markdown”, vốn giảm bớt sự phức tạp của “Markup”, giá trị cốt lõi của nó là sự đơn giản và khả năng dễ đọc
  • Dễ đến mức ai cũng có thể học trong vài phút, nhưng đồng thời vẫn mang lại khả năng biểu đạt mạnh mẽ
  • Về mặt kỹ thuật, việc triển khai cũng đơn giản nên hầu hết các công cụ blog và ứng dụng đều nhanh chóng hỗ trợ

Sự lan rộng ra toàn ngành

  • Trong nhiều thập kỷ, Markdown đã trở thành ngôn ngữ cơ bản của ngành phần mềm
    • Các ứng dụng lớn như Google Docs (2022), Microsoft Notepad, Apple Notes đều đã bổ sung hỗ trợ
    • Nó cũng được dùng trên các nền tảng nhắn tin như Slack, WhatsApp và Discord
  • Gần như mọi kho lưu trữ trên GitHub đều có tệp Markdown, và nó được dùng như tiêu chuẩn cho mô tả dự án và tài liệu hóa
  • hàng tỷ tệp Markdown tồn tại trên ổ cứng và trên đám mây khắp thế giới
    • Thậm chí còn xuất hiện trong các hệ thống nhúng như máy chơi game hay tai nghe

Tinh thần công nghệ mở và hợp tác

  • Markdown được công bố miễn phí mà không nhằm mục đích thương mại, nên bất kỳ ai cũng có thể tự do sử dụng
    • Gruber không yêu cầu đền bù tài chính cho định dạng này
  • Trong văn hóa web mở đầu những năm 2000, đây là ví dụ tiêu biểu cho cách phát triển mang tính hợp tác, cùng chia sẻ và cải thiện tiêu chuẩn
  • Nhờ tính mở đó, không xuất hiện các lựa chọn thay thế mang tính đóng kín, và Markdown đã trở thành hạ tầng công cộng của Internet

Markdown trong kỷ nguyên AI

  • Ngày nay, phần lớn prompt và script điều khiển của mô hình ngôn ngữ lớn (LLM) đều được viết dưới dạng Markdown
    • Các chỉ dẫn tác vụ nâng cao trong ChatGPT hay Claude cũng dựa trên Markdown
  • Một định dạng văn bản đơn giản đã phát triển thành ngôn ngữ điều khiển cốt lõi của ngành AI
  • Định dạng miễn phí do Gruber tạo ra này đang nâng đỡ ngành AI trị giá hàng nghìn tỷ đô la
  • Ở nền tảng của tiến bộ công nghệ không phải lúc nào cũng là các tập đoàn khổng lồ, mà là đóng góp của cá nhân được tạo nên bằng đam mê và sự tỉ mỉ

10 lý do kỹ thuật khiến Markdown thành công

  • 1. Cái tên xuất sắc: trực quan và dễ nhớ như một khái niệm đối lập với “Markup”
  • 2. Giải quyết đúng vấn đề thực tế: xóa bỏ sự bất tiện của việc viết HTML phức tạp
  • 3. Dựa trên thói quen sử dụng quen thuộc: tận dụng các ký hiệu đã được dùng trong email và những môi trường khác
  • 4. Cấu trúc phát triển mở tương tự RSS: lớn lên cùng văn hóa blog
  • 5. Cộng đồng hợp tác: có công nghệ đi trước như Textile của Dean Allen và sự tham gia của Swartz
  • 6. Hỗ trợ nhiều biến thể: mở rộng theo từng bối cảnh như CommonMark, GitHub-Flavored
  • 7. Nắm bắt đúng thời điểm thay đổi hành vi người dùng: xuất hiện vào lúc blog và mạng xã hội bùng nổ
  • 8. Phù hợp với thời đại công cụ build: quá trình chuyển đổi sang HTML rất hợp với workflow tự động hóa
  • 9. Giữ triết lý ‘View Source’: ai cũng có thể xem mã nguồn gốc và học hỏi
  • 10. Không bị ràng buộc bởi quyền sở hữu trí tuệ: không có hạn chế bằng sáng chế hay giấy phép nên có thể được tiếp nhận tự do

Kết luận

  • Markdown đã trở thành ngôn ngữ cơ bản của Internet nhờ sự đơn giản, tính mở và thiết kế lấy con người làm trung tâm
  • Nó chứng minh rằng sự sáng tạo cá nhân và tinh thần hợp tác chứ không phải nguồn vốn khổng lồ vẫn có thể dẫn dắt đổi mới công nghệ
  • Ngay cả trong cấu trúc cốt lõi của AI và web ngày nay, cội rễ của nó vẫn là một định dạng tệp văn bản do một lập trình viên tạo ra

1 bình luận

 
GN⁺ 2026-01-11
Ý kiến trên Hacker News
  • Bài viết rất tốt. Nhưng lý do lớn nhất khiến tôi thích Markdown là vì về bản chất nó dựa trên văn bản thuần
    Không bị ràng buộc bởi định dạng hay nhà cung cấp, và cũng hoàn hảo để đưa vào kho git. Không cần lo một định dạng như OneNote đến năm 2035 còn mở được hay không
    Tôi cũng thích việc các LLM về cơ bản hiểu Markdown. Khi yêu cầu tạo tài liệu API từ mã phía server, chúng lập tức hiểu rằng mình muốn một bản tóm tắt dựa trên văn bản

    • Markdown vốn là sự chuẩn hóa những quy ước mà mọi người vẫn dùng trong file văn bản. Tôi cũng thường viết tài liệu bằng text, rồi sau này nhận ra mình đã dùng cú pháp Markdown từ trước. Thế nên chỉ cần đổi phần mở rộng sang .md và chỉnh lại một chút là nó trông đẹp ngay
    • Tất nhiên cũng có những định dạng tốt hơn như AsciiDoc hay reStructuredText. Nhưng rốt cuộc có quá nhiều nơi buộc phải dùng Markdown, nên nó vẫn là một lựa chọn đủ tốt
    • Về bản chất Markdown là văn bản trông cũng khá ổn. Đó cũng là lý do nó không hỗ trợ bảng. Dù thiết kế cú pháp tốt đến đâu thì cũng khó biểu diễn bảng đẹp bằng văn bản thuần
    • Tôi cũng dần thích văn bản vì lý do đó. Hiện tôi đang đọc The UNIX Programming Environment (1984), và cuốn sách này lại khiến tôi cảm nhận rõ tính bền vững của các định dạng dựa trên văn bản
    • Vì thế tôi thích Obsidian. Nó giống như một hệ điều hành dành cho Markdown
  • Trước đây tôi từng thêm tính năng hỗ trợ Markdown vào Google Docs như một dự án 20%. Thật vinh dự khi tên mình được nhắc đến trong lịch sử Markdown

    • Nhờ tính năng đó mà Google Docs trở nên dễ chịu hơn rất nhiều. Đặc biệt là khi dùng cùng phím tắt alt+/ thì thật sự rất tiện
    • Nó giúp ích rất nhiều khi cần nhanh chóng tạo và chia sẻ tài liệu
    • Tôi dùng nó gần như mỗi ngày. Cảm ơn!
  • Không hẳn là việc tự viết HTML quá khó, mà sức hấp dẫn của Markdown nằm ở chỗ chính văn bản gốc cũng dễ đọc
    Và xin giới thiệu trình soạn thảo Kraa của tôi, nơi bạn có thể tùy biến “diện mạo” của Markdown

    • Tôi đã xem Kraa trước đây, giờ thử lại thì thấy việc xuống dòng từ bị gượng, ẩn # khiến khó thay đổi kiểu header, và dùng cú pháp checkbox không chuẩn ([]) nên khá bất tiện. UI rất đẹp nhưng với tư cách trình soạn thảo Markdown thì còn thiếu
    • Sản phẩm có vẻ tốt nhưng không thể tự host nên mức độ an toàn không rõ ràng. Nếu là ghi chú cá nhân thì ổn, nhưng dùng cho công việc thì hơi bất an. Tôi cũng tò mò không biết có kế hoạch kiếm tiền hay không
    • Có những lúc cần dùng <br>. Ví dụ như ô bảng nhiều dòng thì phải dùng cùng font đơn cách
    • Nếu tắt JavaScript thì chỉ thấy màn hình trắng. Điều này khá đáng tiếc
  • Tôi thật sự rất thích Markdown. Nhưng vẫn ngạc nhiên là đến giờ phần lớn trình duyệt vẫn không mở trực tiếp file .md. Sẽ rất hay nếu trình duyệt tự chuyển sang HTML để hiển thị

    • Tôi dùng Markdeep. Chỉ cần thêm một đoạn mã ở cuối tài liệu rồi lưu thành .md.html là trình duyệt render được ngay. Tôi lưu chúng trên Google Drive và dùng thay cho mọi ứng dụng ghi chú
    • Để làm được tính năng này thì cần có chuẩn hóa cho Markdown. Có CommonMark đấy, nhưng nó vẫn phức tạp và mơ hồ
    • Thật lạ là gần như không có ứng dụng đọc nào chỉ đơn giản render Markdown cho đẹp. Tôi không hiểu vì sao một thứ đơn giản như vậy lại không tồn tại
    • Sẽ hay nếu trong trình duyệt có một nút kiểu “xem dưới dạng HTML” để render, tôi tự hỏi vì sao điều đó lại bị từ chối
    • Tôi cũng thấy tiếc vì không có API JS mặc định để chuyển Markdown thành HTML an toàn
  • Bài viết không nhắc đến câu chuyện Jeff Atwood (nhà sáng lập Stack Overflow) từng đề nghị Gruber chuẩn hóa Markdown
    Cuối cùng Gruber đã từ chối, nhưng tôi nghĩ việc ông kiên định với điều mình muốn làm là một ví dụ truyền cảm hứng

    • Thực ra Atwood đã công bố tài liệu “Standard Markdown” trước, nhưng Gruber không phê chuẩn nó. Sau đó tên dự án được đổi thành CommonMark. Kết quả là vẫn có thể giữ được sự đơn giản
    • Tuy vậy, do thiếu tiêu chuẩn nên tôi đã gặp vấn đề tương thích nhiều lần
  • Cách nói “có một biến thể phù hợp với mọi ngữ cảnh” thật buồn cười. Markdown không thống nhất nên bold hay bold, italics dễ gây lẫn lộn
    Dù vậy tôi vẫn mong CommonMark được dùng rộng rãi hơn

    • Tôi nghĩ những ký hiệu trực quan hơn như /italics/, _underline_ sẽ tốt hơn, giống như ở các định dạng khác
    • Trên thực tế, sự khác biệt giữa in đậm và in nghiêng không quá quan trọng. Chỉ cần truyền tải được sự nhấn mạnh là đủ
    • Trước đây tôi ghét những biến thể như thế này, nhưng giờ tôi chấp nhận chúng như “tính bao dung thực dụng (Practical Postelism)”. Sự đa dạng thực tế giúp hệ thống thành công hơn là một tiêu chuẩn hoàn hảo
    • Cách viết in đậm bằng một dấu sao của Slack không phải Markdown. Nó quá bất tiện nên tôi đành học thuộc luôn phím tắt
  • Có một định dạng mới là Djot(djot.net), do tác giả của CommonMark và Pandoc tạo ra. Nó hợp lý hơn và dễ phân tích cú pháp hơn

    • Nhưng với người dùng Hàn Quốc thì cách phát âm “djot” nghe giống từ tục
    • Đặc tả chưa đủ rõ ràng nên khó tạo ra triển khai mới
    • Dù vậy nó vẫn giống một phiên bản Markdown chặt chẽ và gọn gàng hơn, nên tôi định sẽ thử
    • Tôi đang dùng Djot trong dự án của mình (Moor client). Nó an toàn, quen thuộc và dễ parse
  • Ưu điểm của Markdown rất rõ ràng
    Dựa trên văn bản, thân thiện với git, thân thiện với LLM, khả năng tìm kiếm rất tốt
    Nhưng nó không thể xử lý bố cục phức tạp, kiểu chữ tinh vi hay nhúng dữ liệu nhị phân. Tôi tò mò không biết còn hạn chế nào khác nữa không

    • Khi danh sách nhiều cấp quá sâu, nó có thể bị render như block code. Đây là một nhược điểm lớn của Markdown
    • CommonMark hoạt động như một siêu tập của HTML. Nhưng giữa các triển khai vẫn có rất nhiều khác biệt nhỏ
    • Markdown rất tốt cho ghi chú đơn giản, nhưng không phù hợp với tài liệu có cấu trúc vì thiếu semantic markup
    • Nó thiếu các biểu đạt học thuật như công thức, phân biệt chữ hoa chữ thường, phân khu tài liệu v.v.
    • Trong cú pháp mở rộng, bạn có thể chèn HTML/CSS hay ảnh base64, nhưng như thế thì đã đi chệch khỏi tinh thần của Markdown rồi
  • Lý do Markdown thành công là nhờ đúng thời điểm
    AsciiDoc, org-mode và các định dạng khác có cấu trúc tốt hơn nhưng lại thiếu độ phổ biến.
    Khi GitHub chọn Markdown, cả cộng đồng mã nguồn mở cũng tự nhiên đi theo.
    Giống như cuộc cạnh tranh giữa VHS và Betamax, không phải công nghệ tốt hơn mà là định dạng chiếm chỗ trước đã chiến thắng

  • Mô tả kiểu “một người khó tính nhưng ấm áp, giờ này có lẽ đang xem phim Kubrick và cổ vũ cho một đội bóng vô lý nào đó” thật ấn tượng