Thực tiễn tốt nhất để phát hành ứng dụng PHP nguồn mở


10

Tôi là một nhà phát triển PHP để kiếm sống nhưng chưa bao giờ làm việc hoặc đóng góp cho bất kỳ dự án nguồn mở nào trước đây.

Tôi đang phát triển một CMS để sử dụng riêng của tôi. Tôi có một nguyên mẫu hoạt động và tôi nghĩ rằng một khi nó đã sẵn sàng (có thể là một vài tháng nữa) thì đây có thể là điều mà cộng đồng PHP sẽ quan tâm.

Tôi là một nhà phát triển khá tự tin nhưng có những lĩnh vực mà kiến ​​thức của tôi còn thiếu, đặc biệt là khi nói đến các vấn đề nguồn mở:

  • Cách tốt nhất để công khai dự án và / hoặc tìm những người khác có thể quan tâm đến việc hợp tác
  • CMS của tôi được cung cấp bởi CakePHP và về cơ bản nằm như một lớp trên nó. Tôi đã rẽ nhánh dự án CakePHP trên GitHub: Trước đây tôi đã sử dụng các hệ thống kiểm soát phiên bản (SVN) nhưng tôi khá mới với GIT nên muốn chắc chắn rằng tôi đang làm mọi thứ theo "cách tốt nhất"
  • Làm thế nào tôi có thể tìm hiểu về các vấn đề cấp phép? Giấy phép nguồn mở nào là tốt nhất cho ứng dụng của tôi? Ngoài ra, dự án của tôi mượn từ rất nhiều dự án nguồn mở khác, ví dụ tôi có các phần mã (mà tôi đã sửa đổi rất nhiều) nhưng có thông báo bản quyền / giấy phép tại chỗ - Tôi không biết nghĩa vụ của mình là gì về giữ những thứ này trong

Đây chỉ là một vài ví dụ về các câu hỏi tôi có, nhưng tôi cảm thấy như phải có một số tài nguyên ngoài đó sẽ hữu ích cho tôi. Nơi tốt nhất để bắt đầu, các cộng đồng / trang web tốt nhất hiện có bao gồm những vấn đề này là gì? Tôi đã có một cái nhìn xung quanh nhưng không thể nghĩ ra nhiều ...


Có một vài câu trả lời hay về công cụ cấp phép, có ý tưởng nào về các câu hỏi khác không? Có thể nên chia điều này thành một vài bài viết!
user916336

Câu trả lời:


5

Tôi không phải là Luật sư, nhưng tôi sẽ thử cái này.

CakePHP được cấp phép theo giấy phép MIT , về cơ bản có nghĩa là nó cho phép tái sử dụng trong phần mềm độc quyền với điều kiện giấy phép được phân phối cùng với phần mềm đó. Nó tương thích với các giấy phép GPL , mà rất nhiều dự án nguồn mở được phát hành theo.

Đối với các dự án khác mà bạn "mượn", bạn sẽ phải kiểm tra các loại giấy phép của chúng và kiểm tra tính tương thích của chúng với nhau và loại giấy phép bạn quyết định sử dụng. Nếu bất kỳ ai trong số họ sử dụng giấy phép GPL , bạn cũng sẽ phải phát hành với GPL, như các điều khoản của trạng thái giấy phép

GPL là giấy phép copyleft đầu tiên cho sử dụng chung, có nghĩa là các tác phẩm phái sinh chỉ có thể được phân phối theo cùng điều khoản giấy phép.

...

GPL là giấy phép copyleft đầu tiên cho sử dụng chung, có nghĩa là các tác phẩm phái sinh chỉ có thể được phân phối theo cùng điều khoản giấy phép.

Đề nghị của tôi là phát hành theo giấy phép GNU GPL v3 vì nó cung cấp cho bạn quyền sở hữu đầy đủ đối với công việc của bạn trong khi cho phép người khác sử dụng nó trong cả các dự án thương mại và mở. Tuy nhiên, hãy nhớ rằng giấy phép của các dự án "mượn" phải tương thích .


