Chương 3 / 8 ◆ ~8 phút đọc

Chương 3: Rewrite Sạch Không Phải Chép Lại Bằng Trí Nhớ

Khải không thể sáng ngủ dậy rồi “viết lại từ đầu” như trong những câu chuyện khởi nghiệp người ta hay kể. Trước khi gõ dòng code đầu tiên cho một sản phẩm mới, anh phải biết mình được phép mang những gì theo.

“Nếu công ty LearnVN sở hữu phần lớn code và sở hữu trí tuệ của sản phẩm,” luật sư Lê Minh Anh nói, “em không thể tự lấy mã nguồn hiện tại ra ngoài rồi gọi đó là bản viết lại của riêng em.”

“Nhưng em là nhà sáng lập.”

“Nhà sáng lập không có nghĩa là chủ sở hữu cá nhân của mọi tài sản công ty.”

Khải ngồi im. Đây là điều khó chấp nhận nhất. Vài tuần sau sự cố, hội đồng quản trị giữ cho công ty tiếp tục hoạt động trong lúc tranh chấp với Kiệt được giải quyết, còn quan hệ giữa hai nhà sáng lập thì gần như không thể cứu vãn. Khải muốn rời đi. Nhưng nếu ra đi, sản phẩm mới của anh không thể được dựng bằng cách bê theo chính thứ code công ty mà anh đang tố Kiệt đã bê.

Minh Anh vạch ra một cấu trúc rõ ràng. Khải có thể phát triển một dự án giáo dục mới dựa trên kiến thức và kỹ năng chung của mình, các tiêu chuẩn và giao diện lập trình công khai, bộ yêu cầu sản phẩm do anh viết lại, các nghiên cứu người dùng mới, các thành phần mã nguồn mở theo đúng giấy phép, và nội dung mà anh hoặc công ty mới có quyền sử dụng. Anh không được dùng mã nguồn LearnVN đang tranh chấp làm tài liệu tham khảo khi chưa có quyền rõ ràng, và không được dựa vào trí nhớ để dựng lại cấu trúc cơ sở dữ liệu hay code nội bộ thành bản tương đương từng mô-đun, nếu đó là tài sản mật.

“Đến trí nhớ cũng bị cấm à?” Khải hỏi.

“Không ai bắt em quên nghề,” Minh Anh đáp. “Nhưng viết lại theo kiểu ‘phòng sạch’ không phải trò giả vờ chưa từng thấy code. Mục tiêu là tạo ra hồ sơ chứng minh phần triển khai mới dựa trên đặc tả và đầu vào hợp lệ, không chép cách viết độc quyền hay chi tiết bí mật.”

Khải không làm một mình. Anh mời Hà Phương, kỹ sư cấp cao từng phụ trách bảo mật và nền tảng sản phẩm ở một công ty khác, về làm trưởng nhóm kỹ thuật cho dự án mới. Đọc bản mô tả xong, Phương nói thẳng: “Nếu anh vừa viết đặc tả vừa tự tay viết những mô-đun giống hệt LearnVN, lập luận ‘phòng sạch’ vẫn sẽ bị đặt dấu hỏi.”

“Vậy phải làm sao?”

“Tách càng rõ càng tốt. Đặc tả sản phẩm chỉ mô tả hành vi, ràng buộc và yêu cầu công khai. Nhóm viết code không mở mã nguồn cũ. Với những phần anh nhớ quá chi tiết, đừng đọc cho người khác chép từng dòng thiết kế.”

Khải khó chịu ra mặt. “App cũ là thứ tôi xây.”

“Và hiện giờ anh đang tranh chấp quyền sử dụng nó với công ty và người đồng sáng lập. Nếu muốn dự án mới sạch thì đừng chọn con đường dễ nhất.”

Họ đặt tên tạm cho dự án là LearnFree, chưa chắc sẽ giữ. Khải muốn làm mã nguồn mở. Phương hỏi ngay: “Giấy phép gì?”

Khải khựng lại. “Thì mã nguồn mở thôi.”

“Mã nguồn mở không phải cứ bấm nút công khai kho mã là xong.”

Họ mời luật sư chuyên về mã nguồn mở rà soát. Phải chọn giấy phép phù hợp với mục tiêu, xử lý các thư viện phụ thuộc của bên thứ ba, quyết định cách người đóng góp ký xác nhận, rồi còn thương hiệu, quy trình báo lỗi bảo mật, cơ chế quản trị, giấy phép cho nội dung, giấy phép cho dữ liệu và mô hình. Dữ liệu người dùng thì vẫn phải được giữ riêng tư theo đúng nghĩa vụ.

“Code mở thì dữ liệu có mở không anh?” một bạn thiết kế hỏi.

“Không,” Khải đáp ngay. “Giấy phép code không cho ai quyền gì với dữ liệu người dùng.” Đó là câu anh học được bằng cách đau nhất.

