Lập trình | Phần mềm mã nguồn mở là gì?

MỤC LỤC:

Trước tiên tôi muốn khẳng định, bài viết này sẽ rất dài, bởi vậy nên phần mục lục là rất cần thiết để bạn có thể tìm nhanh được thứ mình cần. 

1. Chủ sở hữu phần mềm.

Khi một phần mềm được tạo ra, nó thuộc một chủ sỏ hữu nào đó. Chủ sở hữu có thể là một cá nhân ( cá nhân tác giả của mã nguồn ) hoặc công ty ( người sở hữu lao động, bỏ tiền để thuê lập trình viên, hoặc mua sức lao động mà lập trình viên bỏ ra ). Chủ sở hữu phần mềm có toàn quyền trên phần mềm mà họ sở hữu, và quyết định mức độ khai thác và sử dụng của những người khác trên phần mềm mà họ sở hữu. 
Khi ai đó khác muốn sử dụng phần mềm đó, họ cần phải được sự cho phép của chủ sở hữu phần mềm thông qua chứng cớ là một giấy phép được cấp bởi chủ sở hữu phần mềm. 

2. Giấy phép sử dụng phần mềm

Là một bản hợp đồng gồm các điều khoản và điều kiện, mô tả những quyền mà chủ sở hữu của phần mềm cho phép người sử dụng khai thác, trên phiên bản liên quan. 

2.1. Phần mềm thương mại: 

Loại bản quyền này chịu rất nhiều hạn chế khắt khe. 

Giấy phép này chỉ cho phép người sử dụng khai thác phần mềm theo các ràng buộc được liệt kê rõ ràng. Chẳng hạn như không cho phép cài đặt phần mềm trên các máy khác nhau. Hoặc cụ thể phiên bản phần mềm được sử dụng. ( Ví dụ người mua bản quyền BKAV 2021 không thể dùng Key phần mềm này để kích hoạt bản BKAV 2022 - đây chỉ là một dẫn chứng mang tính chất minh họa ). Đôi khi muốn nâng cấp lên phiên bản mới hơn của phần mềm, người dùng cần trả thêm một khoản chi phí, điều này tùy chính sách bán hàng của chủ sở hữu, hoặc đơn vị kinh doanh phần mềm quyết định.
Với những điều kiện chặt chẽ, người sử dụng phần mềm đôi khi chịu rất nhiều thiệt thòi. Bởi phiên bản họ mua dính lỗi, và lỗi này chỉ có thể được khắc phục ở version mới của phần mềm. 

Tất nhiên, phần mềm loại này chỉ tập trung vào giải quyết các bài toán của khách hàng, chứ không cho phép người sử dụng truy cập vào mã nguồn của phần mềm.
Nếu muốn nâng cấp hoặc sửa lỗi, điều duy nhất bên mua có thể làm là thông báo cho bên bán biết, và yêu cầu sử lỗi, hoặc đền bù như hợp đồng kèm theo được ký kết. 

2.2. Phần mềm miễn phí (FW) và phần mềm trả một phần (shareware)

Là phần mềm có chủ sở hữu gốc, nhưng được tự do phân phối lại. 
Phần mềm miễn phí không đòi hỏi tiền bản quyền để được sử dụng phần mềm.
Phần mềm trả một phần thì chỉ miễn phí sau một khoảng thời gian định trước, ( ví dụ 6 tháng, 1 năm.. tùy theo chính sách mà chủ sở hữu muốn kinh doanh ), hoặc chỉ miễn phí một vài tính năng cơ bản. 

Tuy nhiên, một điều khá quan trọng là cả 2 loại phần mềm này vẫn không cho phép người sử dụng truy cập vào mã nguồn của phần mềm. 

2.3. Phần mềm mã nguồn mở: 

2.3.1. Định nghĩa: 

Nói chung, phần mềm Nguồn mở (Open Source) là phần mềm mà bất kỳ ai cũng có thể tự do truy cập, sử dụng, thay đổi và chia sẻ (ở dạng đã sửa đổi hoặc chưa được sửa đổi) mà không cần xin phép ai. Nhưng cần được phân phối theo giấy phép tuân theo 10 tiêu chí sau:

1. Phân phối lại miễn phí : Giấy phép sẽ không hạn chế bất kỳ bên nào bán hoặc cho đi phần mềm như một thành phần của bản phân phối phần mềm tổng hợp có chứa các chương trình từ nhiều nguồn khác nhau. Giấy phép sẽ không yêu cầu tiền bản quyền hoặc phí khác cho việc bán như vậy.

