054.3 Bài 1
Chứng chỉ: |
Open Source Essentials |
---|---|
Phiên bản: |
1.0 |
Chủ đề: |
054 Mô hình kinh doanh Mã nguồn Mở |
Mục tiêu: |
054.3 Tuân thủ và Giảm thiểu Rủi ro |
Bài học: |
1 trên 1 |
Giới thiệu
Có một câu nói đùa thường nghe về mã nguồn mở rằng “Phần mềm Tự do nhưng lại không thể dùng một cách 'tự do'” ("Free software doesn’t come for free"). Mặc dù phần mềm mã nguồn mở và tự do cho phép chúng ta thoả thích đổi mới và sáng tạo nhưng người dùng và nhà phát triển vẫn sẽ phải tuân thủ một số quy tắc. Bài học này sẽ đề cập đến sự tuân thủ và những rủi ro trong phần mềm mã nguồn mở.
Bài học này sẽ liệt kê các bước cơ bản mà nhà phát triển cần tuân thủ về giấy phép, rủi ro khi sử dụng phần mềm mã nguồn mở và cách theo dõi cũng như lập danh mục phần mềm mà tổ chức đang sử dụng. Chúng ta sẽ xem cách một Văn phòng Chương trình Mã nguồn Mở (Open Source Program Office - OSPO) chuyển các tác vụ này thành chính sách và thúc đẩy chúng như thế nào.
Các Yêu cầu trong việc Phát hành Phần mềm dựa trên các Thành phần Mã nguồn Mở
Nếu một tổ chức sử dụng phần mềm trong phạm vi nội bộ, các giấy phép phần mềm mã nguồn mở và tự do sẽ không áp đặt bất kỳ một yêu cầu nào. Tổ chức có thể xác định các quy tắc của riêng mình để ngăn ngừa các lỗ hổng và đảm bảo rằng mọi người đều sử dụng cùng một thành phần cũng như nhiều lý do khác. Những điều trên nằm ngoài phạm vi của bài học này. Bất kỳ yêu cầu nào mà các giấy phép mã nguồn mở hoặc chính tổ chức áp đặt đối với việc sử dụng phần mềm đều phải được ghi lại và tổ chức sẽ phải cung cấp quy trình đào tạo về các chính sách của mình.
Ngay cả khi tổ chức chạy phần mềm trên máy chủ web của mình và cung cấp các dịch vụ có tương tác với người dùng bên ngoài tổ chức, hầu hết các giấy phép phần mềm mã nguồn mở và tự do đều sẽ không áp đặt bất kỳ yêu cầu gì. Tuy nhiên, Giấy phép Công cộng Chung GNU Affero sẽ yêu cầu tuân thủ các quy định copyleft đối với phần mềm chạy dưới dạng dịch vụ.
Các yêu cầu pháp lý của mỗi một giấy phép phần mềm mã nguồn mở và tự do phổ biến đều đã được trình bày đầy đủ trong các bài học khác; vì vậy, phần này sẽ chỉ cung cấp một danh sách các hành vi mà các nhà phát triển và nhà quản lý nên thực hiện để tuân thủ:
- Kiểm tra các thành phần mã nguồn mở
-
Tổ chức cần có các chính sách và quy trình đào tạo rõ ràng về việc sẽ sử dụng phần mềm mã nguồn mở nào và vị trí nơi triển khai phần mềm đó trong sản phẩm. Các chính sách như vậy bao gồm việc tuân thủ cũng như các vấn đề khác như đảm bảo an ninh và việc tham gia vào cộng đồng phát triển phần mềm.
- Giữ nguyên giấy phép gốc trong mã
-
Các nhà phát triển không được xóa giấy phép khỏi thành phần mà họ sử dụng. Việc đưa giấy phép vào mã nguồn thường là một yêu cầu bắt buộc trong giấy phép. Trên thực tế, việc xóa giấy phép có thể bị coi là đạo nhái vì nhà phát triển đang vờ như chính họ là người đã viết mã. Việc xóa giấy phép cũng có thể dẫn đến nhiều rắc rối nghiêm trọng sau này vì tổ chức có thể đã vi phạm giấy phép khi đưa mã vào sản phẩm của họ.
- Theo dõi giấy phép
-
Tổ chức phải duy trì một danh mục hiển thị giấy phép của từng tệp hoặc gói mà tổ chức sử dụng để đảm bảo rằng chúng tuân thủ các giấy phép.
- Ghi công Tác giả
-
Gần như tất cả các giấy phép đều yêu cầu ghi nhận công lao của chủ sở hữu bản quyền (thường được gọi là “tác giả”) khi thảo luận và quảng bá phần mềm. Mỗi giấy phép sẽ giải thích những gì cần đưa vào thông báo này: thông thường, chúng sẽ yêu cầu một thông báo bản quyền tiêu chuẩn có (thời gian) năm và tên của chủ sở hữu bản quyền. Thông báo này phải xuất hiện trong mọi tài liệu liên quan đến sản phẩm sử dụng thành phần bao gồm cả quảng cáo và trang web dành cho thiết bị hoặc chương trình.
- Không ám chỉ xác thực
-
Một số giấy phép BSD sẽ yêu cầu người phân phối sản phẩm có chứa các thành phần phải đảm bảo rằng họ không ám chỉ rằng chủ sở hữu bản quyền đã xác thực sản phẩm này. Ngay cả khi yêu cầu không được nêu ra, việc tuân thủ nó là một hành vi thuộc phạm trù đạo đức.
- Cung cấp mã nguồn cho các giấy phép copyleft
-
Nếu một tổ chức phân phối một tệp nhị phân chứa các thành phần copyleft — cho dù đó là bản phân phối phần mềm hay trên thiết bị — tổ chức đó sẽ phải cung cấp cho công chúng mã nguồn của các thành phần đó. Nếu tổ chức này thay đổi mã và tái phân phối sản phẩm phái sinh ở dạng nhị phân thì mã nguồn cho phiên bản đã được thay đổi (phái sinh) cũng phải được cung cấp cho công chúng. Việc phân phối có thể được thực hiện thông qua bất kỳ phương tiện nào giúp công chúng có thể dễ dàng truy cậpđược (như đăng mã trên trang web hoặc cung cấp mã trên một đĩa cứng hoặc ổ USB).
- Không đưa các thành phần copyleft vào các sản phẩm độc quyền
-
Nếu tổ chức đưa các thành phần copyleft vào một sản phẩm, trong một số trường hợp, tổ chức sẽ phải phát hành toàn bộ sản phẩm theo cùng một giấy phép copyleft. Các điều kiện kích hoạt yêu cầu này sẽ khác nhau tùy theo từng giấy phép. Tuy nhiên, đôi khi chúng ta sẽ không thể làm rõ được hình thức sử dụng nào sẽ kích hoạt yêu cầu copyleft. Vì vậy, ngoại trừ các tình huống rõ ràng — như sử dụng thư viện mã nguồn mở (sẽ không kích hoạt yêu cầu tương hỗ của copyleft) — các nhà phát triển cần rất cẩn thận khi sử dụng các thành phần copyleft trừ khi tổ chức đã chuẩn bị phát hành sản phẩm của mình theo cùng một giấy phép.
- Ghi lại các thay đổi trên mã
-
Khi phân phối các phiên bản mã đã qua sửa đổi, hãy nêu rõ những thay đổi mà tổ chức đã thực hiện.
- Cấp Quyền Bằng Sáng chế
-
Một số giấy phép phần mềm mã nguồn hoặc tự do sẽ yêu cầu cấp quyền sử dụng bằng sáng chế đối với phần mềm. Do đó, nếu một tổ chức phát hành mã theo giấy phép như vậy và nắm giữ bằng sáng chế đối với một số quy trình trong mã, tổ chức đó sẽ không thể tính phí hoặc áp dụng các biện pháp kiểm soát khác dựa trên bằng sáng chế của mình đối với bất kỳ ai sử dụng hoặc điều chỉnh mã.
- Tôn trọng Nhãn hiệu
-
Một số phần mềm mã nguồn mở sẽ được bảo hộ nhãn hiệu. Nhãn hiệu có thể bao gồm các từ và cụm từ, logo, hình ảnh cùng nhiều yếu tố khác. Một mặt, một tổ chức sẽ phải xử lý nhãn hiệu đúng cách đối với bất kỳ một phần mềm nào mà tổ chức đó sử dụng: một hành vi vi phạm phổ biến chính là nhại lại, thay đổi hoặc chỉ đơn giản là hiển thị nhãn hiệu mà không có sự cho phép. Mặt khác, nếu tổ chức đó muốn sử dụng nhãn hiệu, họ sẽ phải tuân thủ các yêu cầu của chủ sở hữu nhãn hiệu; điều này có thể loại trừ việc sửa đổi phần mềm.
Rủi ro của Phần mềm Mã nguồn Mở
Bài học này nói về sự tuân thủ; vì vậy, chúng ta sẽ tập trung chủ yếu vào những rủi ro trong phương diện này và chỉ một số ít trong các phương diện khác.
Vi phạm Giấy phép
Giấy phép phần mềm mã nguồn mở và tự do phải được coi trọng ngang với các giấy phép và hợp đồng khác. Các tổ chức thực thi chúng (như Tổ chức Bảo vệ Quyền Tự do Phần mềm) sẽ hoạt động thay mặt cho các dự án copyleft nhỏ lẻ không có cơ chế thực thi riêng.
Các tổ chức này thường coi việc kiện cáo như giải pháp cuối cùng. Hầu hết các vi phạm thường đều là vô tình và có thể dễ dàng giải quyết thông qua việc phổ cập kiến thức. Tuy vậy, việc một tổ chức bị coi là thiếu hiểu biết và vô cảm đối với các cộng đồng mà phần mềm của tổ chức đó phụ thuộc vào vẫn sẽ gây ảnh hưởng đến danh tiếng của chính tổ chức đó.
Có rất nhiều vụ kiện thực sự đã xảy ra khi một người dùng phần mềm từ chối hợp tác một cách trắng trợn và khi phần mềm và bên bị đơn đủ quan trọng.
Ngay cả khi một tổ chức không phải đối mặt với một vụ kiện, thiệt hại mà hành vi vi phạm giấy phép gây ra cho mối quan hệ của tổ chức đó với cộng đồng cũng như là danh tiếng của tổ chức có thể là rất lớn. Một dự án có thể đi lệch khỏi quỹ đạo bởi một chuyện đơn giản như việc các câu hỏi của nhà phát triển không được trả lời trên các diễn đàn dành riêng cho phần mềm mà họ đang cố gắng sử dụng.
Nó có thể sẽ trở thành một thảm họa đối với một cá nhân nào đó khi họ tìm thấy phần mềm copyleft trong một sản phẩm độc quyền. Để tuân thủ giấy phép, các nhà phát triển sẽ phải loại bỏ toàn bộ mã copyleft hoặc là giải phóng sản phẩm của họ theo giấy phép copyleft. Việc cung cấp phần mềm tự do với mã nguồn có sẵn có thể gây ra những tác động nghiêm trọng đến các mô hình kinh doanh dựa trên phí cấp phép hoặc các phương thức khác nhằm nắm giữ độc quyền giá trị của sản phẩm.
Niềm tin và Uy tín
Chúng ta đã thấy rằng việc vi phạm giấy phép có thể gây ra các thiệt hại rất lớn. Các loại hành vi khác làm mất lòng tin và danh tiếng cũng có thể gây ra nhiều rủi ro.
Có một số tổ chức phát hành phần mềm theo giấy phép phần mềm mã nguồn mở hoặc tự do, sau đó tại một thời điểm nào đó lại thông báo rằng các phiên bản trong tương lai sẽ được phát hành theo giấy phép độc quyền. Sự thay đổi này có thể sẽ khá hấp dẫn vì nhiều dự án nguồn mã mở không có đủ khách hàng và từ đó không có được đủ hỗ trợ về mặt tài chính.
Nhưng những thay đổi về giấy phép như vậy sẽ gây ra bất mãn cho cả phía khách hàng lẫn phía các nhà phát triển bên ngoài đóng góp vào dự án. Đôi khi, các nhà phát triển bên ngoài sẽ sử dụng phiên bản tự do và tiếp tục phát triển độc lập — phương hướng phát triển được gọi là phân nhánh (fork) dự án. Phiên bản tự do có thể sẽ trở nên cạnh tranh hơn so với phiên bản độc quyền của công ty và thu hút khách hàng rời xa công ty.
Việc tham gia diễn đàn dự án cũng có thể có rủi ro. Một công ty phải học cách để trở thành một công dân tốt. Các vấn đề phổ biến gồm có:
-
Cố gắng sử dụng các đóng góp về tài chính hoặc mã của một công ty làm đòn bẩy để buộc dự án đi theo hướng mà các nhà phát triển không mong muốn
-
Đưa ra quá nhiều yêu cầu đối với cộng đồng: chẳng hạn như gây áp lực với quá nhiều yêu cầu về tính năng hoặc thậm chí là quá nhiều câu hỏi
-
Có hành vi thô lỗ theo nhiều cách khác nhau và vi phạm quy tắc ứng xử của dự án
-
Cố gắng chi phối hoạt động quảng cáo hoặc lợi dụng sự thành công của dự án theo những cách không phù hợp
Đầu tư không được đền đáp
Các mô hình kinh doanh sẽ được thảo luận trong bài học khác; phần này sẽ chỉ tập trung lưu ý đến rủi ro tài chính khi tham gia vào các dự án mã nguồn mở.
Các công ty có thể bắt đầu hoặc tham gia các dự án mã nguồn mở với kỳ vọng thu được doanh thu thông qua một số cơ chế như hợp đồng hỗ trợ, hợp đồng SaaS, thu thập dữ liệu hoặc thậm chí là quyên góp và tài trợ. Thật không may, những người thực hiện các dự án mã nguồn mở thường thấy được rằng chúng ít sinh lợi hơn so với mong đợi. Tất nhiên bất kỳ doanh nghiệp nào cũng phải chấp nhận rủi ro khi bắt đầu một dự án mới, nhưng mã nguồn mở lại là lĩnh vực đặc biệt khó để tìm được một nguồn thu nhập đáng tin cậy.
Mã nguồn mở có vẻ bền vững nhất khi nó hỗ trợ một số hình thức thu nhập khác, chẳng hạn như việc bán thiết bị phần cứng, ô tô, máy in, v.v.
Phân nhánh
Như chúng ta đã thấy, các thành viên của một dự án đôi khi sẽ không thể thống nhất về lộ trình, tư cách lãnh đạo hoặc các khía cạnh khác của dự án và tạo ra một dự án thay thế trên cùng một cơ sở mã. Việc phân nhánh (forking) cũng có thể được thực hiện bởi một tổ chức để tạo ra một phiên bản chuyên biệt của phần mềm. Ví dụ: Android đã sử dụng một phiên bản Linux chuyên biệt do Google duy trì (Google cũng đóng góp rất nhiều cho phiên bản cốt lõi của Linux nhưng không phải lúc nào chúng cũng được chấp nhận).
Các tổ chức có thể tạo ra một nhánh vì nhiều lý do khác nhau. Họ có thể gửi các thay đổi của mình cho dự án cốt lõi và bị từ chối vì các nhà phát triển khác không thích chúng. Trong một dự án có giấy phép linh hoạt hoặc một dự án chỉ được sử dụng trong tổ chức, họ có thể sẽ muốn giữ bí mật về các thay đổi của mình.
Rủi ro của việc phânnhánh là các nhà phát triển của dự án nhánh sẽ phải chịu trách nhiệm bảo trì toàn bộ sản phẩm. Nếu các bản sửa lỗi quan trọng hoặc các tính năng mới được thêm vào dự án cốt lõi, các nhà phát triển của dự án nhánh sẽ phải sao chép các thay đổi hoặc từ bỏ các lợi ích từ chúng. Dần dần khi thời gian trôi qua và các dự án ngày càng tách biệt nhau, việc theo kịp các thay đổi trong dự án cốt lõi sẽ trở nên ngày càng khó khăn hơn.
Giấy phép không tương thích
Như đã giải thích trong các bài học khác, một số giấy phép phần mềm mã nguồn mở và tự do sẽ có các điều khoản không tương thích. Các thành phần như vậy không thể được sử dụng cùng nhau trong một sản phẩm.
Vấn đề này thường phát sinh trong quá trình sáp nhập hoặc mua lại. Có thể là mỗi công ty đã sử dụng phần mềm với một giấy phép cụ thể và nếu họ muốn kết hợp mã trong các dự án của mình, họ phải đảm bảo rằng các giấy phép tương thích với nhau.
Trách nhiệm Sản phẩm
Nhiều giấy phép phần mềm mã nguồn mở (và các điều khoản dịch vụ cho nhiều phần mềm và dịch vụ độc quyền) từ chối triệt để mọi trách nhiệm pháp lý đối với việc sử dụng phần mềm. Nói cách khác, giấy phép hoặc các điều khoản dịch vụ không cung cấp bất kỳ hình thức bảo hành hoặc đảm bảo nào.
Các nhà cung cấp phần mềm hiếm khi phải chịu trách nhiệm về các vấn đề liên quan đến phần mềm của họ, nhưng khách hàng đôi khi vẫn sẽ kiện họ hoặc thử các hình thức trừng phạt khác. Tòa án sẽ không cần phải công nhận các điều khoản “không bảo hành”.
Ngày càng có nhiều luật lệ và quy định áp đặt trách nhiệm lên các nhà sáng tạo phần mềm. Có thể thấy được những hạn chế pháp lý này — hoặc ít nhất là các đề xuất về hạn chế — hiện đang đặc biệt nhắm tới trí tuệ nhân tạo; tuy vậy, đôi khi những hạn chế này cũng được áp dụng trong một phạm vi rộng hơn.
Quy định Xuất khẩu
Có rất nhiều quốc gia hạn chế xuất khẩu hàng hóa và phần mềm. Đối với phần mềm, các quy định như vậy thường áp dụng cho các sản phẩm bảo mật và cụ thể là việc sử dụng mật mã. Hoa Kỳ từng kiểm soát rất chặt chẽ bất kỳ phần mềm nào có chứa mật mã, nhưng các biện pháp kiểm soát đã được nới lỏng đối với các dự án mã nguồn mở.
Các công ty nên lưu ý đến các quy định xuất khẩu tại nơi họ đang phát triển phần mềm trong trường hợp các quy định này ảnh hưởng đến việc bán và phân phối sản phẩm của họ.
Danh mục Vật liệu Phần mềm: Hiểu về thứ chúng ta đang sử dụng
Có nhiều sản phẩm thường đi kèm với một danh sách vật liệu — hiểu đơn giản là một danh sách tất cả các thành phần của chúng. Ví dụ: khi chúng ta mua một sản phẩm tiêu dùng, sản phẩm đó có thể bao gồm một tờ giấy liệt kê tất cả các bộ phận từ lớn đến nhỏ (thậm chí đến từng chiếc đai ốc và bu lông). Danh sách này có thể có chứa các thông tin hữu ích về các bộ phận như kích thước hay số vật liệu để người dùng có thể dễ dàng xác định và đặt mới nếu cần.
Các dự án mã nguồn mở hiện đều có một Danh mục Vật liệu Phần mềm (Software Bill of Materials - SBOM, phát âm là “S-bomb”). Một SBOM sẽ liệt kê ít nhất là thông tin về các gói, tên tệp, giấy phép, tác giả hoặc chủ sở hữu và số phiên bản. Nhiều SBOM còn đưa ra cả thông tin về các lỗ hổng bảo mật.
Các dự án sẽ tạo ra một SBOM cho mỗi một bản phát hành bằng các công cụ tự động. Người dùng có thể quét SBOM để tìm ra thông tin mà họ cần. Ví dụ: việc trích xuất giấy phép sẽ giúp một tổ chức nhanh chóng quyết định xem các thành phần có tương thích với mã của riêng họ hay không và liệu việc sử dụng các thành phần cho mã của họ có hợp pháp hay không.
Tương tự như vậy, việc trích xuất thông tin phiên bản trên mỗi gói sẽ giúp các tổ chức khám phá xem các phần khác nhau của sản phẩm có phụ thuộc vào các phiên bản khác nhau của một thư viện cụ thể hay không. Việc sử dụng hai phiên bản của một thư viện ít nhất cũng sẽ gây ra tình trạng "phình" (bloat). Nó cũng có thể gây ra lỗi hoặc nhầm lẫn nếu một thành phần được xây dựng sai phiên bản.
Tiêu chuẩn dành cho SBOM
Vì môi trường máy tính sử dụng số lượng thành phần rất lớn (đôi khi là hàng chục nghìn) và thay đổi thường xuyên, SBOM phải có cấu trúc cực kỳ tốt để thông tin có thể được trích xuất tự động và nhanh chóng. Ở phần này, chúng ta sẽ tìm hiểu hai định dạng phổ biến nhất trong thế giới mã nguồn mở:
- Trao đổi Dữ liệu Gói Phần mềm (Software Package Data Exchange - SPDX)
-
Định dạng này biểu diễn từng gói và toàn bộ nội dung của gói đó dưới dạng cấu trúc cây. Định dạng này ghi lại các mối quan hệ phụ thuộc giữa các tệp và các mối quan hệ khác. Các con trỏ thông tin — được gọi là các “snippets” — có thể được tạo và sau đó sử dụng trong toàn bộ tài liệu để thông tin chỉ cần được xác định ở một nơi. Định dạng này được phát triển bởi Tổ chức Linux (Linux Foundation).
- CycloneDX
-
Đây là một định dạng lớn hơn với các trường chi tiết hơn, đặc biệt là thông tin về lỗ hổng. Định dạng này được tạo ra bởi Dự án Bảo mật Ứng dụng Toàn cầu Mở (OWASP) và được sử dụng phổ biến trong quân đội cũng như các tổ chức khác tập trung vào vấn đề bảo mật. Ví dụ: mục nhập dành cho một tệp có thể bao gồm tên lỗ hổng bảo mật, nguồn thông tin về lỗ hổng, mục tiêu bị ảnh hưởng, v.v. Định dạng này cũng được thiết kế cho các triển khai đám mây có chứa tới hàng nghìn các hệ thống khác nhau.
Cả SPDX và CycloneDX đều tạo ra các cấu trúc phân cấp ở nhiều định dạng khác nhau bao gồm JSON và XML. Có nhiều công cụ cho từng tiêu chuẩn, vừa để tạo định dạng, vừa để quét các tệp đã tạo để tìm kiếm thông tin. Các trang kho lưu trữ kiểm soát phiên bản phổ biến sẽ cho phép các nhà phát triển tạo SBOM ở một trong các định dạng này chỉ với một cú nhấp chuột.
Phân tích Thành phần Phần mềm
Để biết một tổ chức đang sử dụng phần mềm nào, chúng ta cần phải đánh giá phần mềm của tổ chức đó. Đánh giá này sẽ bao gồm cả thông tin về nguồn gốc của phần mềm, các lỗ hổng mà phần mềm có, các giấy phép mà phần mềm sử dụng cũng như nhiều yếu tố khác giúp các cá nhân hoặc tổ chức quyết định xem có nên sử dụng phần mềm hay không. Nhiệm vụ này được gọi là Phân tích Thành phần Phần mềm (Software Composition Analysis - SCA); hiện này có rất nhiều công cụ có sẵn phục vụ việc quét một cách chi tiết các SBOM và chính bản thân phần mềm.
Một số công cụ sẽ trích xuất thông tin giấy phép để giúp tổ chức quyết định xem phần mềm có an toàn để đưa vào sản phẩm hay không, và liệu các thành phần có giấy phép tương thích với nhau hay không. Một số công cụ thậm chí còn so sánh các đoạn mã với các thư viện của nhiều dự án mã nguồn mở phổ biến để tìm hiểu xem mã có được lấy từ các dự án mã nguồn mở mà không ghi công tác giả một cách phù hợp hay không.
Việc chạy các công cụ này đặc biệt quan trọng trong quá trình sáp nhập hoặc mua lại. Công ty mua lại có thể sẽ thấy được rằng phần mềm mà họ muốn mua lại có giá trị không được như mong đợi vì nó có chứa các thành phần mã nguồn mở áp đặt nhiều yêu cầu can thiệp vào mục đích sử dụng dự kiến của nó trong công ty/ tổ chức mới.
Chính sách Chính thức và Tuân thủ
Các quy trình và kỹ thuật được mô tả trong bài học này nên được xây dựng bởi các nhà quản lý cùng với sự đóng góp của các nhà phát triển, luật sư và những cá nhân có kiến thức. Ở phần này, chúng ta sẽ tìm hiểu một số quyết định về chính sách liên quan đến phần mềm mã nguồn mở mà các tổ chức cần đưa ra. Chúng ta sẽ kết thúc với một mô tả về Văn phòng Chương trình Mã nguồn Mở (OSPO) — một yếu tố hỗ trợ quan trọng và một nguồn thông tin dành cho các chính sách.
Nguyên tắc Quản lý việc Sử dụng và Đóng góp của Phần mềm Mã nguồn Mở
Các tổ chức có thể được hưởng lợi rất nhiều từ việc sử dụng và đóng góp vào phần mềm mã nguồn mở, nhưng họ cũng cần phải làm việc này theo một số cách nhất định để bảo vệ lợi ích của chính họ cũng như mang lại lợi ích cho các dự án mã nguồn mở. Các chính sách nên được xác định cho:
-
Nơi sử dụng phần mềm mã nguồn mở (hoạt động điều hành, dự án nội bộ, sản phẩm hướng tới khách hàng, v.v.)
-
Điều làm cho một dự án mã nguồn mở phù hợp với tổ chức: tính năng, hiệu suất, tính bảo mật, lộ trình mở rộng trong tương lai và khả năng tồn tại của cộng đồng
-
Các bản quyét phân tích thành phần phần mềm và nơi lưu trữ tài liệu kết quả
-
Phần thưởng cho các nhà phát triển đóng góp vào phần mềm mã nguồn mở (bao gồm cả việc tham gia vào các diễn đàn cộng đồng)
-
Hướng dẫn đóng góp cho các dự án (bao gồm cách trở thành đại diện công khai của công ty)
-
Yêu cầu về tài liệu để các nhà phát triển bên ngoài nhóm cốt lõi có thể hiểu được cách đóng góp và tương tác
OSPO có thể phối hợp xây dựng các chính sách này với các quy trình đào tạo để đảm bảo việc tuân thủ.
Thỏa thuận đối với các Nhà phát triển Đóng góp
Các dự án mã nguồn mở cần đảm bảo rằng các đóng góp đều hợp pháp. Ví dụ: mã không được lấy từ một số sản phẩm độc quyền hoặc một dự án mã nguồn mở có giấy phép không tương thích. Nhiều dự án mã nguồn mở sẽ yêu cầu các nhà phát triển cung cấp một tài liệu được gọi là Thỏa thuận Cấp phép của Nhà phát triển Đóng góp (Contributor License Agreement - CLA) để đảm bảo tính hợp pháp của những đóng góp từ họ.
Các nhà phát triển tại một tổ chức đóng góp vào các dự án này có thể yêu cầu luật sư của tổ chức xem xét và phê duyệt CLA. Do đó, các luật sư nên hiểu được tính thích đáng của các điều khoản CLA và sẵn sàng cho việc kiểm tra chúng.
CLA nhận về nhiều lời chỉ trích cả về cả tính phức tạp của chúng lẫn những lỗ hổng mà chúng để lại khiến các dự án sử dụng mã được đóng góp theo cách mà các nhà phát triển đóng góp không mong muốn.
Nhiều dự án sẽ yêu cầu nhà phát triển ký một tài liệu ngắn được gọi là Chứng chỉ Nguồn gốc của Nhà phát triển (Developer Certificate of Origin - DCO) thay vì CLA để chứng thực rằng nhà phát triển có quyền đóng góp mã. DCO (sẽ được thảo luận tới trong bài học khác) thường không được thông qua luật sư.
Một số dự án sẽ chỉ yêu cầu các nhà phát triển đóng góp ký chuyển bản quyền mã của họ cho dự án trong Thỏa thuận Chuyển nhượng Bản quyền (Copyright Assignment Agreement - CAA). Tuy nhiên, nhiều nhà phát triển đóng góp lại không thích cách làm này vì họ không thể sử dụng mã trong một số dự án độc quyền của riêng họ cũng như vì nó trao quá nhiều quyền cho dự án.
Văn phòng Chương trình Mã nguồn Mở (OSPO)
Các dự án mã nguồn mở thường kết hợp các yếu tố xã hội, kỹ thuật, pháp lý và tổ chức khác biệt so với bình thường. Hiện tại, kiến thức về các yếu tố này ở trong các tổ chức vẫn chưa được lan toả đến tất cả các nhà quản lý, nhà phát triển, luật sư và những người khác để họ đều có thể hiểu một cách sâu sắc về chúng. Vì vậy, việc tạo ra Văn phòng Chương trình Mã nguồn Mở (OSPO) như một tụ điểm trung tâm cho các hoạt động vận động, hoạch định chính sách, thực thi chính sách và đào tạo sẽ rất có ích cho các tổ chức.
Là một loại phòng ban đa năng, OSPO có thể thực hiện nhiều vai trò như:
- Quảng bá Mã nguồn mở
-
OSPO có thể khiến các khái niệm đằng sau phong trào mã nguồn mở và các đề xuất sử dụng mã nguồn mở trong toàn bộ tổ chức trở nên phổ biến. Nó có thể nhắc nhở các nhà phát triển tìm kiếm các giải pháp mã nguồn mở để giải quyết các vấn đề và khuyến khích họ áp dụng các phần mềm phù hợp. Nó cũng có thể thúc giục các nhà quản lý dành thời gian cho các nhà phát triển tham gia vào các dự án mã nguồn mở và công nhận sự tham gia đó khi đánh giá các nhà phát triển để tăng lương và thăng chức.
- Định nghĩa chính sách
-
OSPO có thể huy động các nhà quản lý để tạo chính sách và thiết lập các kho để lưu trữ cho chúng.
- Thực thi chính sách
-
OSPO có thể nhắc nhở các nhà phát triển quét phần mềm và SBOM và tuân thủ các quy tắc của công ty về việc sử dụng mã nguồn mở. OSPO có thể lưu giữ tài liệu về các phần mềm đã áp dụng và các khía cạnh khác của việc sử dụng trong công ty.
- Đào tạo
-
OSPO có thể giải thích cho các nhà phát triển cách đánh giá và tham gia vào các dự án mã nguồn mở, giải thích cho các luật sư về chi tiết của giấy phép và các cân nhắc pháp lý khác, đồng thời giúp công ty hiểu được những thay đổi về mặt tổ chức và văn hóa có thể tạo điều kiện thuận lợi cho việc sử dụng phần mềm mã nguồn mở.
Có rất nhiều tài liệu và nguồn trực tuyến về việc tạo OSPO. Một tổ chức nhỏ có thể giao nhiệm vụ này cho một bên thứ ba có chuyên môn trong lĩnh vực.
Bài tập Hướng dẫn
-
Tại sao một nhà phát triển lại không nên lấy mã mà họ thích từ một dự án mã nguồn mở và đưa nó vào mã của mình mà không giữ giấy phép?
-
Nhà phát triển sẽ ký những loại tài liệu nào khi đóng góp cho một dự án mã nguồn mở?
-
Bạn tìm thấy một số phần mềm mã nguồn mở có thể tạo nên một cơ sở tuyệt vời cho trang web bán lẻ của mình. Bạn có thể lấy logo của mình chồng lên logo đã phổ biến sẵn của các phần mềm đó để tạo ra một hình ảnh bắt mắt cho trang web của mình hay không?
Bài tập Mở rộng
-
Những cân nhắc nào có thể sẽ khiến bạn phân nhánh một dự án mã nguồn mở để sử dụng cho riêng mình bất chấp những nhược điểm của việc phân nhánh?
-
Khi tìm thấy một số phần mềm mã nguồn mở đáp ứng được nhu cầu của mình, những lý do nào có thể khiến bạn từ chối chúng?
-
Bạn muốn sử dụng công cụ ghi nhật ký copyleft trong sản phẩm độc quyền của mình. Có cách nào để kết hợp chúng mà không cần phải cung cấp sản phẩm của mình theo giấy phép copyleft không?
Tóm tắt
Bài học này đã đề cập đến nhiều cân nhắc cần được lưu ý trước khi sử dụng phần mềm mã nguồn mở và tự do. Bài học này đã giải thích cách tuân thủ giấy phép, các rủi ro về pháp lý, danh tiếng và tài chính cũng như cách xác định các chính sách quan trọng và thực thi chúng trong tổ chức.
Đáp án Bài tập Hướng dẫn
-
Tại sao một nhà phát triển lại không nên lấy mã mà họ thích từ một dự án mã nguồn mở và đưa nó vào mã của mình mà không giữ giấy phép?
Đây thường là một hành vi vi phạm giấy phép mã nguồn mở và cũng là hành vi đạo nhái và vi phạm bản quyền. Trên thực tế, một tổ chức có thể bị buộc phải tuân thủ theo giấy phép bởi hậu quả từ việc tổn hại danh tiếng hoặc thậm chí là việc mô hình kinh doanh bị huỷ hoại hoàn toàn khi mã copyleft bị trộn lẫn với mã độc quyền.
-
Nhà phát triển sẽ ký những loại tài liệu nào khi đóng góp cho một dự án mã nguồn mở?
Thỏa thuận Cấp phép của Nhà phát triển đóng góp là một văn bản pháp lý cấp quyền cho tổ chức mã nguồn mở sử dụng mã. Chứng chỉ Nguồn gốc của Nhà phát triển là một văn bản ngắn hơn và đơn giản hơn thống nhất rằng nhà phát triển có quyền đóng góp mã. Thỏa thuận Chuyển nhượng Bản quyền sẽ cấp mọi quyền cho tổ chức tiếp nhận.
-
Bạn tìm thấy một số phần mềm mã nguồn mở có thể tạo nên một cơ sở tuyệt vời cho trang web bán lẻ của mình. Bạn có thể lấy logo của mình chồng lên logo đã phổ biến sẵn của các phần mềm đó để tạo ra một hình ảnh bắt mắt cho trang web của mình hay không?
Nếu dự án đã đăng ký nhãn hiệu cho logo của mình, việc thay đổi mà bạn muốn thực hiện có thể sẽ xâm phạm đến nhãn hiệu. Ngay cả khi logo không được đăng ký nhãn hiệu, việc thay đổi của bạn cũng có thể bị coi là thiếu tôn trọng cũng như dễ gây nhầm lẫn.
Đáp án Bài tập Mở rộng
-
Những cân nhắc nào có thể sẽ khiến bạn phân nhánh một dự án mã nguồn mở để sử dụng cho riêng mình bất chấp những nhược điểm của việc phân nhánh?
Nếu đã hài lòng với trạng thái hiện tại của mã, có thể bạn sẽ không cần phải theo dõi các thay đổi của dự án cốt lõi. Có thể bạn sẽ muốn tạo ra một sản phẩm có khác biệt đáng kể so với mục đích sử dụng mà dự án cốt lõi hướng đến, và do đó sẵn sàng tách rời dự án cốt lõi. Mã có thể đủ giá trị đối với kế hoạch kinh doanh của bạn để nhóm của bạn sẵn sàng chịu toàn bộ trách nhiệm cho việc phát triển và bảo trì.
-
Khi tìm thấy một số phần mềm mã nguồn mở đáp ứng được nhu cầu của mình, những lý do nào có thể khiến bạn từ chối chúng?
Có thể là mã có chứa quá nhiều lỗi và lỗ hổng bảo mật, cộng đồng nhà phát triển của dự án đang không hoạt động tốt, bạn không thích hướng phát triển của mã hoặc giấy phép không tương thích với các mã khác trong sản phẩm của bạn.
-
Bạn muốn sử dụng công cụ ghi nhật ký copyleft trong sản phẩm độc quyền của mình. Có cách nào để kết hợp chúng mà không cần phải cung cấp sản phẩm của mình theo giấy phép copyleft không?
Việc tích hợp mã cho công cụ vào mã của bạn có thể kích hoạt yêu cầu tương hỗ của copyleft, tùy thuộc vào giấy phép hiện hữu. Công cụ ghi nhật ký phải được tách biệt khỏi sản phẩm của bạn để sản phẩm của bạn không bị coi là một sản phẩm phái sinh. Ví dụ: việc chạy công cụ copyleft như một tiến trình riêng biệt và giao tiếp với nó thông qua việc truyền tin nhắn có thể được coi là khá an toàn.