Featured image of post Làm thế nào để chọn gói Open Source cho phần mềm doanh nghiệp? Hướng dẫn giảm thiểu rủi ro giấy phép và kiến trúc từ MIT, BSD đến Apache 2.0

Làm thế nào để chọn gói Open Source cho phần mềm doanh nghiệp? Hướng dẫn giảm thiểu rủi ro giấy phép và kiến trúc từ MIT, BSD đến Apache 2.0

Làm thế nào để chọn giấy phép mã nguồn mở khi phát triển phần mềm doanh nghiệp? Bài viết này phân tích chuyên sâu sự khác biệt giữa MIT, BSD, Apache 2.0 và GPL, đặc biệt tập trung vào tầm quan trọng của việc bảo vệ bằng sáng chế. Nó cũng cung cấp các chiến lược phòng thủ ở cấp độ kiến trúc sư (chẳng hạn như Adapter Pattern) để giúp bạn tránh được những cạm bẫy của mã nguồn mở.

Với tư cách là kỹ sư phần mềm hoặc kiến trúc sư, chúng ta thường ưu tiên hiệu quả trong quá trình phát triển. Khi nhìn thấy một gói mã nguồn mở mạnh mẽ trên GitHub với nhiều sao và tài liệu hướng dẫn đẹp mắt, ngón tay của chúng ta thường theo bản năng gõ pnpm add hoặc npm install.

Nhưng bạn đã bao giờ nghĩ rằng những công cụ dường như “miễn ph픓tự do” này có thể ẩn chứa một quả bom hẹn giờ có khả năng đẩy công ty của bạn vào rủi ro vi phạm bằng sáng chế chưa?

Trong phát triển phần mềm thương mại, ngoài khả năng kỹ thuật, chúng ta nên hiểu những sắc thái đằng sau các giao thức mã nguồn mở (Giấy phép) này như thế nào?

Hiểu ranh giới của “Thân thiện với thương mại”

Trong thế giới mã nguồn mở, không phải lúc nào “miễn phí” cũng giống nhau. Chúng ta thường chia các giấy phép phổ biến thành hai phe chính:

1. Vô cùng thân thiện với thương mại (Permissive Licenses)

Tinh thần cốt lõi của loại giấy phép này là: “Hãy lấy đi và sử dụng nó, chỉ cần nhớ nói rằng tôi đã viết nó và xin đừng đến tìm tôi nếu có sự cố xảy ra.” Đối với các công ty phát triển sản phẩm để bán, thứ này giống như “tờ rơi miễn phí” được phát trên đường phố; bạn có thể sử dụng chúng làm bệ lót cho hộp cơm trưa của mình, gấp chúng thành những chiếc máy bay giấy hoặc thậm chí đóng gói lại chúng thành các sản phẩm tinh xảo của bạn.

Giấy phép Mô tả
MIT Đơn giản nhất, tự do tối đa (ví dụ: React, Vue).
BSD (2/3-Clause) Giống như anh em của MIT, nhưng nhấn mạnh nhiều hơn đến miễn trừ trách nhiệm pháp lý.
Apache 2.0 Là lựa chọn ưu tiên cho các doanh nghiệp, vì nó bao gồm thêm sự bảo vệ “giấy phép bằng sáng chế”.

2. Sử dụng vào mục đích thương mại cần thận trọng (Copyleft Licenses)

Các giấy phép này mang tính “lan truyền”. Nổi tiếng nhất là loạt bài GPL.

Điều này giống như tham gia một “lời thề máu”. Chỉ cần bạn tham khảo hoặc sửa đổi loại mã này trong cơ sở mã của mình, theo các quy tắc, toàn bộ sản phẩm của bạn có thể phải sử dụng “họ” của chúng, điều đó có nghĩa là bạn buộc phải mở mã nguồn của mình.

“Bẫy bằng sáng chế” của các giấy phép tối giản: Tại sao MIT và BSD không đủ an toàn?

Nhiều người nghĩ: “MIT rất tự do; nó chắc chắn tuyệt đối an toàn để sử dụng cho mục đích thương mại, phải không?” Tuy nhiên,

“Bản quyền (Copyright)” không bằng “Bằng sáng chế (Patent)”.

Giấy phép MIT và BSD rất ngắn gọn. Chúng chủ yếu cấp phép cho bạn sao chép văn bản mã. Nhưng trong khoảng trống pháp lý, tác giả ban đầu thực sự có thể tuyên bố:

“Tôi đã cho phép bạn sao chép mã văn bản, nhưng tôi không nói rằng bạn có thể sử dụng miễn phí các bằng sáng chế kỹ thuật có trong mã!”

Ngược lại, Apache 2.0 đi kèm với “món quà của một thỏa thuận đình chiến”. Nó có hai cách phòng thủ cực kỳ mạnh mẽ được tích hợp sẵn:

