Một công ty thuê đội ngoài làm phần mềm quản lý đơn hàng, dùng ổn được hai năm. Rồi đội cũ ngừng hợp tác, kế toán cần thêm một cột vào báo cáo, và đội mới nhận việc hỏi câu đầu tiên: “Cho xin source code và quyền vào kho mã.” Lúc đó chủ doanh nghiệp mới thấy trong tay chỉ có tên miền và tài khoản quản trị. Source code là gì trả lời ngắn thế này: source code (mã nguồn) là phần chữ mà lập trình viên viết bằng một ngôn ngữ lập trình để ra lệnh cho máy tính, người đọc được, sửa được, rồi được dịch hoặc thông dịch thành chương trình chạy. Định nghĩa mã nguồn mở của Open Source Initiative nói gọn hơn nữa: mã nguồn là “the preferred form in which a programmer would modify the program”, tức dạng mà lập trình viên muốn dùng nhất khi cần sửa chương trình. Ai giữ dạng đó thì người đó sửa được phần mềm.
Bài này đi từ khái niệm tới phần doanh nghiệp hay bỏ quên. Phần đầu giải thích source code là gì, mã nguồn mở khác mã nguồn đóng ra sao, source code của một website gồm những gì và đọc hiểu nó bắt đầu từ đâu. Phần sau nói chuyện tiền và quyền: các nền tảng web phổ biến đang dùng giấy phép nào, giấy phép MIT, GPL, AGPL ràng buộc doanh nghiệp ở điểm nào, sau một dự án phần mềm mã nguồn thuộc về ai, và lúc bàn giao cần nhận đủ những gì. Thông tin về giấy phép lấy từ opensource.org, gnu.org, choosealicense.com và trang giấy phép của WordPress, tra ngày 14/10/2026.
Source code là gì và khác bản chương trình đang chạy ở đâu
Source code là tập các tệp văn bản chứa câu lệnh viết bằng ngôn ngữ lập trình như PHP, JavaScript, Python, Java hay C#. Mở một tệp mã nguồn bằng trình soạn thảo bất kỳ, kể cả Notepad, vẫn đọc được từng dòng: khai báo biến, hàm tính tổng tiền đơn, câu truy vấn lấy danh sách khách. Máy tính thì không chạy thẳng những dòng chữ này. Với các ngôn ngữ biên dịch như C, Go hay Java, trình biên dịch đổi mã nguồn thành mã máy hoặc mã trung gian, tức thứ người không đọc nổi nhưng máy chạy được. Với các ngôn ngữ thông dịch như PHP hay Python, chương trình thông dịch đọc mã nguồn và chạy từng phần lúc phần mềm đang hoạt động. Nếu cần nắm sự khác nhau giữa các ngôn ngữ, xem thêm bài ngôn ngữ lập trình là gì và các ngôn ngữ phổ biến.
Khác biệt đó có hệ quả rất thực tế. Ai chỉ cầm bản đã biên dịch thì cài và chạy được, nhưng muốn đổi một quy tắc tính chiết khấu thì gần như phải viết lại. Ai cầm mã nguồn thì mở đúng tệp, sửa vài dòng, kiểm thử rồi phát hành bản mới. Tiêu chí số 2 trong định nghĩa mã nguồn mở của Open Source Initiative ghi rõ mã nguồn phải là dạng mà lập trình viên muốn dùng khi sửa chương trình, mã cố ý làm rối không được tính, và các dạng trung gian như đầu ra của bộ tiền xử lý hay bộ dịch cũng không được tính. Một bản mã đã nén, đã làm rối thì về mặt kỹ thuật vẫn là chữ, nhưng không ai sửa nổi.

