2009-03-06 32 views
20

Theo tôi biết, khi tôi xây dựng một ứng dụng máy tính để bàn/máy chủ bằng cách sử dụng bất kỳ mã GPL nào như MySQL, tôi sẽ phải phát hành mã nguồn của phần mềm của tôi theo GPL.Cấp phép MySQL và GPL

Nếu tôi muốn phát triển một ứng dụng web bằng cách sử dụng MySQL, mã của tôi sẽ liên kết với các thư viện MySQL. Tôi có phải phát hành mã nguồn của webapp của tôi trong tình huống này để phù hợp với GPL không?

+2

Bạn cũng có thể xem xét sử dụng MariaDB được cấp phép unter LGPL và giao thức là nhị phân tương thích với MySQL. – MrTux

+4

Tôi đang bỏ phiếu để đóng câu hỏi này là không có chủ đề bởi vì đó là về cấp phép hoặc các vấn đề pháp lý, chứ không phải lập trình hoặc phát triển phần mềm. [Xem tại đây] (http://meta.stackoverflow.com/questions/274963/questions-about-licensing/274964#274964) để biết chi tiết và [trợ giúp] để biết thêm. – JasonMArcher

Trả lời

16

Miễn là bạn giữ cho máy chủ chỉ (và do đó "riêng tư"), bạn không phải phát hành nó dưới dạng GPL. Nhưng ngay sau khi nó đến máy tính để bàn công cộng, nó không còn có thể được coi là một xây dựng nội bộ, và do đó mã nguồn là cần thiết.

Vì vậy, bạn có thể:

  • Thả mã của bạn như GPL
  • Mua phiên bản thương mại của MySQL
  • Giữ máy chủ duy nhất.
+0

Thật không may, nó không phải là gần như sạch sẽ cắt: GPL nghiêm cấm ** phân phối ** mà không đưa ra nguồn gốc của mỗi "sản phẩm có nguồn gốc". Điều này ảnh hưởng đến hầu hết mọi ứng dụng web ... xem câu trả lời của tôi bên dưới. –

+0

@ TheodoreR.Smith Thật vậy, tôi nghi ngờ rằng khi chúng tôi thêm mạng phân phối nội dung, điều có thể trở nên xấu xí. Tôi tự hỏi nếu điều này đã từng được thử nghiệm tại tòa án. – luiscubal

+0

Oh nó chưa bao giờ được thử nghiệm tại tòa án. Tất cả những người chơi lớn sẽ bị rên rỉ, vì tất cả họ đều phân phối GPL trên các máy chủ nội bộ của họ. Nếu nó từng đến tòa án và các cụm được tính là phân phối, thì thị trường GPL sẽ nắm bắt và chết gần như ngay lập tức. –

5

Bạn phải phát hành nguồn (theo GPL) hoặc thanh toán giấy phép sở hữu cho MySQL để bạn có quyền phân phối các tệp nhị phân MySQL theo giấy phép phù hợp hơn với các sản phẩm độc quyền sử dụng. Tốt nhất là nên đưa loại câu hỏi này cho luật sư của bạn.

ETA: Chỉ cần làm rõ một chút; nếu bạn viết thư viện riêng của mình để nói chuyện với MySQL bằng cách sử dụng giao thức đường dây của nó, thì bạn sẽ luôn luôn 100% rõ ràng. Tương tự như vậy, nếu bạn sử dụng một thư viện đã làm điều đó, nhưng BSD được cấp phép (như một ví dụ), thì bạn cũng sẽ rõ ràng, bởi vì bạn chỉ đang nói chuyện với MySQL qua kết nối socket, và không thực sự gọi vào mã GPL. Tôi không nhận thức được bất kỳ giao diện được cấp phép BSD nào đối với giao thức MySQL, nhưng chắc chắn có thể có một giao diện nào đó ở đó.

1

Trừ khi bạn lấy được và/hoặc phân phối phần mềm GPL, bạn nên an toàn.

Liên kết với thư viện máy khách MySQL không phải là tác phẩm phái sinh, cũng như không phân phối.

CẬP NHẬT: Hãy suy nghĩ về điều đó, cách bạn liên kết (động hoặc tĩnh) với thư viện sẽ tạo sự khác biệt. Liên kết tĩnh là phân phối, nhưng nếu bạn liên kết động và khách hàng của bạn tải xuống các trình kết nối, thì đó không phải là phân phối và bạn nên an toàn.

Ồ và IANAL.

+0

GPL không phải là LGPL. Có sự khác biệt * lớn *. LGPL có thể được liên kết với phần mềm sở hữu độc quyền, GPL không thể. –

+0

Tôi biết sự khác biệt. Nhưng miễn là bạn không sửa đổi và/hoặc phân phối phần mềm GPL, thì có rất ít sự khác biệt. –

+0

Phải, nhưng điểm mấu chốt là phân phối, không phải là nó là một công việc có nguồn gốc hay không. Đó là tất cả. –

1

MySQL sử dụng cấp phép kép. Khi họ đặt nó - nếu bạn rảnh, chúng tôi hoàn toàn miễn phí.

Vì vậy, nếu bạn sử dụng, theo như tôi biết, thì chỉ có kết nối JDBC của MySQL - bạn nên có giấy phép hoặc mã GPL của bạn.

2

Nếu bạn đang tự chạy ứng dụng web và không phân phối ứng dụng đó dưới dạng ứng dụng thì bạn không phải giải phóng nguồn. Cho phép truy cập vào một ứng dụng web không được coi là phân phối.

Chỉnh sửa: nếu quan tâm bạn có thể xem Affero General Public License, yêu cầu nguồn đó phải có sẵn cho người dùng mạng phần mềm AGPL (ví dụ: nó sẽ áp dụng cho các ứng dụng web).

+0

Nếu bạn liên kết chống lại một lib GPL và phân phối, bạn làm. Nếu bạn giữ nó bên trong, bạn thì không. Có những dòng tiền phạt (mã vận chuyển đến phía máy khách để thực hiện, vv) mà các luật sư phải tranh cãi. –

+0

@Michael Trausch Loại bỏ dòng đó dựa trên đầu vào của bạn, cảm ơn. – Boden

0

Trước tiên, tôi không phải là luật sư. Nói chuyện với một trước khi tham gia bất kỳ lời khuyên nào ở đây.

Ngoài ra, nếu bạn không phân phối ứng dụng web của mình, bạn có thể không cần phải giải phóng các thay đổi của mình. Bạn vẫn có thể sử dụng ứng dụng web của mình để người khác sử dụng nếu bạn lưu trữ ứng dụng web.

0

Nếu phân phối của bạn bao gồm và cài đặt MySql trong cùng một gói, nó yêu cầu giấy phép thương mại.

Nhưng nếu bạn chỉ phân phối mã của mình, chỉ với thông báo "yêu cầu MySql" và tập lệnh cài đặt (để tạo/điền các bảng), thì không có vấn đề gì, AFAIK.

IANAL, tất nhiên.

1

Nếu tôi muốn phát triển một ứng dụng web bằng cách sử dụng MySQL, mã của tôi sẽ liên kết với các thư viện MySQL. Tôi có nên phát hành mã nguồn của webapp của tôi trong tình huống này để phù hợp với GPL không?

  1. Như những người khác đã nói, nếu bạn không phân phối ứng dụng cho những người khác không có vấn đề gì cả.

  2. Thông thường, bạn sẽ phát triển dựa trên API cơ sở dữ liệu tiêu chuẩn và cho phép người dùng quyết định cơ sở dữ liệu nào kết nối với ứng dụng. Trong trường hợp này không có vấn đề gì. “Mã của bạn” sẽ không liên kết với libmysqlclient, nhưng nó có khả năng có thể được kết hợp với một mô-đun truy cập cơ sở dữ liệu liên kết tới libmysqlclient.

  3. Nếu bạn muốn phân phối trình cài đặt thiết lập ứng dụng và libmysqlclient của bạn với nhau, có thể sẽ không được tính là "tổng hợp đơn thuần", vì vậy nó sẽ yêu cầu bạn phân phối ứng dụng của bạn theo giấy phép nguồn mở. Tuy nhiên, điều này không nhất thiết phải là GPL - xem số MySQL FOSS License Exception.

  4. Nếu bạn muốn phân phối trình cài đặt thiết lập ứng dụng của bạn và máy chủ MySQL, ngoại lệ không áp dụng, do đó bạn chỉ bị giới hạn ở GPL.

Đương nhiên IANAL, và chắc chắn vẫn còn một số không chắc chắn về những gì được tính là dẫn xuất đặc biệt liên quan đến liên kết động. Tuy nhiên ở trên là sự hiểu biết của tôi về vị trí truyền thống của MySQL AB về cấp phép, và tôi đã không nghe nói về bất kỳ thay đổi sau CN-tiếp quản.

+0

@bobience bạn có thể vui lòng, cung cấp một số tham chiếu đến việc giải thích rõ ràng của bạn về việc cấp phép mysql GPL. MySQL không giải thích rõ ràng về các liên kết trang web cấp phép của họ –

1

Thật không may, nó không phải là quá gần như sạch sẽ cắt: GPL cấm phân phối mà không đưa ra nguồn gốc của mỗi "sản phẩm có nguồn gốc". Phân phối được định nghĩa hợp pháp là hành động chuyển nguồn từ một máy tính sang một hoặc nhiều máy tính để sử dụng chính thức.

Thật không may, cũng có thể bao gồm sử dụng trên cụm máy chủ, hộp QA, hộp dev, v.v. Trong cửa hàng nhà phát triển hiện đại, chỉ cần phát hành mã tới nhiều giao diện người dùng/phụ trợ. pháp luật).

