Phần mềm mã nguồn mở là gì? Tất cả những điều bạn nên biết – VinBigdata – Blog
Mã nguồn mở thường được lưu trữ trong kho lưu trữ công cộng và được chia sẻ công khai. Bất kỳ ai cũng có thể truy cập kho lưu trữ để sử dụng mã một cách độc lập hoặc đóng góp các cải tiến về thiết kế và chức năng của dự án tổng thể.
Mã nguồn mở thường được lưu trữ trong kho lưu trữ công cộng và được chia sẻ công khai.
Mục lục bài viết
Phần mềm nguồn mở là gì?
Phần mềm nguồn mở (Open source software – OSS) là phần mềm được phân phối cùng với mã nguồn, do đó, luôn sẵn sàng đối với việc sử dụng, sửa đổi và chia sẻ quyền truy cập.
Mã nguồn là một phần của phần mềm mà hầu hết người dùng không bao giờ thấy. Đó là mã được các lập trình viên máy tính thiết lập để kiểm soát hoạt động của một chương trình hoặc ứng dụng. Các lập trình viên có quyền truy cập vào mã nguồn, tiến hành các thay đổi chương trình bằng cách thêm hoặc sửa chữa các phần trong đó. OSS thường bao gồm một giấy phép cho phép các lập trình viên sửa đổi phần mềm để phù hợp nhất với nhu cầu của họ và kiểm soát cách phần mềm có thể được phân phối.
Lịch sử của phần mềm mã nguồn mở
Ý tưởng về việc cung cấp mã nguồn có sẵn và miễn phí được đề xuất từ năm 1983 bởi Richard Stallman, một lập trình viên tại MIT. Stallman tin rằng lập trình viên nên được trao quyền truy cập vào phần mềm để sửa đổi nó theo ý muốn, mục tiêu là nhằm tìm hiểu và từng bước cải thiện phần mềm sao cho tối ưu nhất. Stallman bắt đầu phát hành code miễn phí theo giấy phép của riêng mình, được gọi là GNU Public License. Cách tiếp cận và tư tưởng của Stallman đã đặt tiền đề cho sự hình thành của Sáng kiến Nguồn mở (Open Source Initiative) vào năm 1998.
Phần mềm mã nguồn mở hoạt động như thế nào?
Mã nguồn mở thường được lưu trữ trong kho lưu trữ công cộng và được chia sẻ công khai. Bất kỳ ai cũng có thể truy cập kho lưu trữ để sử dụng mã một cách độc lập hoặc đóng góp các cải tiến về thiết kế và chức năng của dự án tổng thể.
OSS thường đi kèm với giấy phép phân phối. Giấy phép này bao gồm các điều khoản xác định cách các nhà phát triển có thể sử dụng, nghiên cứu, sửa đổi và quan trọng nhất là phân phối phần mềm. Theo Synopsys Black Duck® KnowledgeBase, năm trong số các giấy phép phổ biến nhất là:
- MIT License
- GNU General Public License (GPL) 2.0 — Giấy phép này nghiêm ngặt hơn và yêu cầu các bản sao của code đã sửa đổi phải được cung cấp để sử dụng công khai
- Apache License 2.0
- GNU General Public License (GPL) 3.0
- BSD License 2.0 (3 điều khoản, Mới hoặc Sửa đổi)
Khi mã nguồn được thay đổi, OSS phải thông báo những thay đổi đó, cũng như các phương pháp đã được sử dụng. Tùy thuộc vào các điều khoản cấp phép, phần mềm phát sinh từ những sửa đổi này có thể sẽ phải cung cấp miễn phí trong một số trường hợp.
Phần mềm mã nguồn mở không chứa lỗi?
“Is OSS bug-free?”/ “Phần mềm mã nguồn mở không hề có lỗi?” Câu trả lời là không. Với việc nhiều bên thực hiện các sửa đổi và cải tiến, phần mềm mã nguồn mở không thể tránh khỏi các lỗ hổng về chất lượng, hiệu suất và bảo mật. Tuy nhiên, sự tham gia của số lượng rất lớn các lập trình viên trên toàn thế giới cũng có nghĩa là những lỗi này sẽ được xác định và sửa chữa nhanh hơn.
Bất kể loại phần mềm nào — mã nguồn mở hay thương mại — đều sẽ tồn tại các lỗ hổng về mã. Sự khác biệt chính là ai chịu trách nhiệm sửa lỗi; đối với phần mềm thương mại, nhà cung cấp chịu trách nhiệm, trong khi đó, người tiêu dùng chịu trách nhiệm về phần mềm nguồn mở.
Phần mềm mã nguồn mở & phần mềm mã nguồn đóng: Khác biệt là gì?
Tiêu chíPhần mềm mã nguồn mởPhần mềm mã nguồn đóngGiá thànhMiễn phí truy cập và sử dụngChi phí thay đổi tùy theo quy mô của phần mềm.Quyền tùy chỉnhHoàn toàn có thể tùy chỉnh nhưng phụ thuộc vào giấy phép nguồn mở. Các yêu cầu thay đổi phải được gửi đến công ty bán phần mềm. Điều này bao gồm các bản sửa lỗi, tính năng và cải tiến.Trải nghiệm người dùngTrải nghiệm người dùng thường không cao như đối với phần mềm mã nguồn đóng. Tuy nhiên, điều này phụ thuộc vào mục tiêu của dự án và năng lực của đơn vị duy trì.Thân thiện hơn với người dùng. Trải nghiệm người dùng được để cao, bởi đây là sản phẩm vì lợi nhuận Chính sách hậu mãiMột số phần mềm mã nguồn mở rất phổ biến (ví dụ: OSS do Red Hat hoặc SUSE phân phối) có nhiều hỗ trợ. Nếu không, người dùng có thể tìm trợ giúp thông qua các diễn đàn hoặc email.Đội ngũ hỗ trợ luôn sẵn sàng. Mức độ dịch vụ khả dụng tùy thuộc vào thỏa thuận mức dịch vụ (SLA).Bảo mậtMã nguồn được mở để mọi người cùng xem xét, phát hiện và giảm thiểu nguy cơ tồn tại các lỗi. Tuy nhiên, điều này không loại trừ một số lỗ hổng bảo mật có thể gây ra rủi ro đáng kể. Vì mã nguồn được đóng nên việc phát hiện lỗi có những giới hạn nhất định và các nhà phát triển có trách nhiệm khắc phục các rủi ro bảo mật.Vendor lock-inKhông có vendor lock-in về chi phí đi kèm. Việc tích hợp vào hệ thông có thể tạo ra ràng buộc kĩ thuật sau này.Trong hầu hết các trường hợp, có nhiều khoản đầu tư lớn vào các phần mềm độc quyền. Việc chuyển sang một nhà cung cấp khác hoặc một giải pháp mã nguồn mở có thể gây ra tốn kém về chi phíMức độ phổ biếnMột số giải pháp mã nguồn mở rất phổ biến và thậm chí còn dẫn đầu thị trường (ví dụ: Linux, Apache).Trong một số ngành, phần mềm độc quyền phổ biến hơn, đặc biệt nếu nó đã có mặt trên thị trường trong nhiều năm.Sự tham gia của cộng đồngBản chất của phần mềm mã nguồn mở là cho phép cộng đồng tham gia phát triển, đánh giá, phê bình và cải tiến phần mềm.Cộng đồng khép kín.Phát triển tính năng mớiNgười dùng có thể cải tiến hay phát triển tính năng mới nếu cầnChủ sở hữu phần mềm chịu trách nhiệm phát triển tính năngSo sánh phần mềm mã nguồn mở và phần mềm mã nguồn đóng
Ưu và nhược điểm của phần mềm mã nguồn mở
Ưu điểm
- Phần mềm mã nguồn mở là hoàn toàn miễn phí
- Phần mềm mã nguồn mở có khả năng linh hoạt cao, các nhà phát triển có thể kiểm tra hoạt động của mã và thực hiện các thay đổi về tính năng để phù hợp hơn với nhu cầu riêng của họ.
- Mã nguồn mở mang tính ổn định; có thể được sử dụng cho các dự án dài hạn.
- Mã nguồn mở thúc đẩy đổi mới, sáng tạo. Các lập trình viên có thể sử dụng mã có sẵn để cải thiện phần mềm và thậm chí đưa ra những đổi mới của riêng họ.
- Mã nguồn mở được liên tục sửa đổi và cải tiến bởi cộng đồng cùng tham gia phát triển.
- Mã nguồn mở mang tới cho các lập trình viên một cơ hội học tập tuyệt vời. Bởi mã nguồn mở có thể truy cập công khai, sinh viên do đó dễ dàng nghiên cứu, học cách phát triển phần mềm, tiếp nhận nhận xét, đánh giá từ những người khác, đồng thời chia sẻ những lỗi gặp phải để tránh việc lặp lại các lỗi tương tự.
Nhược điểm
- Mã nguồn mở có thể khó sử dụng, khó thiết lập và thiếu một giao diện thân thiện với người dùng.
- Mã nguồn mở có thể gây ra các vấn đề về tính tương thích. Khi lập trình phần cứng độc quyền với OSS, thường cần có các trình điều khiển chuyên biệt chỉ có sẵn từ nhà sản xuất phần cứng.
- Phần mềm mã nguồn mở có thể đặt ra các vấn đề về trách nhiệm pháp lý. Không giống như phần mềm thương mại, được kiểm soát hoàn toàn bởi nhà cung cấp, mã nguồn mở hiếm khi có bất kỳ bảo hành, trách nhiệm pháp lý hoặc bồi thường vi phạm nào. Điều này khiến người dùng của phần mềm mã nguồn mở có trách nhiệm duy trì việc tuân thủ các nghĩa vụ pháp lý.
Nhằm thúc đẩy chia sẻ dữ liệu y tế, hướng tới xây dựng tiền đề phát triển cho cộng đồng Trí tuệ nhân tạo và Khoa học dữ liệu, VinBigdata quyết định mở toàn bộ mã nguồn của VinDr Lab – phần mềm gán nhãn dữ liệu y tế cho cộng đồng. VinDr Lab là phần mềm mã nguồn mở cho phép quản lý và gán nhãn dữ liệu ảnh y tế. Phần mềm được VinBigdata phát triển để lược bỏ những khó khăn mà các kỹ sư, tổ chức gặp phải trong quá trình xây dựng các giải pháp y tế ứng dụng Trí tuệ nhân tạo. Người dùng hoàn toàn có thể tùy chỉnh mã nguồn để phục vụ các mục đích riêng của tổ chức, cá nhân. Cộng đồng quan tâm có thể truy cập tại: https://github.com/vinbigdata-medical/vindr-lab