Lập trình viên viết mã nguồn bằng ba nhóm công cụ. Trình soạn thảo văn bản là mức đơn giản nhất. Môi trường phát triển tích hợp (IDE, Integrated Development Environment) gom trình soạn thảo, công cụ gỡ lỗi, chạy thử và quản lý dự án vào một chỗ. Bộ phát triển phần mềm (SDK) là bộ thư viện và công cụ của một nền tảng, ví dụ SDK để viết ứng dụng Android. Ngoài ra còn có hệ thống quản lý phiên bản như Git, nơi lưu từng lần thay đổi của mã nguồn kèm người sửa và thời điểm sửa. Kho Git này về sau chính là thứ quan trọng nhất trong buổi bàn giao.
Về mặt pháp lý, Luật Sở hữu trí tuệ của Việt Nam bảo hộ chương trình máy tính như tác phẩm văn học, dù được thể hiện dưới dạng mã nguồn hay mã máy. Câu này nằm ở khoản 1 Điều 22, được sửa đổi lần gần nhất bằng Luật số 131/2025/QH15, Quốc hội thông qua ngày 10/12/2025 và có hiệu lực từ 01/04/2026. Nói cách khác, mã nguồn của một phần mềm là tài sản có chủ, và câu hỏi ai là chủ cần được trả lời trên giấy từ đầu dự án.
Mã nguồn mở và mã nguồn đóng khác nhau ở những điểm nào
Mã nguồn chia làm hai nhóm theo giấy phép đi kèm. Mã nguồn mở (open source) được công bố cho ai cũng xem, sửa và phân phối lại, theo điều kiện của giấy phép. Định nghĩa của Open Source Initiative mở đầu bằng câu “Open source doesn’t just mean access to the source code”, tức mã nguồn mở còn có nghĩa nhiều hơn việc được xem mã nguồn, rồi đặt ra 10 tiêu chí, từ phân phối lại tự do, cho phép tạo sản phẩm phái sinh, tới việc giấy phép không được phân biệt người dùng hay lĩnh vực sử dụng. Mã nguồn đóng, còn gọi là mã nguồn độc quyền hay thương mại, thì chỉ chủ sở hữu và người được cấp phép mới xem được. Người dùng nhận bản chạy, dùng theo hợp đồng hoặc gói thuê bao, và không được sửa phần lõi. Bài phần mềm là gì và các cách phân loại phần mềm có thêm các nhóm khác như phần mềm hệ thống, phần mềm ứng dụng.
Hai loại khác nhau rõ nhất ở năm khía cạnh: khái niệm, bảo mật, chi phí, nâng cấp và hỗ trợ. Bảng dưới đặt chúng cạnh nhau theo cách hai loại vận hành hiện nay. Đây là nhận định từ cách mỗi mô hình được xây dựng, MONA không đo số liệu nào cho bảng này.
| Khía cạnh | Mã nguồn mở | Mã nguồn đóng |
|---|---|---|
| Khái niệm | Công khai, ai cũng tải về, sửa và phân phối lại theo giấy phép như MIT, Apache 2.0, GPL | Chỉ chủ sở hữu giữ mã, người dùng nhận bản chạy theo hợp đồng hoặc thuê bao |
| Bảo mật | Ai cũng đọc được mã, nên lỗ hổng được nhiều người tìm ra và vá công khai. Rủi ro nằm ở chỗ không cập nhật bản vá, hoặc cài thêm plugin kém chất lượng | Kẻ tấn công khó đọc mã hơn, nhưng mức an toàn phụ thuộc hoàn toàn vào đội của nhà cung cấp. Bên dùng không tự kiểm được |
| Chi phí | Thường không tốn phí giấy phép. Tiền nằm ở công dựng, tùy biến, máy chủ, plugin trả phí và bảo trì | Phí giấy phép hoặc thuê bao ngay từ đầu, cộng phí theo số người dùng. Tính năng mới ngoài lộ trình của nhà cung cấp thường phải đặt riêng |
| Nâng cấp | Theo phiên bản cộng đồng phát hành. Bên dùng tự quyết lúc nào lên bản mới, nhưng phải tự kiểm phần đã tùy biến | Theo lịch của nhà cung cấp. Bên dùng không sửa được lõi, chỉ cấu hình trong phạm vi cho phép |
| Hỗ trợ | Diễn đàn, tài liệu cộng đồng, hoặc thuê một đơn vị kỹ thuật | Nhà cung cấp hỗ trợ theo hợp đồng và theo thời hạn của gói |
Nhiều người vẫn nghĩ mã nguồn mở kém bảo mật vì ai cũng nhìn thấy mã. Việc mã công khai không tự làm phần mềm yếu đi, vì chính các bản vá của WordPress, Linux hay PostgreSQL đều đến từ việc nhiều người cùng đọc mã. Thứ làm website mã nguồn mở bị tấn công thường là phiên bản cũ không được vá và plugin bỏ hoang. MONA đã kiểm thực tế một website WordPress bị dò những gì trong bài website WordPress bị dò những gì mỗi ngày. Hai loại đều cần một người chịu trách nhiệm cập nhật.
Source code website gồm những phần nào
Source code website là toàn bộ tệp mã tạo nên một trang web và nối giao diện người dùng với cơ sở dữ liệu. Nó gồm ba lớp. Lớp giao diện (front-end) là HTML, CSS và JavaScript mà trình duyệt tải về để vẽ trang và xử lý thao tác như rê chuột, bấm nút, điền form. Lớp xử lý (back-end) chạy trên máy chủ, viết bằng PHP, Node.js, Python hay Java, làm các việc như thêm hàng vào giỏ, kiểm tra đăng nhập, tạo đơn, gửi email. Lớp dữ liệu gồm cấu trúc cơ sở dữ liệu (bảng, cột, quan hệ) và dữ liệu thật như sản phẩm, đơn hàng, khách hàng.
Mỗi thao tác của khách trên website đi qua cả ba lớp. Khi khách tìm một tài liệu, JavaScript gửi từ khóa lên máy chủ, mã back-end truy vấn cơ sở dữ liệu, rồi trả kết quả để giao diện hiển thị. Nhiều dự án tách ba vai này theo mô hình MVC, tức Model giữ dữ liệu, View lo hiển thị, Controller điều phối, xem chi tiết ở bài mô hình MVC trong lập trình. Hiểu ba lớp giúp trả lời một câu hay gặp. “Lấy toàn bộ source code của một website” bằng nút Xem nguồn trang hay công cụ tải trang chỉ lấy được lớp giao diện mà trình duyệt nhận về. Mã back-end và cơ sở dữ liệu nằm trên máy chủ, người ngoài không tải được, và chính chủ website cũng chỉ có chúng khi đã được bàn giao.
Đọc hiểu một bộ source code có sẵn thì bắt đầu từ đâu
Khi nhận một dự án phần mềm đang chạy, đội kỹ thuật mới không đọc từ dòng đầu tới dòng cuối. Việc đầu tiên là nắm kiến thức nền của dự án: ngôn ngữ, framework đang dùng (Laravel, Next.js, Django…), phiên bản, và các thư viện bên thứ ba được khai báo trong tệp như composer.json hay package.json. Bài framework là gì giải thích vì sao biết framework là đã đoán được một nửa cấu trúc thư mục. Bước chuẩn bị này cũng cho biết phiên bản ngôn ngữ còn được vá bảo mật tới khi nào, một câu hỏi mà bài vòng đời hỗ trợ của PHP, Node.js, Python, PostgreSQL đã đối chiếu với lịch của từng dự án.