2. Mã nguồn : Chương trình phải bao gồm mã nguồn, và phải cho phép phân phối ở dạng mã nguồn cũng như dạng thực thi. Trong trường hợp một số dạng sản phẩm không được phân phối bằng mã nguồn, thì phải có một phương tiện được công bố rộng rãi để lấy mã nguồn với chi phí sao chép hợp lý, tốt nhất là tải xuống qua Internet mà không tính phí. Mã nguồn phải là dạng ưu tiên mà một lập trình viên sẽ sửa đổi chương trình. Không được cố ý xáo trộn mã nguồn. Không được cung cấp các dạng không tường minh, khó kiểm tra và truy cập mã nguồn ( các dạng trung gian như đầu ra của Quá trình tiền xử lý - Preprocessor, quá trình Compiler, quá trình Assembler.. hoặc bất kỳ giai đoạn giữa chừng nào của của giai đoạn Biên dịch ).

3. Kế thừa các sửa đổi và điều khoản của tác phẩm gốc : Giấy phép cho phép tác phẩm được phân phối theo các điều khoản giống như giấy phép của phần mềm gốc.

4. Tính toàn vẹn của mã nguồn của tác giả : Giấy phép có thể yêu cầu các tác phẩm có nguồn gốc phải mang một tên hoặc số phiên bản khác với phần mềm gốc.Người sử dụng có thể cung cấp phiên bản mới ở dạng tệp vá. 
Người dùng cuối của sản phẩm có quyền được biết ai là người chịu trách nhiệm về phần mềm họ đang sử dụng. Tác giả và người bảo trì có quyền tương hỗ để biết những gì họ đang được yêu cầu để hỗ trợ và bảo vệ danh tiếng của họ.

5. Không phân biệt đối xử với người hoặc nhóm : Giấy phép không được phân biệt đối xử với bất kỳ người hoặc nhóm người nào.
Để có được lợi ích tối đa từ quá trình này, sự đa dạng tối đa của mọi người và các nhóm phải có đủ điều kiện như nhau để đóng góp vào các nguồn mở. Do đó, tổ chức opensource cấm bất kỳ giấy phép nguồn mở nào khóa bất kỳ ai.

6. Không phân biệt đối xử với các lĩnh vực nỗ lực : Giấy phép không được hạn chế bất kỳ ai sử dụng chương trình trong một lĩnh vực nỗ lực cụ thể. Ví dụ: nó có thể không hạn chế chương trình được sử dụng trong kinh doanh hoặc được sử dụng cho nghiên cứu di truyền.
Mục đích chính của điều khoản này là cấm các bẫy giấy phép ngăn nguồn mở được sử dụng cho mục đích thương mại. Nhấn mạnh rằng sử dụng cho mục đích thương mại là được phép.

7. Phân phối giấy phép : Các quyền kèm theo chương trình phải áp dụng cho tất cả những người mà chương trình được phân phối lại mà không cần các bên đó thực hiện thêm giấy phép.
Điều khoản này nhằm cấm đóng phần mềm bằng các cách gián tiếp như yêu cầu một thỏa thuận không tiết lộ.

8. Giấy phép không được dành riêng cho một sản phẩm: Giấy phép không hạn chế cho một sản phẩm cụ thể nào cả.

9. Giấy phép không được hạn chế phần mềm khác : Giấy phép không được đặt ra các hạn chế đối với phần mềm khác được phân phối cùng với phần mềm được cấp phép. Ví dụ, giấy phép không được nhấn mạnh rằng tất cả các chương trình khác được phân phối trên cùng một phương tiện phải là phần mềm nguồn mở.

10. Giấy phép phải trung lập về công nghệ : Không có điều khoản nào của giấy phép có thể được dự đoán trên bất kỳ công nghệ hoặc phong cách giao diện riêng lẻ nào.
Ví dụ: giấy phép phù hợp phải cho phép: [việc phân phối lại phần mềm sẽ diễn ra trên các kênh Web không hỗ trợ gói thu phí khi tải xuống], [mã, hoặc các phần sử dụng lại của mã có thể chạy bất kể trên môi trường hỗ trợ giao diện người dùng hay không]

3.3.2. Một số loại giấy phép mã nguồn mở

Điều này được nói đến trong bài viết sau: Các loại giấy phép mã nguồn mở

3.3.3. Một số câu hỏi thường gặp

- Copyleft là gì? Nó có giống với mã nguồn mở không?

"Copyleft" đề cập đến các giấy phép cho phép các tác phẩm phái sinh nhưng yêu cầu chúng sử dụng cùng một giấy phép như tác phẩm gốc.

Hầu hết các giấy phép copyleft là Mã nguồn mở, nhưng không phải tất cả các giấy phép Nguồn mở đều là copyleft. Khi giấy phép Nguồn mở không phải là copyleft, điều đó có nghĩa là phần mềm được phát hành theo giấy phép đó có thể được sử dụng như một phần của các chương trình được phân phối theo giấy phép khác, bao gồm cả giấy phép độc quyền (không phải nguồn mở).

- Làm cách nào để kiếm tiền nếu ai đó có thể bán mã của tôi?

