Cách khiến mã nguồn mở của bạn trở nên nổi tiếng
(evilmartians.com)Những điều cần biết trước khi làm cho mã nguồn mở trở nên nổi tiếng
- Nếu bạn muốn nổi tiếng hoặc giàu lên nhờ mã nguồn mở thì đó là một cách tiếp cận sai
- So với việc tạo ra một dự án nổi tiếng, viết blog hoặc thuyết trình tại hội nghị còn hiệu quả hơn
- Redux và React Router là những dự án nổi tiếng, nhưng người bảo trì của chúng không có quá nhiều người theo dõi trên mạng xã hội → độ nổi tiếng của dự án không đồng nghĩa với độ nổi tiếng của cá nhân
Đừng tạo mã nguồn mở chỉ để ghi vào CV
- Quan niệm cho rằng tham gia mã nguồn mở là điều bắt buộc là sai lầm
- Ngay cả khi bắt đầu mã nguồn mở để trở nên nổi tiếng thì cũng không có gì đảm bảo sẽ thành công
- Dù là một dự án tốt, nếu chỉ có một ngôi sao thì bạn cũng có thể cảm thấy chán nản
- Hoạt động mã nguồn mở có thể giúp ích trong tuyển dụng, nhưng thay vì tự tạo dự án, đóng góp cho các dự án nổi tiếng sẵn có sẽ hiệu quả hơn
Hãy bắt đầu từ việc đóng góp trước
- Trong các dự án mã nguồn mở lớn, hãy bắt đầu từ chỉnh sửa tài liệu hoặc sửa lỗi
- Viết PR dễ hơn rất nhiều so với tự viết code từ đầu
- Lý do tốt nhất để làm mã nguồn mở là vì bạn muốn thay đổi thế giới
Cách thay đổi thế giới thông qua mã nguồn mở
- Lý do tạo ra PostCSS là để đa dạng hóa hệ sinh thái công cụ CSS và giúp việc xử lý CSS trở nên dễ dàng hơn → và điều đó đã thành công
- Độ phổ biến và thành công là những yếu tố quan trọng
Bí quyết của các dự án nổi tiếng
Độ nổi tiếng của dự án = mức độ nhận biết + quảng bá + lợi ích mang lại cho người dùng + may mắn
- Các dự án do lập trình viên nổi tiếng tạo ra thường dễ nổi tiếng hơn → điều này có thể không công bằng nhưng đó là thực tế
- Cần hiểu nguyên nhân tạo ra sự nổi tiếng và tiếp cận một cách chiến lược
Cách mọi người chọn mã nguồn mở
- Mọi người không chọn công cụ một cách hoàn toàn lý trí
- Phần lớn quyết định dựa vào số Star trên GitHub
- Hoặc thường đi theo các framework được nhắc đến tại hội nghị
Cách mọi người thực sự đọc thông tin
- Người dùng không đọc README hay tài liệu từ đầu đến cuối
- Thông tin cần được cung cấp ngắn gọn và dần dần như một “progressive JPEG”
- Ngay ở khối đầu tiên phải giải thích rõ lợi ích
Chiến lược để trở nên nổi tiếng
- Cần sắp xếp tài khoản mạng xã hội thật tốt
- Ban đầu tác giả không tạo tài khoản mạng xã hội bằng tiếng Anh nên mọi người khó tìm thấy tác giả
- Nếu là lập trình viên không nói tiếng Anh, việc tạo tài khoản mạng xã hội bằng tiếng Anh sẽ có lợi hơn
- Khi dự án được nhắc đến, cần cung cấp liên kết hồ sơ để người dùng dễ kết nối hơn
- Thiết lập tư duy thực tế
- May mắn là quan trọng nhưng không phải tất cả
- Tác giả chỉ có 4 dự án thành công trên tổng số 56 dự án
- Trước khi tạo được một dự án nổi tiếng, tác giả đã trải qua nhiều lần thất bại
- Những dự án thành công là kết quả của nỗ lực bền bỉ và thất bại lặp đi lặp lại
- Chấp nhận thất bại là điều bình thường
- Một dự án nổi tiếng đòi hỏi nỗ lực dài hạn như một cuộc marathon
- Thất bại là một phần của quá trình → cần cải tiến liên tục và thử lại nhiều lần
- Hãy bắt đầu với dự đoán rằng mình có thể thất bại, nhưng đừng từ bỏ chất lượng công việc
Cách làm cho mã nguồn mở trở nên phổ biến: README
- README và tài liệu quyết định ấn tượng đầu tiên về dự án
- Người dùng cần nhanh chóng nắm được giá trị của dự án thông qua README
- README có thể được người dùng nhìn thấy qua các con đường như sau
- Nhiều kênh quảng bá khác nhau như bài thuyết trình, bài blog, podcast
- Cuối cùng đều dẫn đến README, vì vậy cần đầu tư nghiêm túc khi viết
- Độc giả không đọc README một cách kỹ lưỡng từ đầu đến cuối
- Vì vậy, ngay phần đầu README phải truyền đạt rõ giá trị của dự án
- Ở khối đầu tiên, mọi người phải có thể nhanh chóng hiểu được lợi ích của dự án
Câu hỏi: Bạn đã truyền đạt giá trị của dự án một cách hiệu quả chưa?
- Mọi người không có thời gian thong thả để đọc tài liệu thật chi tiết
- Vì thế cần sắp xếp thông tin cốt lõi và lợi ích một cách rõ ràng, ngắn gọn
- Việc tổ chức tài liệu tốt có thể cải thiện trải nghiệm người dùng và tăng độ phổ biến của dự án
1. Truyền đạt lợi ích cho người dùng một cách hiệu quả
- Truyền đạt lợi ích của dự án cho người dùng có liên hệ trực tiếp với việc quảng bá
- Trong công thức thành công đã nêu trước đó, mang lại lợi ích cho người dùng là một yếu tố quan trọng
Độ nổi tiếng của dự án = mức độ nhận biết + quảng bá + lợi ích mang lại cho người dùng + may mắn
- Trong README, tài liệu hoặc một đoạn giới thiệu ngắn, cần truyền đạt rõ ràng lợi ích cho người dùng
- Để được chú ý nhờ giá trị thực chứ không chỉ vì độ nổi tiếng hay danh tiếng, cần cân nhắc những điểm sau
- Tính dễ đọc của thông tin: người dùng phải nhanh chóng nắm được ý chính
- Khả năng quét nhanh: thông tin quan trọng cần được bố trí sao cho dễ thấy
- Ấn tượng đầu tiên: trong vài giây đầu tiên, giá trị của dự án phải hiện ra rõ ràng
2. Truyền tải thông điệp nhanh và hiệu quả
- Khối đầu tiên của README nhất định phải có ba yếu tố sau
- Mô tả rõ ràng
- Nêu rõ nó giúp gì cho người dùng
- Chỉ ra điểm khác biệt so với sản phẩm khác
- Ngay từ câu đầu tiên, cần nói rõ lý do người dùng nên đọc tài liệu
- Câu đầu tiên là quan trọng nhất → đa số người dùng chỉ đọc câu đầu rồi đánh giá giá trị của dự án
- Vì vậy, ở khối đầu tiên lợi ích của dự án phải được thể hiện rõ ràng
- Việc đầu tư từ vài ngày đến một tuần cho khối đầu tiên của README là hoàn toàn xứng đáng
- Tác giả đã mất khoảng một tuần để viết khối đầu tiên của PostCSS
- Càng đầu tư công sức cho khối đầu tiên, khả năng thành công của dự án càng tăng
3. Mô tả sản phẩm để mọi người dễ hiểu
- Phần mô tả dự án phải rõ ràng và trực quan
- So với những câu chữ nghe có vẻ ngầu, mô tả thực chất quan trọng hơn
- ❌ "Svelte is cybernetically enhanced web apps"
- Quá mơ hồ → không rõ cụ thể có ưu điểm gì
- ✅ "Svelte is a web UI framework with a unique compiler which generates smaller JS fixes."
- Cụ thể và rõ ràng → giải thích được nó giải quyết vấn đề gì và đem lại lợi ích nào
- Hãy tưởng tượng bạn đang nói chuyện với đồng nghiệp trong quán bar và viết phần mô tả như vậy
- "Bạn làm ra công cụ mới à? Nó dùng để làm gì?" → giải thích thật tự nhiên
- Khi đã sắp xếp xong phần mô tả thì gọt lại cho ngắn gọn hơn
- Sau khi viết xong, hãy chỉnh sửa thêm 2–4 lần để câu chữ ngắn hơn và rõ hơn
4. Dùng danh sách và chữ in đậm để truyền thông tin nhanh chóng
- Để truyền đạt thông tin rõ ràng, cần tận dụng tối đa danh sách và chữ in đậm
- Mô tả cũ của Nano Stores (dạng đoạn văn)
- Nano Stores là một trình quản lý trạng thái có thể dùng với nhiều frontend framework khác nhau
- Nó nhỏ gọn và không có phụ thuộc
- Mô tả đã chỉnh sửa (dùng danh sách và nhấn mạnh bằng in đậm)
- Nano Stores có các đặc điểm sau:
- Kích thước nhỏ: 286~818 byte (minified và brotlied)
- Hỗ trợ nhiều framework: React, Vue, Svelte, Angular, v.v.
- Không có phụ thuộc
- Nano Stores có các đặc điểm sau:
-
Những điểm giúp tăng tính dễ đọc
- Dùng danh sách: cấu trúc hóa thông tin để có thể nắm bắt ngay trong một cái nhìn
- Dùng chữ in đậm: nhấn mạnh thông tin quan trọng để nhận ra nhanh hơn
- Câu văn ngắn gọn: chỉ giữ lại thông tin quan trọng và xóa phần không cần thiết
- Dù rút gọn văn bản, thông điệp vẫn phải được truyền đạt rõ ràng
5. Sử dụng ví dụ code và hình ảnh
- Những khái niệm phức tạp có thể được giải thích dễ dàng hơn thông qua ví dụ code hoặc hình ảnh
- Giống như câu “một bức hình đáng giá hơn trăm lời nói”, tư liệu trực quan là công cụ rất mạnh để hỗ trợ việc hiểu
6. Sử dụng số liệu thống kê thực tế
- Những cách diễn đạt mơ hồ hoặc lời hứa trừu tượng khó tạo được niềm tin
- Cần đưa ra số liệu cụ thể về hiệu năng, kích thước, tốc độ, v.v.
-
Ví dụ: dùng số liệu thực tế của Nano ID
- Chứng minh kích thước: Nano ID nhỏ chỉ 141 byte → đưa ra con số rõ ràng
- Chứng minh tốc độ: Nano ID nhanh hơn UUID 16% → đưa ra kết quả benchmark
- Mẹo sử dụng số liệu thống kê hiệu quả
- Cung cấp dữ liệu hiệu năng đã được định lượng → tăng độ tin cậy
- Nêu rõ kết quả benchmark → nhấn mạnh sự khác biệt so với sản phẩm khác
- Hiệu năng API hoặc cách sử dụng cũng cần được trình bày rõ ràng bằng ví dụ thực tế
- Hiệu năng, kích thước, tốc độ, v.v. cần được chứng minh bằng số liệu và dữ liệu cụ thể
7. Cung cấp hướng dẫn bắt đầu theo từng bước
- Khi ưu điểm của dự án đã được truyền đạt rõ ràng, bước tiếp theo là cung cấp cách sử dụng cụ thể
- Sau khi đọc README và thấy hứng thú với dự án, người dùng cần có thể chuyển sang bước tiếp theo một cách tự nhiên
-
Mẹo viết hướng dẫn bắt đầu hiệu quả
- Cung cấp hướng dẫn từng bước cụ thể
- Thay vì mô tả mơ hồ như "Hãy dùng PostCSS", hãy đưa ra các bước rõ ràng và cụ thể
- Ghi rõ lệnh cần dùng và cách cấu hình ở từng bước
- Cung cấp lộ trình thay thế
- Đưa ra các cách tiếp cận khác nhau tùy tình huống của người dùng
- Ví dụ: thêm cách xử lý nếu PostCSS chưa được cài đặt
- Cung cấp các phần dành cho từng nhóm người dùng
- Đưa ra hướng dẫn phù hợp riêng cho người dùng thư viện lớn và thư viện nhỏ
- Cung cấp hướng dẫn từng bước cụ thể
-
Bắt buộc phải kiểm thử
- Cần tự mình làm theo hướng dẫn đã viết để kiểm tra xem nó có thực sự hoạt động tốt không
- Nếu có thể, hãy quên đi kiến thức nền về dự án và làm lại từ đầu như người mới hoàn toàn
- Nếu phát sinh vấn đề, hãy sửa và bổ sung ngay
- Cần tự mình làm theo hướng dẫn đã viết để kiểm tra xem nó có thực sự hoạt động tốt không
Chiến lược quảng bá mã nguồn mở hiệu quả
1. Tầm quan trọng của việc quảng bá lặp lại
- Nhiều người mắc những sai lầm như sau
- Chỉ đăng một lần trên mạng xã hội
- Không có phản hồi
- Cảm thấy chán nản
- Dừng dự án
- Một đợt quảng bá lớn chỉ làm một lần không hiệu quả → cần quảng bá dần dần và lặp lại
- Chu kỳ quảng bá lặp lại hiệu quả
- Tạo nội dung như phát hành tính năng mới, bài blog, bài đăng mạng xã hội
- Nhận phản hồi từ người dùng
- Chỉnh sửa dự án dựa trên phản hồi
- Tạo nội dung mới về các thay đổi → rồi lặp lại từ đầu
- Ở giai đoạn đầu, số lượng người dùng ít lại là một lợi thế → có thể chỉnh sửa mà không bị áp lực
- Cải tiến liên tục và quảng bá lặp đi lặp lại sẽ giúp tăng độ nhận biết
2. Chiến lược quảng bá trên mạng xã hội hiệu quả
- Đừng chỉ chia sẻ liên kết hoặc kết thúc bằng một mô tả ngắn
- Hãy bao gồm 2 điều sau
- Ví dụ code hoặc hình ảnh → giúp mọi người dễ hiểu
- Mô tả dự án rõ ràng → ngay cả người dùng mới cũng có thể hiểu
-
Ví dụ mẫu bài quảng bá
- Công bố tính năng mới → mô tả rõ ràng → kèm ví dụ code → chia sẻ lên mạng xã hội
- Đăng lên các subreddit liên quan trên Reddit (kiểm tra quy định của từng subreddit)
- Đăng lên Hacker News → có thể giành được traction ban đầu
- Viết bài trên Dev.to, Smashing Magazine, CSS-Tricks, v.v. → mở rộng độ phủ
3. Chiến lược quảng bá thông qua PR
- Gửi PR để tích hợp mã nguồn mở của mình vào các dự án khác
- Ví dụ: PostCSS đã quảng bá thành công nhờ PR vào các dự án khác
- "Nếu cần giúp đỡ, tôi có thể thử áp dụng công cụ này."
- Nếu PR được chấp nhận, hãy ghi rõ trường hợp áp dụng trong README → tăng độ tin cậy
- Việc nêu rõ rằng công cụ của bạn đang được dùng trong các dự án nổi tiếng sẽ củng cố niềm tin
4. Lặp lại nhưng đừng spam
- Cần quảng bá lặp lại một cách liên tục
- Tuy nhiên, tuyệt đối không được spam
- Đừng lặp lại cùng một thông điệp, mà phải mang đến giá trị mới
- Nội dung cần bao gồm thay đổi và sự phát triển mới
- Không phải mọi người dùng đều đọc mọi bài đăng → cần quảng bá lặp lại định kỳ dưới nhiều hình thức khác nhau
Vì sao cần quảng bá lặp lại
- Mọi người không chọn công cụ một cách hoàn toàn lý trí
- Quảng bá lặp lại giúp hình thành nhận biết một cách tự nhiên
- Cần xây dựng độ nhận biết trong thời gian dài thì mới có khả năng thành công
Phần thưởng thêm
1. Cách xử lý vấn đề khi dự án trở nên nổi tiếng
- Khi dự án trở nên phổ biến, số lượng issue cần xử lý có thể tăng bùng nổ
- Nếu cố tự mình giải quyết mọi vấn đề, gánh nặng sẽ tăng lên và có thể dẫn đến cảm giác chán nản cùng với giảm năng suất
-
Giải pháp
- Đừng cố trực tiếp giải quyết mọi vấn đề → hãy khuyến khích người dùng viết PR
- Hỏi rằng: "Nếu bạn muốn giải quyết vấn đề này, bạn có thể gửi PR không?"
- Đặt ra thời lượng xử lý vấn đề (ví dụ: 15 phút mỗi ngày) và chỉ làm trong khung thời gian đó
- Với vấn đề khó, đừng cố giải quyết ngay mà hãy trả lời "Tôi đang xem xét phương án giải quyết" → chỉ cần biết rằng bạn đã nhận biết vấn đề, người dùng cũng sẽ yên tâm hơn
- Việc sửa tài liệu cũng có thể giao cho người dùng → hãy hỏi: "Bạn có thể sửa phần này không?"
2. Cách đối phó với phản hồi tiêu cực
- Phản hồi tiêu cực có thể làm giảm động lực
- Ở giai đoạn đầu của dự án, phản hồi tiêu cực có thể làm mất hứng; khi dự án nổi tiếng hơn, nó có thể làm suy giảm sự tự tin
-
Chiến lược ứng phó
- Đừng phản ứng theo cảm xúc
- Hãy đặt câu hỏi trước lời chỉ trích → hỏi: "Vì sao bạn nghĩ B tốt hơn A?"
- Nhiều lời chỉ trích chỉ đơn thuần là bộc lộ cảm xúc → hãy thử đối thoại với người dùng để xây dựng niềm tin
- Bạn có thể tìm thấy cơ hội cải thiện từ chính những lời phê bình
3. Chiến lược đối phó khi xuất hiện dự án cạnh tranh
- Không cần lo lắng khi có dự án cạnh tranh xuất hiện
- Khi có dự án cạnh tranh, sẽ có những lợi ích như sau
- Bạn có thể bớt gánh nặng phải duy trì dự án
- Cạnh tranh có thể tạo ra giải pháp tốt hơn → cuối cùng người dùng cũng được lợi
- Mục tiêu cuối cùng của mã nguồn mở là thay đổi thế giới → không phải độc quyền hay thống trị
- Dự án cạnh tranh xuất hiện → công cụ tốt hơn ra đời → tình huống đôi bên cùng có lợi
Tóm tắt cuối cùng
Cách tạo ra mã nguồn mở nổi tiếng và tăng khả năng được nhìn thấy
- Lý do tốt nhất để làm mã nguồn mở không phải là danh tiếng hay làm đẹp CV, mà là để thay đổi thế giới
- Không có gì đảm bảo rằng một ý tưởng hay sẽ trở thành dự án nổi tiếng
- Công thức độ nổi tiếng của dự án mã nguồn mở = mức độ nhận biết + quảng bá + lợi ích cho người dùng + may mắn
- Tài khoản mạng xã hội cần được duy trì tích cực, dễ tìm kiếm và viết bằng ngôn ngữ được dùng rộng rãi như tiếng Anh
Cách viết tài liệu hiệu quả
- README và tài liệu cần được viết rõ ràng, tự nhiên như đang giải thích cho một người bạn
- Dùng chữ nhấn mạnh, danh sách và cấu trúc có hệ thống để truyền đạt dần dần những thông tin phức tạp
- Cần cung cấp bằng chứng cụ thể như benchmark thực tế và ví dụ code
- Nếu có thể, hãy cung cấp hướng dẫn bắt đầu cụ thể cho cả người mới lẫn người dùng nâng cao
Chiến lược quảng bá
- So với một đợt quảng bá lớn chỉ làm một lần, quảng bá lặp lại hiệu quả hơn nhiều → phát hành → nhận phản hồi → cải thiện → lặp lại
- Đăng đều đặn nhưng tránh spam
- Viết bài đăng có kèm ví dụ code và hình ảnh
- Gửi PR vào các dự án khác để tối đa hóa hiệu quả quảng bá
Mẹo khi dự án trở nên nổi tiếng
- Đừng cố tự giải quyết mọi vấn đề, hãy hướng người dùng gửi PR
- Đặt ra một khoảng thời gian cố định để xử lý vấn đề (ví dụ: 15 phút mỗi ngày)
- Nếu gặp phản hồi tiêu cực, hãy đặt câu hỏi để mở đối thoại
- Đừng sợ các dự án cạnh tranh → đôi khi cạnh tranh còn giúp bạn bớt gánh trách nhiệm hơn
1 bình luận
Có lẽ cũng quan trọng là tìm ra những nơi chấp nhận kiểu quảng bá với nội dung hơi khác nhau một chút, nhưng nhìn từ xa thì mang tính lặp lại. Ví dụ như Twitter.