Sau đó tìm phần mã trung tâm. Phần mã trung tâm là các module, class, action và cấu trúc dữ liệu mà mọi chức năng khác dựa vào, ví dụ module đơn hàng trong một phần mềm bán hàng, hay lớp phân quyền người dùng. Liệt kê và đọc kỹ những phần này giúp hình dung từng hệ thống con, giống như xem bản đồ từng khu trước khi đi vào từng con hẻm. Số phần trung tâm tùy quy mô dự án, nhưng chúng luôn chiếm phần lớn thời gian đọc.
Bước cuối là hiểu cách các phần trung tâm nói chuyện với nhau. Có ba cơ chế hay gặp: gọi hàm trực tiếp hoặc phát sự kiện (event) trong cùng ứng dụng, gọi qua API giữa các dịch vụ, và gửi thông điệp qua hàng đợi (message queue) để xử lý sau. Vẽ một sơ đồ phụ thuộc, phần nào gọi phần nào và qua cơ chế gì, là cách nhanh nhất để thấy chỗ nào sửa một dòng sẽ ảnh hưởng dây chuyền. Với website WordPress, API là cửa chính để ứng dụng ngoài đọc và ghi dữ liệu, như bài WordPress REST API là gì mô tả. Một bộ mã có tài liệu kiến trúc và sơ đồ này từ đầu thì đội mới đọc nhanh hơn hẳn, nên tài liệu đó cũng thuộc danh sách bàn giao ở phần sau.
Nền tảng mã nguồn mở hay dùng để làm website và giấy phép của chúng
Rất nhiều website doanh nghiệp được dựng trên một hệ quản trị nội dung (CMS) mã nguồn mở thay vì viết từ đầu. Năm cái tên hay gặp nhất là WordPress, Joomla, Drupal, OpenCart và WooCommerce. Ít người để ý rằng cả năm nền tảng đều phát hành theo một phiên bản của giấy phép GPL, và chi tiết đó ảnh hưởng trực tiếp tới việc ai được làm gì với mã nguồn website. Giấy phép dưới đây đọc từ trang giấy phép hoặc tệp LICENSE trong kho mã chính thức của từng dự án ngày 14/10/2026. Cột điểm mạnh và điểm cần tính trước là nhận định chung, không có số đo đi kèm.
| Nền tảng | Dùng cho | Giấy phép | Điểm mạnh | Điểm cần tính trước |
|---|---|---|---|---|
| WordPress | Website giới thiệu, tin tức, blog, nền cho web bán hàng | GPLv2 hoặc mới hơn | Dễ cài, kho giao diện và plugin lớn, nhiều công cụ hỗ trợ SEO | Website lớn dần thì cần người vững kỹ thuật để giữ tốc độ và vá plugin |
| Joomla | Website nội dung, cổng thông tin | GPLv2 | Giao diện quản trị dùng được cho cả người quản trị lẫn lập trình viên, nhiều phần mở rộng miễn phí | Bộ mã khá lớn, ít người làm ở Việt Nam hơn WordPress nên khó tìm đội thay thế |
| Drupal | Website nhiều loại nội dung, nhiều quyền, nhiều site | GPLv2 hoặc mới hơn | Quản lý nhiều website cùng lúc, chạy được trên Linux lẫn Windows, mở rộng sâu | Đường học dốc, ít phần mở rộng hơn, lên phiên bản chính thường phải chờ phần mở rộng tương thích |
| WooCommerce | Bán hàng trên nền WordPress | GPLv2 hoặc mới hơn | Thêm giỏ hàng, thanh toán vào website WordPress có sẵn | Mỗi lần cập nhật cần kiểm lại các phần đã tùy biến và plugin thanh toán |
| OpenCart | Cửa hàng trực tuyến độc lập | GPLv3 | Cài nhanh, đủ chức năng bán hàng cơ bản | Tùy biến sâu khó, vì bộ mã viết cho nhu cầu chung của cộng đồng |
Trang giấy phép của WordPress.org ghi rõ WordPress phát hành theo “the GPLv2 (or later) from the Free Software Foundation”, và nhóm phát triển coi giao diện, plugin là sản phẩm phái sinh nên cũng mang GPL. Chính trang đó thừa nhận vẫn còn tranh luận về thế nào là sản phẩm phái sinh, và gợi ý ai không đồng ý thì chọn nền tảng khác (WordPress.org, tra ngày 14/10/2026). Với doanh nghiệp, hệ quả rõ nhất là theme hay plugin viết riêng cho website WordPress khó giữ kín như một sản phẩm đóng nếu đem bán cho bên khác. Bài WordPress là gì, khi nào đủ dùng và khi nào cần phần mềm riêng nói thêm lúc nào nên rời nền này.
Giấy phép MIT, GPL, AGPL ràng buộc doanh nghiệp ở điểm nào
Gần như phần mềm nào hiện nay cũng có thư viện mã nguồn mở bên trong, kể cả phần mềm viết riêng. Một dự án Laravel hay Next.js trung bình kéo theo hàng trăm gói phụ thuộc, mỗi gói một giấy phép. Phần lớn là giấy phép dễ dãi như MIT, nhưng chỉ cần một gói GPL hay AGPL nằm sai chỗ là nghĩa vụ của cả sản phẩm đổi theo. Trang tổng hợp của Choose a License xếp quyền, điều kiện và giới hạn của từng giấy phép thành ba cột, đọc rất nhanh.

