TrungTamSoHoa.comTrung Tâm Số Hoá
Quản trị dự án phần mềm

Điều khoản hợp đồng phát triển phần mềm: mã nguồn, sở hữu trí tuệ, bảo hành

Các điều khoản then chốt của hợp đồng phát triển phần mềm: quyền sở hữu mã nguồn, thành phần mã nguồn mở, ký quỹ mã nguồn, bảo hành, giới hạn trách nhiệm, chấm dứt.

Macro shot of a brass key resting on a closed leather folder beside a sealed envelope on dark slate, single soft side light, deep green and gold palette

Ngoài phạm vi và giá, hợp đồng phát triển phần mềm phải trả lời rõ bảy câu: ai sở hữu mã nguồn, bàn giao những gì, phần mềm dùng thành phần của bên thứ ba nào, lỗi được sửa miễn phí trong bao lâu, trách nhiệm bồi thường giới hạn ở đâu, dữ liệu được bảo vệ thế nào, và chấm dứt giữa chừng thì xử lý ra sao. Thiếu một câu trả lời, bạn có thể trả tiền cho một hệ thống mà không có quyền sửa, không mang sang nhà cung cấp khác được.

Bài này giải thích từng nhóm điều khoản dưới góc bên đặt hàng, kèm danh mục kiểm tra trước khi ký. Phần pháp lý viết ở mức nguyên lý: quy định về quyền tác giả đối với chương trình máy tính, hợp đồng và bảo vệ dữ liệu được sửa đổi theo thời gian, nên trước khi ký hợp đồng giá trị lớn, nên nhờ luật sư rà soát theo văn bản hiện hành.

Quyền sở hữu mã nguồn: điều khoản quan trọng nhất

Ở Việt Nam, chương trình máy tính được bảo hộ dưới dạng tác phẩm theo pháp luật quyền tác giả. Với phần mềm làm theo hợp đồng, nguyên tắc chung là quyền tài sản thuộc bên giao kết hợp đồng, trừ khi các bên thoả thuận khác. Chính cụm "trừ khi thoả thuận khác" là lý do điều khoản sở hữu phải viết rõ, không để mặc định. Hãy kiểm văn bản hiện hành và hỏi luật sư về cách áp dụng cụ thể.

Vấn đề thực tế phức tạp hơn lý thuyết. Hầu hết công ty phần mềm có những thư viện, khung sườn, mô-đun dùng lại cho nhiều khách hàng. Họ sẽ không chuyển quyền sở hữu phần đó cho bạn, và điều đó hợp lý. Cấu trúc phổ biến là chia ba lớp: phần làm riêng cho bạn thì bạn sở hữu; phần có sẵn của nhà cung cấp thì họ giữ quyền, bạn được cấp giấy phép sử dụng vĩnh viễn, không độc quyền, được sửa đổi cho mục đích nội bộ; phần của bên thứ ba, gồm mã nguồn mở, theo giấy phép gốc.

Điều cần tránh là hợp đồng chỉ ghi "bàn giao phần mềm" mà không nói bàn giao mã nguồn, hoặc ghi bên đặt hàng sở hữu nhưng giấy phép cho phần có sẵn chỉ có hiệu lực khi còn hợp đồng bảo trì. Khi đó, ngừng bảo trì là mất quyền dùng hợp pháp chính phần mềm mình đã trả tiền.

Danh mục bàn giao: "mã nguồn" phải gồm những gì

