2012-10-09 18 views
7

Tôi đã hỏi một số question trước đây nhưng lần này tôi muốn tập trung vào ngôn ngữ go. Tôi đã đọc số wiki page of go language và nhận ra có một đoạn giấy phép trong bản tóm tắt có nội dung là BSD style + Patent grant. Tôi biết rằng đó cũng là một frontend gcc cho go mà tôi đoán có cái gì đó như GPL giấy phép mặc dù không có đề cập đến nó trong trang wiki, mà làm cho tôi ngạc nhiên:go language license

Sản phẩm đề cập BSD giấy phép dành cho:

  • trình biên dịch
  • và/hoặc ngôn ngữ
  • và/hoặc các thư viện chuẩn

nếu có sự phân biệt như vậy?

Một câu trả lời thực tế sẽ được hoan nghênh (tức là làm thế nào tôi có thể cấp phép cho một nguồn hoặc nhị phân?) Cũng như trái ngược với các ngôn ngữ cũ (C, C++, Java) nếu có ..

+4

Tôi đang bỏ phiếu để đóng câu hỏi này là chủ đề không chính xác vì ** đó là về cấp phép hoặc các vấn đề pháp lý **, không phải là lập trình hoặc phát triển phần mềm. [Xem tại đây] (http://meta.stackoverflow.com/a/274964/1402846) để biết chi tiết và [help/on-topic] để biết thêm. –

Trả lời

6

Hầu hết các phần của Go được cấp phép theo three-clause BSD style licensepatent grant. Điều này bao gồm các trình biên dịch gc, thư viện chuẩn và các công cụ liên quan khác. Có hai ngoại lệ đáng chú ý mà tôi biết:

Các tài liệu trang web khác được cấp phép theo Giấy phép Creative Commons Ghi công 3.0. Cuộn xuống cuối trang bất kỳ trên golang.org để xem. (Tôi cho rằng điều này có nghĩa là một số nhận xét mã nguồn được cấp phép theo cùng một cách, có vẻ hơi lạ.)

Giao diện người dùng của gccgo sử dụng cùng giấy phép kiểu BSD như phần còn lại của Go, tuy nhiên vì nó phải được liên kết với phần còn lại của gcc, nó có hiệu quả GPLv3. (Lưu ý rằng, trái với yêu cầu của janneb, gccgo không chia sẻ bất kỳ mã nào với trình biên dịch khác. Nó có chung một số mã thời gian.)

Có những nỗ lực liên tục để tách các phần của giao diện người dùng phụ thuộc vào gcc rằng nó có thể được sử dụng như một lối vào cho các trình biên dịch Go khác, chẳng hạn như trình biên dịch dựa trên LLVM. Trình biên dịch như vậy có thể được phát hành hoàn toàn theo giấy phép kiểu BSD.

+0

Việc liên kết với thời gian chạy GNU C bị loại trừ khỏi yêu cầu cấp phép GPL để mã nguồn mở của bạn: http://stackoverflow.com/questions/10838807/license-of-runtime-libraries-included-in-gcc https://www.gnu.org/licenses/gcc-exception-3.1.html đọc của tôi về những người dẫn tôi tin rằng bạn không cần mã nguồn mở mã Go của bạn đơn giản chỉ vì bạn sử dụng một số thư viện C mang lại trong thời gian chạy GNU C. –

+0

Tôi không tuyên bố rằng giao diện người dùng của gccgo là GPL vì nó liên kết với libc, nhưng vì nó liên kết với nhiều GCC, mà không (theo như tôi biết) có một loại trừ. Đã có những nỗ lực để tách lối vào khỏi GCC, nhưng tôi tin rằng chúng không đầy đủ và hiện không hoạt động. –

+0

Ah, bây giờ tôi hiểu ý của bạn là gì, @Evan Shaw. Điều này cũng giúp làm rõ mọi thứ cho tôi: "Trình biên dịch gccgo là giao diện mới cho GCC, trình biên dịch GNU được sử dụng rộng rãi. Mặc dù giao diện người dùng theo giấy phép kiểu BSD, gccgo thường được sử dụng như một phần của GCC và sau đó được bao quát bởi Giấy phép Công cộng GNU (giấy phép bao gồm gccgo chính nó như là một phần của GCC; nó không bao gồm mã được tạo bởi gccgo " https://golang.org/doc/install/gccgo –

0

Giấy phép BSD áp dụng cho trình biên dịch và thư viện chuẩn. Tôi không biết giấy phép "bản thân ngôn ngữ" là gì; điều đó có nghĩa là gì, văn bản của thông số ngôn ngữ, hay?

Giao diện người dùng trong GCC cũng được cấp phép BSD (AFAIK nó chia sẻ mã với trình biên dịch khác), mặc dù phần còn lại của trình biên dịch GCC vẫn thuộc GPLv3.