MIT cho phép dùng thương mại, phân phối, sửa và dùng riêng. Điều kiện duy nhất nằm trong câu “The above copyright notice and this permission notice shall be included” của văn bản MIT đăng trên opensource.org: thông báo bản quyền và nội dung giấy phép phải đi kèm mọi bản sao hoặc phần đáng kể của phần mềm. Phần mềm của doanh nghiệp dùng thư viện MIT vẫn giữ kín mã của mình được, chỉ cần tệp giấy phép đi kèm. Apache 2.0 tương tự, thêm quyền sử dụng sáng chế của người đóng góp và điều kiện ghi rõ phần đã sửa.
GPLv3, bản Free Software Foundation công bố ngày 29/06/2007, cũng cho dùng thương mại, nhưng kèm ba điều kiện: công khai mã nguồn, giữ cùng giấy phép, ghi rõ thay đổi. Câu hỏi then chốt là các điều kiện này phát sinh lúc nào. Trang hỏi đáp GPL của GNU trả lời: GPL không bắt công bố bản đã sửa, một tổ chức, kể cả công ty, có thể sửa và dùng nội bộ mà không phát hành ra ngoài. Nghĩa vụ đưa mã nguồn cho người dùng chỉ phát sinh khi bản sửa được phát hành ra công chúng theo cách nào đó. Riêng một công ty chạy bản GPL đã sửa trên website của mình cũng chưa phải công bố mã, vì GPL coi đó là dùng mà không phân phối.

