Cách tốt nhất để cung cấp các phiên bản nguồn mở và đóng cạnh nhau một cách an toàn là gì?


8

Công ty của tôi đang tìm cách phát triển và phát hành một dự án phần mềm nguồn mở cùng với một phiên bản nâng cao độc quyền, tương tự như VirtualBox trước 4.0.

Cách tốt nhất để duy trì hai cơ sở mã sao cho các thay đổi đối với phiên bản nguồn mở có thể dễ dàng được tích hợp vào phiên bản thương mại với rủi ro tối thiểu là vô tình đẩy mã độc quyền vào sản phẩm nguồn mở?

Câu trả lời:


9

Tôi sẽ tạo 2 dự án.

  1. Dự án OSS có thể chạy độc lập.
  2. Mã độc quyền phụ thuộc vào mã dự án OSS.

Bạn có thể có phụ thuộc là thời gian xây dựng hoặc chạy phụ thuộc thời gian. Nếu bạn muốn mỗi gói là độc lập, thì bạn có thể có gói độc quyền trong các tệp OSS mà nó cần trong quá trình tạo gói / xây dựng. Nếu tiền phạt của bạn với sự phụ thuộc thời gian chạy, bạn chỉ có thể đóng gói mã độc quyền một mình và có phụ thuộc vào gói OSS trong thời gian chạy.

Những lợi ích:

  • Giải phóng bạn khỏi việc sao chép mã.
  • Nhận sửa lỗi trong cả hai cho chi phí để có được nó trong một.
  • Phân định rõ ràng giữa OSS và Độc quyền.

1
+2: Nếu có thể, hãy tạo các plugin chức năng độc quyền. Trải nghiệm của mọi người với phiên bản OSS sẽ kích thích sự thèm ăn của họ và họ có thể trực tiếp mua / cài đặt các chức năng mới trong khi chạy ứng dụng. Bạn thậm chí có thể thiết lập nó để mỗi plugin độc quyền có thời gian dùng thử X ngày. Điều này không chỉ giải quyết vấn đề quản lý cơ sở mã của bạn, nó giúp cho việc tiếp thị dễ dàng .
Peter Rowell

1

Kiểm soát nguồn & phân nhánh

Root sẽ là mã chung cho cả hai bản phân phối. Bạn cũng có thể (có lẽ) tạo hai nhánh từ gốc của bạn:

Open Source

Closed Source

Open Sourcecó thể sẽ phản ánh gốc của bạn trong kịch bản này. Một cách thường xuyên, bạn sẽ hợp nhất Open SourceClosed Sourcebằng tay ( Closed Sourcecó thể sẽ không nhận được nhiều cập nhật).

Bằng cách này, bạn có thể giữ các cải tiến trong Closed Sourcechi nhánh của mình và lấy các thay đổi mới từ phiên bản Nguồn mở.


Có cách nào để làm điều này bằng cách sử dụng các kho riêng biệt? Chúng tôi hy vọng sẽ có kho lưu trữ chứa mã nguồn mở hiển thị công khai.
rkjnsn

0

Phụ thuộc vào giấy phép nguồn mở không được nêu trong câu hỏi. GPL đưa ra hầu hết các vấn đề về vấn đề này và bất kỳ liên kết tĩnh hoặc liên kết thời gian chạy nào đều bị nghi ngờ.

Đọc FAQ để có kết quả tốt nhất; đừng tin vào những câu trả lời khác Sử dụng plugin là không thực sự hợp pháp. Nhiều sản phẩm thương mại vi phạm GPL theo những cách khác nhau & về cơ bản nhìn theo cách khác.

http://www.gnu.org/licenses/gpl-faq.html

Nếu một chương trình được phát hành theo GPL sử dụng trình cắm, các yêu cầu đối với giấy phép của trình cắm là gì? Nó phụ thuộc vào cách chương trình gọi các trình cắm thêm của nó. Nếu chương trình sử dụng fork và exec để gọi các plugin, thì các plugin là các chương trình riêng biệt, vì vậy giấy phép cho chương trình chính không đưa ra yêu cầu nào cho chúng.

Nếu chương trình tự động liên kết các trình cắm và chúng thực hiện các cuộc gọi chức năng với nhau và chia sẻ cấu trúc dữ liệu, chúng tôi tin rằng chúng tạo thành một chương trình duy nhất, phải được coi là phần mở rộng của cả chương trình chính và trình cắm. Điều này có nghĩa là các plugin phải được phát hành theo GPL hoặc giấy phép phần mềm miễn phí tương thích GPL và các điều khoản của GPL phải được tuân theo khi các plugin đó được phân phối.

Nếu chương trình tự động liên kết các trình cắm, nhưng giao tiếp giữa chúng bị giới hạn trong việc gọi chức năng 'chính' của trình cắm với một số tùy chọn và chờ đợi nó trở lại, đó là trường hợp đường biên.


Nếu bạn giữ bản quyền cho phần mềm GPL, thì bạn có thể tự phân phối các plugin nguồn đóng - người giữ bản quyền gốc là người đặt ra các quy tắc cấp phép và chắc chắn không bị ràng buộc bởi giấy phép. Mặt khác, điều đó có nghĩa là 1) bạn không thể chấp nhận các đóng góp GPL mà không yêu cầu chuyển nhượng bản quyền cho bạn và 2) rằng những người khác không thể phân phối các plugin bằng phần mềm GPL.
han

Tại sao bạn lại tin tưởng FAQ hơn các nguồn khác? Nó đến từ có lẽ là nguồn có thể hiểu được nhất. Và nếu tôi đặt công việc của mình theo GPL, thì không thành vấn đề nếu FSF nói rằng GPL nói rằng bạn có thể làm X. Nếu luật pháp và giấy phép nói rằng bạn không thể, tôi vẫn có thể kiện bạn và tôi vẫn sẽ thắng.
David Schwartz

"Tại sao bạn lại tin tưởng Câu hỏi thường gặp hơn các nguồn khác?" Bởi vì Câu hỏi thường gặp dựa trên các trường hợp thực tế trước đó, không dựa trên giả thuyết ghế tay từ các nhà văn viết blog trao đổi ngăn xếp mà danh tiếng kỹ thuật chỉ được nhìn thấy chủ yếu bởi các điểm được trao bởi sự phổ biến chứ không phải bởi tính chính xác.
Jonathan Cline IEEE

Chúng tôi chưa chọn giấy phép cho phiên bản nguồn mở. Chúng tôi có bản quyền trên tất cả các mã, vì vậy việc phát hành nó theo hai giấy phép riêng biệt không phải là một vấn đề.
rkjnsn

Nếu bạn chưa chọn giấy phép thì tốt hơn hết bạn nên sử dụng giấy phép dựa trên BSD thay vì giấy phép virus (virus = có nghĩa là dựa trên GPL). Nhiều sản phẩm sử dụng thành công netbsd được nhúng trong sản phẩm máy chủ có mã độc quyền (phần giá trị gia tăng) được tích hợp trực tiếp vào cây. Mặc dù như một tác giả khác chỉ ra, bạn có thể phát hành bằng cách sử dụng giấy phép kép .. điều đó có thể gây nhầm lẫn cho việc bán hàng & mkting. Có lẽ một ví dụ thành công để tham khảo là Apple Darwin ("Giấy phép nguồn công cộng của Apple", giờ là giấy phép Apache): en.wikipedia.org/wiki/Darwin_(operating_system)#License
Jonathan Cline IEEE
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.