Đối với các thực tiễn tốt nhất với Git và Github, hãy sử dụng git submoduleđể đưa các dự án khác vào thư viện của riêng bạn. Điều này tốt hơn là bao gồm các tệp trực tiếp vì bạn không đề xuất công việc là của riêng bạn.

$ git submodule add git://github.com/cakephp/cakephp.git vendor/cake-php
$ git submodule update --init

Subodule git cũng là một cái gì đó tôi không rõ ràng. Ví dụ: dự án của tôi sử dụng jQuery và jQuery UI - làm thế nào tôi có thể đưa nó vào làm mô hình con khi nguồn trên GitHub được chia thành nhiều tệp và thư mục. Tôi đã có điều tương tự với HTMLPurifier mà tôi cũng đang sử dụng. Các tập tin tôi cần nằm trong một thư mục con, nhưng với mô hình con git, có vẻ như tôi không có lựa chọn nào khác ngoài việc bao gồm vô số công cụ bổ sung mà tôi không cần, nó sẽ loại bỏ dự án của tôi một cách không cần thiết, hoặc như bạn nói cam kết công việc của người khác như của riêng tôi!

Vì bản chất của cấp phép, bạn không thể tách ra và chỉ bao gồm các tệp bạn muốn. Bạn nên bao gồm toàn bộ dự án vì nó được đóng gói. git submodule add git://github.com/jquery/jquery.git public/vendor/jquery
adlawson

Những người khác dường như không làm điều này mặc dù: lấy Wordpress, họ dường như chỉ nhét các tệp được rút gọn mà họ cần từ jQuery vào một thư mục và cam kết chúng: github.com/wordpress/wordpress/tree/master/wp-includes/js /

1
WordPress sử dụng SVN để kiểm soát phiên bản. Kho Github của họ chỉ đơn giản là một tấm gương. Theo như tôi biết, SVN không có khả năng "mô hình con", vì vậy họ không có lựa chọn nào khác ngoài việc giới thiệu nó. Một lưu ý khác, đừng lấy WordPress làm ví dụ về thực hành tốt nhất.
adlawson

Trừ khi tôi thiếu một cái gì đó dường như không có cách nào để làm điều này trong trường hợp của jQuery. Hãy xem repo github.com/jquery/jquery của họ , đó chỉ là hàng trăm tệp .js riêng lẻ và tập lệnh xây dựng - vì vậy tôi không thể đưa nó vào dự án của mình mà không cần tải xuống một bản sao từ jquery.com và tự mình thực hiện , hoặc là tôi sai?

0

Kiểm tra hướng dẫn này từ Eric S. Raymond (phần còn lại của cuốn sách cũng đáng đọc).

Cá nhân, tôi sẽ không lo lắng về điều đó nhiều - bạn sẽ không kiếm tiền trực tiếp từ việc này, và cũng không phải ai khác, vì đã có rất nhiều CMS đa năng miễn phí tuyệt vời. Tôi khuyên bạn nên đi với giấy phép tự do nhất mà bạn có thể (MIT hoặc BSD), trừ khi bạn mượn mã theo giấy phép virus (thường là GPL hoặc nhiều loại), trong trường hợp đó bạn bị ép buộc bằng cách này hay cách khác.

Hãy nhớ đọc kỹ tất cả các giấy phép của thư viện và đoạn trích bạn đang sử dụng; họ nên nói rõ liệu bạn có được phép phân phối lại và sửa đổi mã hay không và liệu bạn có cần đưa chúng vào bất kỳ tác phẩm phái sinh nào không (hầu hết các giấy phép đều yêu cầu và ngay cả đối với những người không, quy kết là điều ít nhất bạn có thể làm để cảm ơn tác giả gốc cho công việc của họ).

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.