Cũng mục đó trong GPL FAQ của GNU có một chi tiết doanh nghiệp hay bỏ qua: khi tổ chức chuyển bản sao cho tổ chức hay cá nhân khác thì đó là phân phối, và nguyên văn GNU viết “providing copies to contractors for use off-site is distribution”, tức đưa bản sao cho nhà thầu dùng bên ngoài cũng tính là phân phối. Hai tình huống kéo theo nghĩa vụ. Một công ty phần mềm bán hoặc bàn giao sản phẩm có mã GPL cho khách thì phải đưa mã nguồn tương ứng theo GPL, và khách nhận được đủ quyền GPL với phần đó. Phần JavaScript có giấy phép GPL mà trình duyệt tải về khi khách vào website cũng là đang phân phối tới người xem.
AGPLv3, công bố ngày 19/11/2007, đi xa hơn một bước. Điều 13 của AGPLv3 yêu cầu bản đã sửa phải đưa cho “all users interacting with it remotely through a computer network” cơ hội nhận mã nguồn tương ứng, tức mọi người dùng tương tác với nó qua mạng. GPL FAQ áp đúng điều này vào tình huống một công ty chạy bản AGPL đã sửa trên website: công ty đó phải công bố mã đã sửa. Một phần mềm quản lý cho khách đăng nhập từ ngoài, nếu dựng trên thư viện AGPL đã chỉnh sửa, đã đủ để kích hoạt nghĩa vụ này. Bảng dưới tóm tắt.
| Tình huống | MIT, Apache 2.0 | GPLv3 | AGPLv3 |
|---|---|---|---|
| Dùng nội bộ, đã sửa, không đưa ra ngoài | Không có nghĩa vụ công bố | Không có nghĩa vụ công bố | Không có nghĩa vụ nếu người dùng chỉ là nhân sự nội bộ |
| Chạy trên máy chủ, khách dùng qua web | Không có nghĩa vụ công bố | Chưa tính là phân phối phần chạy trên máy chủ | Phải cho người dùng qua mạng nhận mã đã sửa |
| Bàn giao hoặc bán bản cài cho bên khác | Giữ thông báo bản quyền và giấy phép | Đưa mã nguồn tương ứng, cùng giấy phép GPL | Như GPLv3 |
| Giao bản sao cho nhà thầu làm bên ngoài | Giữ thông báo | GNU tính là phân phối | GNU tính là phân phối |
AGPL khác GPL ở dòng thứ hai. Bảng chỉ là bản đọc nhanh của các trang giấy phép gốc. Khi sản phẩm có mã GPL hay AGPL được bán, bàn giao hoặc mở cho người ngoài dùng, phần ghép giữa mã của doanh nghiệp và mã GPL cần luật sư đọc trên văn bản giấy phép đầy đủ. Bài bản quyền phần mềm doanh nghiệp năm 2026 có thêm phần kiểm kê phần mềm đang dùng và mức xử phạt.
Sau một dự án phần mềm, source code thuộc về ai
Trả tiền làm một phần mềm chưa có nghĩa là đương nhiên giữ mã nguồn. Quyền với mã nguồn đi theo luật và theo những gì hai bên viết trong hợp đồng. Khoản 1 Điều 22 Luật Sở hữu trí tuệ, theo bản sửa bằng Luật 131/2025/QH15, cho phép tác giả và chủ sở hữu quyền tác giả của chương trình máy tính thỏa thuận bằng văn bản về việc sửa chữa, nâng cấp chương trình. Cùng khoản đó cho tổ chức, cá nhân có quyền sử dụng hợp pháp bản sao chương trình làm một bản sao dự phòng, và với phần mềm cung cấp dạng dịch vụ hay qua nền tảng trực tuyến thì việc sao dự phòng theo điều khoản sử dụng hoặc thỏa thuận cấp phép. Nghĩa là quyền sửa, quyền nâng cấp và cả quyền giữ bản sao đều quay về chữ viết trong hợp đồng.
Ba mô hình hay gặp cho ra ba kết quả khác nhau. Thuê một phần mềm đóng gói hay SaaS thì doanh nghiệp chỉ có quyền dùng theo gói, mã nguồn ở lại với nhà cung cấp, đổi lại khỏi lo máy chủ và cập nhật; bài SaaS là gì nói rõ cách tính phí kiểu này. Thuê viết phần mềm riêng thì mã nguồn có thể chuyển hẳn cho bên đặt hàng, có thể chỉ cấp quyền sử dụng, tùy điều khoản. Mua một bản dựng trên nền có sẵn của nhà cung cấp thì phần lõi thường vẫn thuộc nhà cung cấp, bên đặt hàng nhận quyền với phần viết riêng cho mình. Không mô hình nào sai, miễn hợp đồng ghi đúng mô hình đang mua.
Hợp đồng thuê viết phần mềm nên có đủ các ý sau, viết thành câu cụ thể chứ không gộp vào một dòng “bàn giao sản phẩm”:
- Ai là chủ sở hữu mã nguồn sau khi thanh toán xong, và quyền đó có gồm quyền sửa, nâng cấp, thuê bên khác làm tiếp hay không.
- Bên đặt hàng nhận mã nguồn đầy đủ kèm lịch sử thay đổi, hay chỉ nhận bản chạy.
- Phần lõi hoặc thư viện riêng mà bên làm dùng lại cho nhiều dự án thì cấp quyền ra sao.
- Danh sách thư viện bên thứ ba và giấy phép của chúng, nhất là GPL và AGPL.
- Thời điểm bàn giao mã: theo từng giai đoạn nghiệm thu hay một lần cuối dự án.
Nếu dự án đi kèm kiểm thử nghiệm thu, nên gắn mốc bàn giao mã với mốc nghiệm thu để bên đặt hàng kiểm được đúng bản đã chạy thử. Bài kiểm tra bảo mật phần mềm trước nghiệm thu theo OWASP liệt kê những mục nên kiểm trước khi ký.
Bàn giao source code cần nhận đủ những gì
Một tệp nén chứa thư mục mã chưa đủ để đội khác chạy lại phần mềm. Thiếu hướng dẫn dựng, thiếu cấu trúc cơ sở dữ liệu hay thiếu danh sách biến môi trường là đội mới mất hàng tuần đoán lại cách cũ đã chạy. Dưới đây là 8 bước nhận bàn giao theo thứ tự, mỗi bước kèm cách tự kiểm mà không cần đọc mã.
- Quyền quản trị kho mã (Git trên GitHub, GitLab hoặc máy chủ riêng) đứng tên tài khoản của doanh nghiệp, kèm toàn bộ lịch sử commit. Cách kiểm: đăng nhập bằng tài khoản công ty, thấy được nhánh chính và các lần sửa gần nhất.
- Tài liệu dựng và triển khai: phiên bản ngôn ngữ, framework, lệnh cài thư viện, lệnh build, cách đưa lên máy chủ. Cách kiểm: nhờ một lập trình viên không thuộc đội cũ dựng thử trên máy sạch theo đúng tài liệu.
- Tệp mẫu biến môi trường liệt kê đủ tên biến cần có (khóa API, chuỗi kết nối cơ sở dữ liệu, cấu hình email), giá trị thật bàn giao riêng qua kênh an toàn. Cách kiểm: đối chiếu số biến trong tệp mẫu với số biến máy chủ đang dùng.
- Cấu trúc cơ sở dữ liệu (schema), các tệp migration theo thứ tự, và dữ liệu mẫu để chạy thử. Cách kiểm: tạo một cơ sở dữ liệu trống, chạy migration, phần mềm mở lên không lỗi.
- Danh sách thư viện bên thứ ba cùng giấy phép, có thể xuất từ tệp khai báo gói hoặc ở định dạng SBOM như SPDX hay CycloneDX. Cách kiểm: tìm trong danh sách các chữ GPL, AGPL rồi hỏi lại từng mục.
- Quyền với hạ tầng: tên miền, máy chủ hoặc tài khoản đám mây, tài khoản cửa hàng ứng dụng, tài khoản cổng thanh toán và các dịch vụ trả phí khác, tất cả đứng tên doanh nghiệp. Sau bàn giao, đổi lại các khóa và mật khẩu mà đội cũ từng giữ.
- Tài liệu kiến trúc, sơ đồ các phần trung tâm và cách chúng gọi nhau, tài liệu API, kịch bản kiểm thử. Cách kiểm: đội mới đọc xong tìm được nơi sửa một chức năng cụ thể mà khỏi hỏi lại đội cũ.
- Biên bản bàn giao ghi phiên bản mã (mã commit), ngày giờ, danh sách những gì đã nhận, có chữ ký hai bên.