Không quan trọng những gì Tổ chức Phần mềm Tự do nghĩ, điều quan trọng là một vài giám khảo nghĩ gì khi ai đó/công ty bị kiện vì đã làm chính xác điều đó.

Đó chỉ là một lý do nữa tại sao khách hàng chính của GPL những ngày này là các công ty muốn giữ cho đối thủ cạnh tranh không được yêu cầu mã số. Tất cả mọi người khác nên xem xét ít các giấy phép như giấy phép MIT hoặc Creative Commons Attribution.

+1

Bạn phải cung cấp mã nguồn cho bất kỳ ai mà bạn phân phối với GPL. Điều đó không nhất thiết có nghĩa là bạn phải cung cấp công khai cho mọi người. Nó là một vấn đề không nếu bạn đang phân phối nó trên các máy chủ của riêng bạn. –

2

Bạn không nhất thiết phải liên kết với các thư viện MySQL để sử dụng MySQL trong ứng dụng của bạn. Tất cả những gì bạn phải làm là "nói" với máy chủ MySQL bằng giao thức MySQL; trong trường hợp đó, bạn đang kết nối với máy chủ MySQL với tư cách là một khách hàng, tức là người dùng, và sau đó bạn không cần phải phát hành phần mềm của mình theo giấy phép GNU GPL.

