Trang chủ Thế giới nói gì Phần mềm mã nguồn mở là gì? Tất cả những điều bạn...

Phần mềm mã nguồn mở là gì? Tất cả những điều bạn nên biết

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.

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 đóng
Giá 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ăng
So 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 

BÀI ĐỌC NHIỀU

Bài phỏng vấn Giáo sư Vũ Hà Văn

Toufik Mansour(**)(*) Giáo sư Vũ Hà Văn sinh ra và học tập đến hết trung học phổ thông tại Việt Nam. Năm 1994, ông...

Giải mã Vaccine thế hệ mới chống COVID-19

Đại dịch COVID-19 diễn biến phức tạp ở quy mô toàn cầu suốt cả năm nay, với số ca nhiễm và tử vong không...

Khái quát về Data Pipeline

Dữ liệu là chìa khóa trong việc khám phá tri thức sâu rộng, nâng cao hiệu quả quy trình và thúc đẩy đưa ra...

VinBigdata đứng số 01 cuộc thi Global Wheat Detection, CVPPP 2020

Sau 2 tháng tranh tài, vượt qua 2245 đội thi hùng mạnh của thế giới, ngày 28/08/2020, Phòng Xử lý ảnh y tế, Viện...

BÀI ĐƯỢC LỰA CHỌN

Tìm hiểu về một Mô hình dự báo dịch Covid-19 từ Vũ Hán

Chúng tôi trình bày và giải thích về một mô hình dự báo ngắn hạn và dài hạn (gọi tắt là mô hình SEIR-C19)...

Giải Nobel Hóa học 2020 vinh danh công nghệ chỉnh sửa gene

Giải Nobel Hóa học năm nay được trao cho thành tựu “viết lại bộ mã của sự sống” của hai nhà khoa học nữ:...

Giải Nobel Y học 2020 vinh danh thành tựu nghiên cứu virus viêm gan C

Giải Nobel Y học 2020 được trao cho Harvey J. Alter, Michael Houghton và Charles M. Rice. Ba nhà khoa học được trao giải vì đã có những...

Điều trị tự kỷ bằng ghép tế bào gốc phối hợp với can thiệp giáo dục

1. Giới thiệu chungTự kỷ (autism) hay rối loạn phổ tự kỷ (autism spectrum disorder) là thuật ngữ được dùng để chỉ một...

BÀI MỚI NHẤT

Thế giới của chúng ta rộng lớn hay bé nhỏ?

Sự rộng lớn hay bé nhỏ của một không gian được đo bằng khoảng cách. Vậy đâu là khoảng cách giữa mọi người trên...

08 trang blog dân Khoa học Dữ liệu nên đọc

08 trang blog dưới đây sẽ cung cấp cho bạn kho tri thức nền tảng về Khoa học Dữ liệu, cùng những thông tin...

Garbage in garbage out: Từ góc độ gán nhãn dữ liệu

Để có dữ liệu sạch và có giá trị đối với các thuật toán thì dữ liệu cần được gán nhãn và chú giải...

06 website luyện code dành cho dân lập trình

Giải quyết các bài toán lập trình thực tế là một trong những cách giúp các coders "nâng hạng" nhanh nhất. Top 06 website...