Khoản mục Nội dung
Cấp bằng sáng chế rõ ràng Khi các tác giả ban đầu phát hành mã, họ sẽ ký tên và cam kết rằng các bằng sáng chế công nghệ của họ cũng sẽ được trao cho bạn cùng một lúc.
Điều khoản trả đũa bằng sáng chế (Răn đe hạt nhân) Nếu ai đó sử dụng mã này để kiện tác giả gốc vì vi phạm bằng sáng chế, họ sẽ tự động mất tất cả các khoản tài trợ bằng sáng chế cho phần mềm đó. Điều này thiết lập một “lệnh ngừng bắn bằng sáng chế” ngầm giữa mọi người, và các công ty lớn (như Google, Amazon) đặc biệt ưa chuộng nó.

Khi những gã khổng lồ đám mây đụng độ với những người tạo mã nguồn mở

Bạn có thể đã nghe tin tức về việc MongoDB hoặc Elasticsearch thay đổi giấy phép của họ. Đó là vì những gã khổng lồ lưu trữ đám mây (chẳng hạn như AWS) đã quá quen với việc “đi nhờ”.

Những gã khổng lồ này sử dụng các gói mã nguồn mở để xây dựng các dịch vụ được lưu trữ và kiếm nhiều tiền, nhưng lại ít trả lại cho người sáng tạo. Vì vậy, các nhà sáng tạo bắt đầu phản công bằng những điều khoản như SSPL:

Bạn có thể sử dụng nó, nhưng nếu bạn muốn bán phần mềm của tôi dưới dạng dịch vụ (SaaS) cho người khác, bạn cũng phải mở mã nguồn của toàn bộ cơ sở hạ tầng đám mây của mình.

Điều này có hiệu quả trong việc ngăn cản các công ty công nghệ lớn trực tiếp bán lại các chức năng mới nhất và buộc người dùng chuyển sang các dịch vụ SaaS chuyên nghiệp của nhà sản xuất.

Chiến lược phòng thủ của Kiến trúc sư: Xây dựng “Tường lửa”

Với tư cách là một kiến trúc sư, bạn nên làm gì nếu yêu cầu bắt buộc bạn phải sử dụng gói rủi ro cao hoặc một gói có tranh chấp bằng sáng chế?

Chúng ta không chỉ phải biết cách chọn mà còn phải biết định hình “Tường lửa”. Có một cách tiếp cận cổ điển nhất là sử dụng “Mô hình Thiết kế Bộ điều hợp (Adapter Pattern)”.

Nói một cách đơn giản, đừng gọi trực tiếp gói đó trong quá trình xử lý logic nghiệp vụ của bạn. Đầu tiên, bạn định nghĩa một giao diện lớp trừu tượng (abstract layer interface). Điều này giống như là bạn khoét một lỗ cho phích cắm vào tường. Dù nguồn điện đằng sau ổ cắm là lưới điện quốc gia (Gói A) hay mạng kết nối từ máy phát (Gói B), thiết bị điện (logic công việc) của bạn không nhìn thấy nguồn là gì và nó như nào cả.

Bằng cách sử dụng đảo ngược sự phụ thuộc (Dependency Inversion) để tách rời khối lượng nghiệp vụ kinh doanh khỏi các mã phân phối của các nguồn phụ thuộc khác, nếu bạn xảy ra sự cố từ các giấy phép bản quyền hay việc bạn thất bại trong việc thiết lập sự thỏa thuận về giá sau này, bạn chỉ cần triển khai lại bộ điều hợp đó (Adapter) để nhanh chóng hoán đổi gói và khiến phần mềm có khả năng “chạy trốn nhanh nhất có thể”.

Kết luận: Phải có khung móng vững chắc mới xây được nhà chọc trời

Việc lựa chọn giấy phép mã nguồn mở phù hợp cũng giống như đặt nền tảng thích hợp; chỉ với một nền tảng ổn định, bạn mới có thể yên tâm xây dựng một tòa nhà cao tầng.

Lần tới, trước khi đưa một gói lạ vào, hãy nhớ tạm dừng, xem qua tệp LICENSE, xác minh xem đó là loại giấy phép gì và đánh giá các rủi ro cấp bằng sáng chế cơ bản. Bằng cách rèn giũa ý thức phòng thủ bản quyền chặt chẽ cũng như kết hợp phương pháp đảo ngược bảo vệ dữ liệu với tư cách của “kiến trúc sư cấp cao” đúng chức vụ. Khi đó chúng ta mới có thể có các bước tiến vững chắc được đảm bảo chất lượng cùng sự thành công tại tất cả các cung đường cập nhật kỹ thuật lặp lại cực khốc liệt ngay chính tại lĩnh vực công nghệ số đa phần hiện thực này!

Reference

All rights reserved,未經允許不得隨意轉載
Built with Hugo
Theme Stack thiết kế bởi Jimmy