Câu hỏi đặt ra là, làm thế nào để chương trình của bạn có thể nói được giao thức MySQL? Một khả năng là sử dụng thư viện máy khách MySQL chính thức (trình kết nối), trong đó GPL'd. Nếu bạn làm điều này, bạn đang liên kết tĩnh chương trình của bạn với một thư viện GPL, và do đó bạn cần phải phát hành phần mềm của bạn theo GPL.

Hoặc, bạn có thể liên kết với thư viện ứng dụng của bên thứ ba, với giấy phép khác. Ví dụ, bạn có thể sử dụng MariaDB Client Library, là LGPL'd (và do đó tương thích với phần mềm sở hữu độc quyền) và cung cấp cùng một API của thư viện máy khách MySQL gốc. Xem MariaDB licensing FAQ, cũng áp dụng cho MySQL, để biết thêm chi tiết và tư vấn. Có thể khó khăn khi phân phối máy chủ MySQL cùng với phần mềm của bạn: bạn có thể yêu cầu khách hàng tải xuống và cài đặt MySQL theo cách riêng của họ hoặc phát triển một trình tải xuống đơn giản để được phân phối với phần mềm của bạn.

+1

Cảm ơn: MariaDB đang làm việc cho tôi. Kỳ lạ thay, 'DatabaseMetaData # getColumns (" "," ", tableName," ")' không trả lại cột nào, nhưng điều đó dễ dàng được mã hóa bằng truy vấn bình thường với 'SHOW COLUMNS'. –

Các vấn đề liên quan