Sau bàn giao, mã nguồn cần được sao lưu như mọi tài sản dữ liệu khác: ít nhất một bản sao kho Git và một bản sao cơ sở dữ liệu nằm ngoài máy chủ đang chạy. Bài bảo trì phần mềm là gì giải thích vì sao một hệ thống không ai động tới vẫn tự hỏng theo thời gian, và đó là lý do người giữ mã cần cập nhật thư viện định kỳ thay vì cất mã vào tủ rồi quên.
Hỏi đáp
Source code là gì?
Source code (mã nguồn) là các tệp văn bản chứa câu lệnh viết bằng ngôn ngữ lập trình, người đọc và sửa được, sau đó được biên dịch hoặc thông dịch thành chương trình máy chạy. Open Source Initiative mô tả mã nguồn là dạng mà lập trình viên muốn dùng nhất khi cần sửa chương trình. Ai có mã nguồn thì sửa và phát triển tiếp được phần mềm.
Mã nguồn mở có kém an toàn hơn mã nguồn đóng không?
Mã công khai tự nó không làm phần mềm yếu đi. Lỗ hổng của các dự án mã nguồn mở lớn được nhiều người tìm và vá công khai. Rủi ro thật nằm ở việc không cập nhật bản vá, dùng plugin bỏ hoang hoặc cấu hình sai, và điều đó đúng với cả phần mềm đóng. Câu hỏi nên đặt là ai chịu trách nhiệm cập nhật hệ thống.
Thuê làm phần mềm xong có đương nhiên được nhận source code không?
Còn tùy hợp đồng. Luật Sở hữu trí tuệ bảo hộ chương trình máy tính như tác phẩm văn học, và việc sửa chữa, nâng cấp do tác giả và chủ sở hữu thỏa thuận bằng văn bản. Hợp đồng cần ghi ai sở hữu mã nguồn sau thanh toán, bên đặt hàng nhận mã đầy đủ hay chỉ nhận bản chạy, và phần lõi dùng chung được cấp quyền ra sao.
Phần mềm nội bộ dùng thư viện GPL có phải công bố mã nguồn không?
Theo GPL FAQ của GNU, một công ty sửa và dùng bản GPL trong nội bộ không có nghĩa vụ công bố, kể cả khi chạy nó trên website của mình. Nghĩa vụ phát sinh khi chuyển bản sao ra ngoài, kể cả giao cho nhà thầu dùng bên ngoài. Riêng AGPL thì bản đã sửa phải cho người dùng qua mạng nhận mã nguồn.
Có lấy được toàn bộ source code của một website đang chạy không?
Từ bên ngoài chỉ lấy được lớp giao diện, tức HTML, CSS và JavaScript mà trình duyệt tải về, bằng chức năng Xem nguồn trang hoặc công cụ tải trang. Mã xử lý trên máy chủ và cơ sở dữ liệu thì không tải được. Chủ website muốn có đủ ba lớp thì cần quyền vào máy chủ và kho mã, hoặc yêu cầu bên làm web bàn giao.
Source code website khác source code phần mềm quản lý ở đâu?
Về bản chất giống nhau, đều là mã viết bằng ngôn ngữ lập trình. Website thường dựng trên một CMS như WordPress nên phần lớn mã là của nền tảng, phần viết riêng là giao diện và plugin. Phần mềm quản lý viết riêng thì phần nghiệp vụ như đơn hàng, kho, phân quyền chiếm phần lớn mã, nên quyền với mã nguồn và tài liệu bàn giao càng quan trọng.
Tình huống ở đầu bài, đội mới xin source code mà chủ doanh nghiệp không có, thường bắt nguồn từ một hợp đồng chưa viết rõ phần mã nguồn và một buổi bàn giao chỉ có tài khoản quản trị. MONA Software viết phần mềm theo yêu cầu cho doanh nghiệp và web app theo nghiệp vụ riêng; mức giá tham khảo cho phần mềm viết riêng nằm ở trang bảng giá phần mềm. Doanh nghiệp đang chuẩn bị thuê làm phần mềm, hoặc đang cần đọc lại một bộ mã cũ để làm tiếp, có thể gọi hotline 1900 636 648 và nói rõ hệ thống đang chạy trên nền gì, hiện đang giữ những gì trong danh sách bàn giao ở trên.




















