Giai đoạn một không phải một app hoàn chỉnh. Nhóm viết bộ yêu cầu sản phẩm mới từ đầu: một bộ máy bài học cơ bản, tài khoản và tiến độ học ở mức tối thiểu. Chế độ ngoại tuyến được xếp vào danh sách làm sau. Phần chấm phát âm chưa đưa vào bản đầu tiên vì dữ liệu, mô hình, giấy phép và quyền riêng tư đều quá phức tạp. Không trò chơi hóa toàn bộ, không bảng xếp hạng khi chưa hiểu tác động, chuyện gian lận và quyền riêng tư của học sinh.

Khải phản đối lúc đầu. “Chuỗi ngày học liên tục là thứ giữ chân người dùng của LearnVN đấy.”

“Anh có bằng chứng mới cho LearnFree không, hay anh đang chép một giả định sản phẩm cũ?” Phương hỏi. Khải im lặng.

Họ làm nghiên cứu người dùng với giáo viên và học viên trưởng thành, và tính trước cách xin đồng ý phù hợp nếu sau này làm việc với trẻ em. Không dùng cơ sở dữ liệu người dùng của LearnVN, không gửi email cho hàng triệu người mời chuyển sang app mới. Khải phải xây dựng lại cộng đồng từ đầu qua các kênh công khai. Đau, nhưng sạch hơn.

Kho mã mới bắt đầu bằng các bản ghi quyết định kiến trúc. Không phải vì viết tài liệu là một đức tính, mà vì cả nhóm cần nhớ tại sao mình đã chọn thứ này thay vì thứ kia. Khải cũng không ép đổi công nghệ chỉ để chứng minh code là mới. Có hôm anh buột miệng: “Hay mình viết bằng Rust, nghe khác hẳn.”

Phương nhìn anh. “Ngôn ngữ lập trình không phải giấy chứng nhận độc lập.” Họ chọn công nghệ theo năng lực của nhóm, khả năng bảo trì và nhu cầu hiệu năng, không theo tâm lý trả đũa. Có phần dùng công nghệ quen thuộc, có phần đổi. Thứ chứng minh bản viết lại sạch nằm ở quy trình và nguồn gốc, không ở việc đổi sang ngôn ngữ khác.

Khải còn muốn mang theo mô hình nhận diện phát âm anh từng làm ở LearnVN. Minh Anh hỏi: “Trọng số mô hình, code huấn luyện và tập dữ liệu thuộc về ai?” Khải không biết hết. Dữ liệu gồm những bản ghi âm của giáo viên và học sinh cũ, với một số mẫu đồng ý không đủ để phân phối lại dưới dạng mã nguồn mở. “Vậy thì không mang,” anh nói.

Bản đầu tiên của LearnFree ra mắt sau nhiều tháng, không phải ba tháng thần tốc. Ban đầu chỉ có bản thử nghiệm trên web và điện thoại cho một nhóm người dùng mới tự đăng ký. Không có năm nghìn sao trên GitHub trong tuần đầu; sau một tháng, kho mã nhận được vài trăm sao, chủ yếu từ cộng đồng lập trình viên Việt Nam. Có ba pull request tốt, hai cái bị từ chối vì chất lượng chưa đạt. Một lỗi bảo mật được người phát hiện gửi riêng theo đúng chính sách, không công bố cách khai thác ra ngoài, và Phương xử lý nó.

Nhìn dự án, Khải nhận ra mã nguồn mở không làm quyền sở hữu biến mất. Nó làm quyền sử dụng code rõ ràng hơn theo giấy phép, nhưng vai trò duy trì dự án, thương hiệu, dữ liệu và thông tin đăng nhập vẫn cần được quản trị.

Ngày phát hành bản thử nghiệm, Khải viết ghi chú: “LearnFree là một bản triển khai độc lập, xây dựng từ đặc tả mới và code mới hoàn toàn. Dự án không chứa dữ liệu người dùng, nội dung riêng hay mã nguồn đang tranh chấp của LearnVN.” Minh Anh duyệt từng chữ. Anh không viết “Tôi viết lại mọi thứ từ đầu vì kẻ trộm đã lấy code của tôi”, vì câu ấy vừa cảm tính vừa sai về quyền sở hữu.

Khải nhìn lịch sử commit mới. Không chỉ có mình anh: có Phương, hai kỹ sư, bạn thiết kế và những người đóng góp bên ngoài. Anh thấy nhẹ lòng.

Viết lại một cách sạch sẽ không phải để chứng minh anh có thể làm mọi thứ một mình. Nó là để chứng minh sản phẩm mới có nguồn gốc quyền rõ ràng hơn sản phẩm cũ.

Đã đọc xong

Chương 3 / 8

Câu chuyện vẫn còn phía trước.

Đọc chương tiếp
Home Trước Sau
Đọc tiếp chỗ đang dở? Bạn đã đọc một phần chương này.
Cài đặt Đọc truyện
Cỡ chữ
Giãn dòng
Độ rộng trang đọc
Kiểu Chữ
Phông Nền
💬 Bình luận đoạn
Đang tải bình luận...