Nhận được một tệp nén mã nguồn chưa có nghĩa là có thể vận hành và sửa hệ thống. Danh mục bàn giao nên liệt kê cụ thể:

  • Toàn bộ mã nguồn trên kho quản lý phiên bản, có lịch sử thay đổi, không chỉ bản chụp cuối cùng.
  • Kịch bản dựng và triển khai: cách biên dịch, đóng gói, đưa lên máy chủ từ đầu trên một môi trường sạch.
  • Cấu trúc cơ sở dữ liệu và các kịch bản chuyển đổi dữ liệu theo phiên bản.
  • Tài liệu kiến trúc: các thành phần, cách chúng giao tiếp, các tích hợp với hệ thống ngoài.
  • Danh sách thành phần bên thứ ba và mã nguồn mở cùng phiên bản và giấy phép.
  • Bộ kiểm thử tự động và hướng dẫn chạy.
  • Tài khoản quản trị của mọi dịch vụ đám mây, tên miền, chứng thư số, kho ứng dụng di động — đứng tên doanh nghiệp bạn.
  • Tài liệu vận hành: sao lưu, khôi phục, giám sát, xử lý sự cố thường gặp.
  • Tài liệu hướng dẫn người dùng và quản trị viên.

Một phép thử đơn giản trong nghiệm thu bàn giao: nhờ một kỹ sư không thuộc nhà cung cấp dựng lại hệ thống từ mã nguồn trên một máy chủ mới, chỉ dựa vào tài liệu được giao. Làm được thì bàn giao đạt; không làm được thì bạn biết thiếu gì trong khi còn đòi được. Đặc biệt lưu ý dòng về tài khoản: nhiều doanh nghiệp phát hiện ứng dụng di động của mình nằm trên tài khoản nhà phát triển của công ty phần mềm.

Mã nguồn mở trong phần mềm đặt làm

Phần mềm hiện đại hầu như luôn dùng nhiều thư viện mã nguồn mở. Điều đó tốt về chi phí và chất lượng, nhưng mỗi thư viện đi kèm một giấy phép với nghĩa vụ riêng. Có thể chia thô thành hai nhóm. Nhóm dễ dãi như MIT, BSD, Apache 2.0 chủ yếu yêu cầu giữ thông báo bản quyền. Nhóm copyleft như GPL yêu cầu khi phân phối phần mềm phái sinh thì phải phát hành mã nguồn theo cùng giấy phép; AGPL mở rộng nghĩa vụ đó sang cả trường hợp cung cấp phần mềm qua mạng.

Với phần mềm chỉ dùng nội bộ, nghĩa vụ copyleft ít khi kích hoạt, vì không phân phối ra ngoài. Nhưng nếu bạn bán phần mềm cho khách, cài cho đối tác, hoặc cung cấp dưới dạng dịch vụ, một thư viện copyleft đặt sai chỗ có thể tạo ra nghĩa vụ công bố mã nguồn hoặc rủi ro vi phạm. Cách hiểu từng giấy phép trong từng tình huống cần chuyên gia; hợp đồng chỉ cần bảo đảm bạn biết mình đang dùng gì.

Điều khoản nên có: nhà cung cấp cam kết liệt kê đầy đủ thành phần bên thứ ba, không dùng thành phần copyleft mạnh khi chưa được bạn đồng ý bằng văn bản, và chịu trách nhiệm nếu vi phạm giấy phép do họ gây ra. Nhiều công cụ quét thành phần phần mềm có thể tự động lập danh sách này, gọi là SBOM (bảng kê thành phần phần mềm).

Bảo hành, bảo trì và giới hạn trách nhiệm

Ba khái niệm này hay bị lẫn. Phân biệt rõ giúp bạn biết khoản nào đã nằm trong giá, khoản nào phải trả thêm:

Điều khoảnNội dungĐiểm cần đàm phán
Bảo hànhSửa miễn phí lỗi so với đặc tả đã nghiệm thu, trong một thời hạn sau bàn giaoThời hạn; định nghĩa lỗi; thời gian phản hồi theo mức nghiêm trọng; bảo hành có bao gồm lỗi phát hiện do khối lượng dữ liệu tăng không
Bảo trì, hỗ trợDịch vụ có phí sau bảo hành: sửa lỗi, cập nhật bảo mật, hỗ trợ người dùng, thay đổi nhỏGiá theo năm, phạm vi, cam kết mức dịch vụ, cơ chế tăng giá, quyền ngừng mà vẫn giữ quyền dùng phần mềm
Giới hạn trách nhiệmTrần bồi thường tối đa của mỗi bênTrần thường bằng một tỷ lệ hoặc toàn bộ giá trị hợp đồng; loại trừ trần với vi phạm bảo mật, sở hữu trí tuệ, cố ý
Bồi hoàn sở hữu trí tuệNhà cung cấp chịu trách nhiệm nếu bên thứ ba kiện phần mềm vi phạm quyềnPhạm vi; ai điều hành việc bào chữa; phương án thay thế khi vi phạm
Bảo mật thông tin và dữ liệuNghĩa vụ giữ bí mật, xử lý dữ liệu cá nhân, thông báo sự cốThời hạn bảo mật sau chấm dứt; tuân thủ quy định bảo vệ dữ liệu cá nhân hiện hành; xoá dữ liệu khi kết thúc

Giới hạn trách nhiệm là điều khoản nhà cung cấp quan tâm nhất và bên đặt hàng hay bỏ qua. Trần quá thấp, như chỉ bằng phí một tháng, khiến cam kết chất lượng gần như không có hậu quả. Trần không giới hạn thì nhà cung cấp tốt sẽ từ chối hoặc cộng phí bảo hiểm vào giá. Mức hợp lý phụ thuộc giá trị và rủi ro của hệ thống; nên tham khảo luật sư.

Ký quỹ mã nguồn: khi nào cần

Ký quỹ mã nguồn (source code escrow) là thoả thuận ba bên: nhà cung cấp gửi mã nguồn và tài liệu cho một bên trung gian giữ, cập nhật theo từng phiên bản; bên trung gian giao cho khách hàng khi xảy ra sự kiện kích hoạt như nhà cung cấp phá sản, ngừng kinh doanh sản phẩm, hoặc vi phạm nghiêm trọng nghĩa vụ bảo trì. Cơ chế này phổ biến khi bạn mua phần mềm mà nhà cung cấp không chuyển giao mã nguồn.

Với phần mềm đặt làm mà bạn sở hữu mã nguồn và nhận bàn giao định kỳ, ký quỹ thường không cần. Nó có ý nghĩa khi bạn dùng sản phẩm của một công ty nhỏ cho quy trình cốt lõi, hoặc khi phần có sẵn của nhà cung cấp chiếm phần lớn hệ thống. Ở Việt Nam, dịch vụ ký quỹ chuyên nghiệp chưa phổ biến; một số doanh nghiệp dùng biến thể đơn giản hơn như gửi bản sao mã nguồn mã hoá cho luật sư hoặc ngân hàng giữ.

Ký quỹ chỉ có giá trị nếu bản ký quỹ dùng được. Nên có điều khoản xác minh định kỳ: một bên độc lập kiểm tra rằng mã gửi giữ dựng được thành phần mềm đang chạy. Không xác minh, bạn có thể nhận về một bản mã từ ba năm trước khi cần đến.

Danh mục rà soát trước khi ký

Mười câu hỏi bên đặt hàng nên trả lời được bằng cách chỉ vào điều khoản cụ thể:

  1. Phần làm riêng thuộc sở hữu ai, có hiệu lực từ khi nào: khi bàn giao hay khi thanh toán đủ?
  2. Phần có sẵn của nhà cung cấp được cấp phép thế nào: vĩnh viễn, có được sửa, có phụ thuộc hợp đồng bảo trì không?
  3. Danh mục bàn giao có liệt kê mã nguồn, tài liệu, kịch bản triển khai, tài khoản không?
  4. Có danh sách thành phần bên thứ ba và cam kết về giấy phép không?
  5. Thời hạn bảo hành, định nghĩa lỗi, thời gian phản hồi theo mức nghiêm trọng là gì?
  6. Trần trách nhiệm là bao nhiêu, loại trừ những gì?
  7. Nhân sự chủ chốt có được cam kết giữ, thay người cần điều kiện gì?
  8. Nghĩa vụ bảo mật, xử lý dữ liệu cá nhân và thông báo sự cố đã đủ chưa?
  9. Chấm dứt trước hạn: thanh toán phần đã làm thế nào, bàn giao mã nguồn dở dang ra sao, hỗ trợ chuyển giao bao lâu?
  10. Tranh chấp giải quyết ở đâu: toà án hay trọng tài, luật áp dụng nào?