Bạn có thể bán dịch vụ dựa trên mã (tức là bán thời gian của bạn), bán bảo hành và các đảm bảo khác, bán công việc tùy chỉnh và bảo trì, cấp phép nhãn hiệu, v.v. Loại chiến lược lợi nhuận duy nhất không tương thích với Nguồn mở là dựa trên độc quyền doanh số bán hàng, còn được gọi là "tiền bản quyền". Các dịch vụ đã nói ở trên không bị ràng buộc về bản quyền, nghĩa là người khác khi hiểu rõ mã nguồn mở của bạn, họ có thể cung cấp các dịch vụ bảo hành, sửa lỗi, hoặc nâng cấp để tạo ra phiên bản khác trên mã nguồn của bạn. 
Nếu ai đó lấy "tiền bản quyền" tức là họ đã vi phạm, bạn có quyền căn cứ vào điều khoản của luật bản quyền để yêu cầu khởi kiện hoặc truy cứu họ.

- Điều gì xảy ra nếu tôi không muốn phân phối chương trình của mình ở dạng mã nguồn? Hoặc nếu tôi không muốn phân phối nó ở dạng nguồn hoặc dạng nhị phân thì sao?

Nếu bạn không phân phối mã nguồn, thì những gì bạn đang phân phối không thể được gọi là "Nguồn mở" một cách có ý nghĩa. Và nếu bạn hoàn toàn không phân phối, thì theo định nghĩa, bạn không phân phối mã nguồn, vì vậy bạn không phân phối bất cứ thứ gì Mã nguồn mở.

Hãy nghĩ theo cách này: Giấy phép Nguồn mở luôn được áp dụng cho mã nguồn - vì vậy nếu bạn không phân phối nguồn, thì bạn sẽ không phân phối thứ mà giấy phép Nguồn mở áp dụng. Bạn có thể hoặc không thể phân phối các tệp nhị phân; đó là một câu hỏi riêng biệt. Nhưng trong khi một số giấy phép Mã nguồn mở cho phép bạn phân phối mã nhị phân mà không cần phân phối nguồn tương ứng, nó chỉ là mã nguồn có thể là "mã nguồn mở". Chỉ riêng các mã nhị phân không thể là Mã nguồn mở, bởi vì bạn không tạo bất kỳ mã nguồn nào có sẵn để mở.

- Tôi nên chọn giấy phép Nguồn mở nào để phát hành phần mềm của mình theo?

Bạn có thể chọn bất kỳ giấy phép nào từ các giấy phép nguồn mở được liệt kê bắt đầu tại đây: opensource.org/licenses . Hầu hết mọi người chọn một từ danh mục "Popular Licenses", nhưng bạn có thể tự do chọn bất kỳ giấy phép nào được liệt kê.

- Tôi có thể loại bỏ bản quyền trên mã Nguồn mở và đưa vào bản quyền của riêng tôi không?

Chắc chắn không hợp lệ! Đây thậm chí không phải là về Nguồn mở, thực sự: nói chung, bạn không nên xóa thông báo bản quyền hợp lệ, bất kể giấy phép đó chỉ định là gì. Thông báo bản quyền là thông báo pháp lý; chúng cũng là một nguồn thông tin về nguồn gốc của mã nguồn, và nếu thông tin đó bị loại bỏ, người nhận các phiên bản kế tiếp không có cách nào dễ dàng để khám phá lại nó.

- Phân phối (distribution) là gì? Nó có giống với việc cho phép mọi người sử dụng chương trình của tôi trên server từ phía client?

Nói một cách thông tục, để "phân phối" một chương trình có nghĩa là cung cấp cho người khác một bản sao mã của nó - mã nguồn hoặc mã nhị phân (có thể thực thi) của nó, hoặc cả hai. Vậy nên nếu về nghĩa, một số từ khác sát nghĩa hơn tránh nhầm lẫn có thể được dùng là: "tuyên truyền - propagate" ", hoặc "chuyển tải - convey"

- Ai đó đang vi phạm giấy phép copyleft, chẳng hạn bằng cách từ chối cung cấp mã nguồn cho tôi khi họ được yêu cầu. Tôi có thể làm gì?

Bạn có thể liên hệ với Tổ chức Conservancy theo địa chỉ compliance@sfconservancy.org, bạn sẽ được trợ giúp để khiến dự án vi phạm đó được thi hành Giấy phép mã nguồn mở.


Tham khảo: opensource.org

Author:

Tôi là Tuấn Anh, một lập trình viên C++, hiện tại đang làm việc với Qt Framework. Giờ đã là bố của một thanh niên nhỏ, gần đây tôi thấy mình cần sống có trách nhiệm hơn nữa. : ]] Tôi cảm thấy nếu tôi không có nơi nào đó để ghi lại, tôi sẽ quên mất nhiều thứ. Dấu chân trên cát cũng vậy, nếu ta không chụp ảnh nó lại, rồi nó cũng sẽ bị gió làm mờ đi dần rồi mất hút hẳn. Cảm ơn anh em đã ghé qua và đọc những gì tôi viết. Hữu duyên thiên lý Ngô tương nặng, à nhầm Năng tương ngộ. : ]] Thân ái 3000!
© Giao diện website thiết kế bởi TuanTiTien.com