Điều khoản chấm dứt nên có nghĩa vụ hỗ trợ chuyển giao cho nhà cung cấp mới trong một khoảng thời gian có tính phí hợp lý. Đây là điều khoản mà lúc ký ai cũng nghĩ không cần, và lúc cần thì không còn sức đàm phán.

Câu hỏi thường gặp

Nhà cung cấp chỉ giao bản cài đặt, không giao mã nguồn, có hợp lý không?

Hợp lý nếu bạn mua sản phẩm đóng gói hoặc thuê bao, vì bạn trả tiền quyền dùng, không trả tiền phát triển. Không hợp lý nếu bạn trả toàn bộ chi phí phát triển phần làm riêng. Khi đó ít nhất phần làm riêng phải giao mã nguồn, hoặc có ký quỹ mã nguồn kèm điều kiện kích hoạt rõ ràng.

Có nên đăng ký quyền tác giả cho phần mềm đặt làm?

Quyền tác giả phát sinh khi tác phẩm được tạo ra và định hình, không bắt buộc đăng ký. Tuy nhiên giấy chứng nhận đăng ký là chứng cứ thuận lợi khi tranh chấp. Nếu phần mềm có giá trị thương mại hoặc bạn định bán lại, nên cân nhắc đăng ký, với hồ sơ thể hiện rõ quyền sở hữu theo hợp đồng.

Nhà cung cấp có được dùng lại mã viết cho mình để làm cho khách khác không?

Phụ thuộc hợp đồng. Nếu bạn sở hữu phần làm riêng, họ không được dùng lại phần đó. Họ vẫn được dùng kỹ năng, kinh nghiệm và các thành phần có sẵn của họ. Nếu quy trình của bạn là bí mật kinh doanh, nên có điều khoản bảo mật và hạn chế làm sản phẩm tương tự cho đối thủ trực tiếp trong một thời gian hợp lý.

Điều khoản phạt và bồi thường thiệt hại trong hợp đồng phần mềm nên viết thế nào?

Phạt vi phạm và bồi thường thiệt hại là hai chế tài khác nhau, có quy định riêng về điều kiện áp dụng và mức tối đa tuỳ loại hợp đồng. Nên ghi rõ hành vi nào bị phạt, cách tính, có cộng dồn với bồi thường không. Phạt chậm tiến độ nên loại trừ phần chậm do bên đặt hàng. Hỏi luật sư về giới hạn theo luật hiện hành.

Dữ liệu doanh nghiệp nằm trên máy chủ nhà cung cấp thì cần điều khoản gì?

Cần quy định dữ liệu thuộc về bạn, nhà cung cấp chỉ xử lý theo chỉ dẫn; vị trí lưu trữ; biện pháp bảo mật tối thiểu; sao lưu; thông báo sự cố trong thời hạn ngắn; quyền xuất toàn bộ dữ liệu theo định dạng dùng được; và nghĩa vụ xoá có xác nhận khi chấm dứt. Với dữ liệu cá nhân, đối chiếu quy định bảo vệ dữ liệu cá nhân hiện hành.

Hợp đồng mẫu của nhà cung cấp có nên ký nguyên không?

Hợp đồng mẫu được soạn để bảo vệ bên soạn. Không có nghĩa là xấu, nhưng thường thiếu các điều khoản về bàn giao mã nguồn, hỗ trợ chuyển giao, giới hạn trách nhiệm cân bằng. Hãy đọc với danh mục rà soát ở trên, đánh dấu những điều thiếu và đề xuất bổ sung bằng phụ lục. Nhà cung cấp chuyên nghiệp quen với việc này.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.