Tôi cần làm gì để KHÔNG ăn cắp mã Hello Hello World với giấy phép GPL?


42

Trong dự án, tôi tìm thấy một tệp math.c, với tiêu đề GPL lớn và ...

//------------------------------------------------------------------------------
/// Returns the minimum value between two integers.
/// \param a  First integer to compare.
/// \param b  Second integer to compare.
//------------------------------------------------------------------------------
unsigned int min(unsigned int a, unsigned int b)
{
    if (a < b) {
        return a;
    }
    else {
        return b;
    }
}

OK, tuyệt, vậy tôi cần lấy giá trị tối thiểu và ... tập tin này !? Vì vậy, tôi cần phải mở toàn bộ dự án vì nó? Hay tôi cần phải phát minh lại toán học?

Tôi không tin đó chỉ là điên rồ, vì vậy câu hỏi là: khi nào chúng ta có thể xóa tiêu đề GPL?

Tôi phải là một kẻ lập dị và làm điều đó ?

unsigned int min(             unsigned int
JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE,
unsigned int hyrthrtRERG            ) {  if
(JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE
< hyrthrtRERG            ) {  return JEIOfuihFHIYEFHyigHUEFGEGEJEIOFJOIGHE;  }
else {return hyrthrtRERG            ;    } }

Nghiêm túc mà nói, họ có muốn tôi viết mã như trên không?


22
Chà, trong trường hợp gần đây của Google vs Oracle the jury did find that one nine-line function that Google acknowledged copying was infringing(từ ArsTechnica ).
Zenon

5
Aww nào, nghiêm túc chứ?
Mircea Chirea

33
Tôi muốn nói rằng sự tồn tại của câu hỏi này đã chứng minh một điều tồi tệ - Công việc của một lập trình viên trở nên ít lập trình hơn, sự lộn xộn và quan liêu hợp pháp hơn
K.Steff

4
Sao chép nó . Một chức năng tầm thường như minkhông được bảo vệ bởi bản quyền. Xem câu trả lời của tôi để biết chi tiết.
Tony the Pony

6
@Loki, bạn đang thiếu nó một dặm. Các thuật toán được bảo vệ bởi các bằng sáng chế, không phải bởi bản quyền. Bản quyền hết hạn 70 năm sau cái chết của tác giả, vì vậy các tác phẩm có bản quyền trong thập niên 60 vẫn còn khá mới mẻ. Cuối cùng, câu hỏi là về việc sao chép mã NÀY, không phải về thuật toán.
alexis

Câu trả lời:


53

Không giống như nhiều người dùng ở đây, tôi chỉ đề nghị: Sao chép nó!

Đảm bảo định dạng của mã phù hợp với tiêu chuẩn mã hóa của bạn và có lẽ bạn cũng nên xóa hoặc viết lại nhận xét. Sẽ không ai biết bạn đã sao chép nó - khi một đoạn mã đơn giản như vậy, bạn cũng có thể đã viết nó từ đầu. Nếu tiêu chuẩn mã hóa của bạn bằng cách nào đó yêu cầu chức năng trông chính xác như trong đoạn trích, thì hãy là như vậy - miễn là nó trông giống như nếu bạn viết nó từ đầu.

Hãy nghĩ về nó, đây là lần đầu tiên (!) Lần đầu tiên tác phẩm chính xác này được viết - khi một cái gì đó tầm thường này, có rất ít lý do để không sao chép nó, nếu bạn không cảm thấy muốn tự viết nó.

Ngay cả việc có cuộc thảo luận này có vẻ hơi thừa đối với tôi - chúng ta cần phải thực dụng nếu chúng ta muốn thực hiện bất kỳ công việc thực sự nào!


5
câu hỏi thực sự là đâu là rào cản giữa tầm thường và không tầm thường và có cách nào để chắc chắn rằng mọi người sẽ không chỉ ra mã của tôi bằng một cái gì đó giống nhau "TÌM HIỂU GPL MIN THỰC HIỆN CỦA TÔI!" ... _ <
cnd

20
Vâng, có khái niệm về ngưỡng độc đáo trong bản quyền. Và một phương pháp đơn giản như vậy khó có thể có bản quyền. IANAL, mặc dù, và quyền tài phán khác nhau. Tuy nhiên, một điều mà mọi sinh viên CS đã viết ít nhất năm lần theo cách hoàn toàn chính xác có thể rất phù hợp với điều này.
Joey

4
@nilu: Let us then say that the programmer wrote his own version of MIN and it ended up looking exactly like the one from math.c - would it then be okay?Vâng, nếu đó là một tai nạn. "Nó sẽ tạo ra sự khác biệt gì nếu anh ta vừa sao chép nó?" Bit có màu . ansuz.sooke.bc.ca/entry/23 Đây không phải là điều mà hầu hết các nhà khoa học máy tính có thể hiểu - nó thực sự là một chủ đề phức tạp, nhưng nó là một điều được pháp luật công nhận. Nếu bạn nghi ngờ về việc một cái gì đó có hợp pháp hay không, tốt nhất bạn nên nói chuyện với một luật sư .
Mark Byers

4
@alexis: Tôi hiểu quan điểm của bạn, nhưng tôi không thực sự đồng ý - nếu mã kết quả là giống hệt nhau, không ai ngoài lập trình viên có thể biết nếu nó được sao chép hoặc viết từ đầu. Rõ ràng, một người nên có chút khó khăn khi thực hiện min và có lẽ sẽ mất ít thời gian hơn so với việc tìm kiếm một triển khai khác. Tuy nhiên, nếu một lập trình viên thực sự sao chép nó và không ai khác biết rằng anh ta đã không tự viết hàm, thì thiệt hại gì đã được thực hiện? Trừ khi lập trình viên cảm thấy có chút 'cảm giác tội lỗi', câu trả lời là không. Phần còn lại chỉ đơn giản là ngữ nghĩa.
nilu

5
@MarkByer: Khi tôi nói 'không thể chứng minh', ý tôi là không có bằng chứng vật lý nào cho thấy rằng một tội ác thậm chí đã được thực hiện - tội phạm đã được thực hiện hoàn toàn giới hạn trong tâm trí của lập trình viên. Rõ ràng, điều này không thể xảy ra nếu một số đồ ngọt bị đánh cắp - điều này có tác động vật lý đến thế giới (kẹo mút - = 1). Nếu 'tội ác' bị giam hãm trong tâm trí của chính bạn, thì ai sẽ phán xét xem đó là đạo đức hay vô đạo đức?
nilu

18

Nó không trực tiếp trả lời câu hỏi của bạn, nhưng hãy thử điều này:

#define min(a,b) ((a) < (b) ? (a) : (b))

Tôi sẽ phát hành macro vĩ đại, phức tạp này cho phạm vi công cộng. Mặc dù tôi có thể phải xuất bản một bài báo về kỹ thuật này.

Nếu bạn là người nghiện vĩ mô, hãy thử phiên bản nội tuyến này (thực sự, trừ khi bạn mã hóa trên SPARC, bạn sẽ tiết kiệm được nhiều chu kỳ CPU bằng cách không gói một chức năng phổ biến như mintrong mã nhập / thoát):

inline int min(int a, int b)
{
    return a < b ? a : b;
}

Vấn đề cấp phép mã cho các đoạn nhỏ tầm thường là một chút phiền toái, thực sự. Kiểm tra với luật sư, nhưng tôi muốn cho rằng họ thực sự không được cấp phép và / hoặc giấy phép không thể được thi hành trong thực tế. Giống như bạn không thể giữ bản quyền hoặc thương hiệu từ 'từ', sau đó dựa vào những người sử dụng nó. (Úi)


1
Ồ, họ chắc chắn có thể giữ bản quyền mã đó, nhưng vì sự đơn giản của thuật toán, họ khó có thể chứng minh trước tòa rằng bạn đã sao chép nó trừ khi bạn làm điều gì đó ngu ngốc như để lại bình luận, v.v. Không sử dụng cùng một mã, quy tắc là bạn chỉ có thể làm như vậy nếu bạn đã viết nó bằng bộ não của chính mình và không sao chép bản gốc theo bất kỳ cách nào.
Gort Robot

2
@StevenBurnap Tất nhiên mã gốc cũng có những vấn đề tương tự: họ có thể chứng minh rằng họ có bản quyền (tức là họ đã không sao chép nó từ một số triển khai trước đó)?
Richard

19
Vấn đề với phiên bản macro của min xuất hiện khi bạn cố gắng làm min(a++,b++).

4
"Phát hành này ... cho phạm vi công cộng" là rất trung tâm của Hoa Kỳ. Nó không có nghĩa là điều tương tự ở nhiều quốc gia và thực sự ở một số nước là không thể hợp pháp.

9
Cảm ơn, nhưng trên một trình biên dịch từ những năm 2000, một trình biên dịch có thể tầm thường nội tuyến như thế nào min.
DeadMG

18

Tuyên bố miễn trừ trách nhiệm : Tôi không phải là luật sư. Sử dụng lời khuyên của tôi có nguy cơ của riêng bạn.

Việc thực hiện minnày không có bản quyền , vì chỉ có rất ít cách viết hợp lý.

Trong thế giới pháp lý, điều này được gọi là học thuyết sáp nhập (còn được gọi là phân chia biểu thức ý tưởng). Ý tưởng (không có bản quyền) của chức năng được cho là đã "hợp nhất" với biểu thức (có khả năng có bản quyền) . Do đó, mã không thuộc bản quyền - bạn có thể tự do sử dụng nó.

Để được an toàn, đừng sao chép nguyên văn . Sử dụng các tên khác nhau cho các biến, áp dụng định dạng của riêng bạn, không sao chép từ nhận xét cho từ. Đại diện chính xác theo nghĩa đen của mã này có thể được bảo vệ bởi bản quyền.

Hãy nhớ rằng điều này không đảm bảo ai đó sẽ không kiện bạn, nhưng ít nhất bạn sẽ có một sự bảo vệ mạnh mẽ.

Ngoài ra, hãy nhớ rằng ngay cả khi một đoạn mã không được bảo vệ bởi bản quyền, nó vẫn có thể được bảo vệ bởi bằng sáng chế phần mềm (Đây không phải là trường hợp cho minchức năng của bạn ).


2
Bạn thử nói điều đó với Oracle!
GordonM

1
Có lẽ chức năng 9 dòng đó không tầm thường ... Tôi muốn xem mã.
Tony the Pony

1
lập trình viên.stackexchange.com/a/148362/28718 có vẻ khá tầm thường đối với tôi, giả sử rằng đó là mã chính xác.
GordonM

12

Tôi đang phát hành mã sau theo giấy phép BSD . Vì giấy phép đó dễ dàng hơn rất nhiều, bạn không nên gặp vấn đề về bản quyền nếu bạn sử dụng triển khai của tôi.

unsigned int min(unsigned int a, unsigned int b)
{
    return (a > b? b: a);
}

Làm thế nào tôi có thể chắc chắn rằng bạn không niêm phong mã GPL đó và viết lại nó? : P (chỉ nói đùa)
cnd

1
Bạn không phải. Nhưng nếu bạn đã sử dụng mã của tôi, bạn có thể khẳng định rằng bạn đã sử dụng nó một cách thiện chí.
GordonM

3
Hãy vui mừng, anh em, khi thời đại mới đã bắt đầu - bây giờ chúng ta có thể tìm thấy mintrong phần mềm nguồn đóng. Ngoài ra, @Sholy, bây giờ là vấn đề của GordonM cho dù anh ta có sao chép nó hay không.
K.Steff

5
Bạn cũng đang phát hành nó trong "Creative commons" Xem phần dưới cùng của trang này về mã được dán ở đây.
Martin York


11

Đó là một tình huống vô lý, tôi đồng ý, nhưng bạn chỉ có chính mình để đổ lỗi. Nếu bạn đang viết mã độc quyền, bạn không nên đọc các tệp nguồn được cấp phép GPL, định kỳ. Xóa math.c khỏi hệ thống tệp của bạn, giữ tài liệu và thoải mái triển khai lại bất kỳ phần nào của API mà bạn cần. Nếu bạn không đọc mã, bạn không cần phải lo lắng nếu mã của bạn giống nhau.

Lãng phí, bạn nói gì? GPL cố tình ngăn bạn hưởng lợi từ mã miễn phí mà không trả lại cho hệ sinh thái. Nếu bạn không thể hoặc sẽ không đáp ứng các điều khoản của nó và bạn không muốn triển khai một thư viện toán học khác, bạn luôn có thể mua một hoặc tìm một bản miễn phí đi kèm với giấy phép mà bạn có thể chấp nhận.

Các lập trình viên của Microsoft không được phép đọc mã nguồn mở, để bảo vệ công ty khỏi các vấn đề pháp lý. Vì lý do thuần túy đạo đức, bạn nên làm tương tự với bất kỳ chương trình nào có giấy phép mà bạn không có ý định tuân thủ.

Bạn không có quyền sử dụng cái này math.c, nhưng không ai cố gắng vượt qua thị trường về việc triển khai min. Mục tiêu của GPL là tăng "tự do" cho lập trình viên (và tự do của người dùng cuối), không hạn chế nó. Giấy phép GNU, FSF và Phong trào phần mềm tự do bắt đầu với Richard Stallman và Stallman bắt đầu triển khai lại từ đầu mỗi phiên bản mới của Symbolics khi nó xuất hiện. FSF sẽ không (và không thể) theo đuổi bất cứ ai để triển khai lại thư viện GPL.


Vì vậy, nhưng đó là ví dụ thực sự kỳ lạ. Đó là ví dụ, điều đó có nghĩa là tôi phải đọc nó và theo dõi nó ... nhưng theo tôi hiểu thì tôi không được chọn giấy phép GPL ở đây. Vì vậy, tôi biết Stallman là ai;)
cnd

2
Sholy, xin lỗi nhưng tôi không biết bạn đang nói gì! Ví dụ nào? (Bạn cũng đang hỏi tôi Stallman là ai? Google nó. Hoặc chỉ cần kiểm tra wikipedia.)
alexis

3
"Các lập trình viên của Microsoft không được phép đọc mã nguồn mở" ồ, thật kinh khủng - có nơi nào tôi có thể đọc về điều đó không? Google không giúp đỡ.
amara

Câu hỏi hay. Tôi đã đọc về nó trong một số diễn đàn phát triển Iron Python, nhưng tiếc là tôi không thể tìm thấy nó ngay bây giờ. Tóm tắt: Jim Hugunin ( hugunin.net/microsoft_farewell.html ) đã đề cập rằng họ không được phép xem triển khai trăn và ai đó đã hỏi đùa rằng họ có được phép xem mã riêng của họ không (Microsoft đã tạo mã nguồn mở Iron Python) . Câu trả lời là: Họ đã tạo ra một ngoại lệ đặc biệt cho Iron Python.
alexis

Những người có GPL tự do dự định tăng là tất cả những người sử dụng chương trình, không phải (cụ thể) lập trình viên.
James Youngman

7

Trả lời: Chỉ với sự cho phép rõ ràng của tác giả.

Đó là mã bản quyền. Bạn không thể sao chép nó mà không có sự cho phép của tác giả.

Bạn sẽ phải viết phiên bản của riêng mình minhoặc sao chép một biến thể minsử dụng giấy phép khác.

Hãy nhớ rằng, với bản quyền, đó là mã được bảo vệ, không phải là thuật toán. Luật bản quyền xuất phát từ văn bản. Ngay cả khi "math.c" không là gì ngoài các bình luận và hoàn toàn không có mã thực thi, nó vẫn được bảo vệ theo bản quyền.


1
Có nghĩa là phiên bản riêng? Phiên bản MIN của riêng tôi, nghe có vẻ vui nhộn!
cnd

2
Hãy nhớ rằng, bạn không sở hữu min, bạn sở hữu một chuỗi các ký tự cụ thể xảy ra để thực hiện min.
Gort Robot

2
Bạn hoàn toàn không thể thay đổi nó mà không có sự cho phép của tác giả trừ việc sử dụng cá nhân. Bạn phải viết lại từ đầu. Đó là toàn bộ vấn đề. Lưu ý rằng nếu bạn ngồi xuống một trình soạn thảo trống và viết một cái gì đó gần giống với nó, nó sẽ ổn thôi, vì bạn đã không sao chép nó. (Giả sử bạn không gõ từ bộ nhớ.)
Gort Robot

2
Không, tôi không nói đùa. Và vâng, bạn có thể có thể thoát khỏi nó trong những trường hợp như thế này. Tùy thuộc vào người giữ bản quyền để chứng minh rằng bạn đã thực hiện nó. Lưu ý rằng tôi chỉ nói cho bạn biết luật pháp là gì, không bảo vệ nó.
Gort Robot

3
Bởi vì nếu bạn không mã hóa lại những thứ tầm thường này, thì bạn đang sử dụng công việc của người khác theo cách mà họ không cho phép bạn làm. Nếu nó tầm thường đến mức bạn không cần nó, đừng sử dụng nó.
alexis

6

Đây là những gì Google được cho là đã bị gạt. Điều này có vẻ như lẽ thường cho một mảng.

 908     /**
 909      * Checks that fromIndex and toIndex are in range, and throws an
 910      * appropriate exception if they aren't.
 911      *
 912      * @param arrayLen the length of the array
 913      * @param fromIndex the index of the first element of the range
 914      * @param toIndex the index after the last element of the range
 915      * @throws IllegalArgumentException if fromIndex > toIndex
 916      * @throws ArrayIndexOutOfBoundsException if fromIndex < 0
 917      *         or toIndex > arrayLen
 918      */
 919     private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
 920         if (fromIndex > toIndex)
 921             throw new IllegalArgumentException("fromIndex(" + fromIndex +
 922                        ") > toIndex(" + toIndex+")");
 923         if (fromIndex < 0)
 924             throw new ArrayIndexOutOfBoundsException(fromIndex);
 925         if (toIndex > arrayLen)
 926             throw new ArrayIndexOutOfBoundsException(toIndex);
 927     }

Nếu đây là tất cả, bản án sẽ được đưa ra kháng cáo. Nhưng theo Wired, thẩm phán cũng nhận thấy Google đã sao chép 8 tệp khác. Xem Wired.com/wiredenterprise/2012/05/google-oracle-decompile
Tony the Pony

5
Có, nhưng "lẽ thường" không phải là vấn đề bản quyền. Đó là cho dù họ sao chép và chỉnh sửa hoặc tự viết từ đầu. Cho dù một cái gì đó là "lẽ thường" là thử nghiệm cho các bằng sáng chế, không phải bản quyền. Nói cách khác, Oracle có thể giữ bản quyền văn bản đó, nhưng họ không thể cấp bằng sáng chế cho thuật toán đó.
Gort Robot

9 dòng này là một ví dụ cổ điển về học thuyết sáp nhập. Có bao nhiêu cách khác để thực hiện kiểm tra phạm vi trên một mảng?
Tony the Pony

1
@TonythePony, rất nhiều, nếu hàm ném một ngoại lệ có chứa một tin nhắn văn bản.
avakar

4
Rất ít người đã đề cập rằng người đã sao chép văn bản này tại Google cũng là người đã viết nó tại Sun. Các lập trình viên phải nhận ra rằng Stallman - kẻ cực đoan có râu - đã đúng . Tiền, gốc rễ của mọi tội lỗi, khiến mọi người quên đi lý do tại sao họ tham gia vào công nghệ ngay từ đầu. : - /
HostileFork

5

Dù sao tôi cũng sẽ không sử dụng mã này vì nhận xét không khớp với nội dung của mã. Các bình luận nói về integer, trong khi mã sử dụng unsigned int. Ai biết được những lỗi nào được chôn trong độ sâu của chức năng này?

Nghiêm túc mà nói, đây là lúc "Đừng phát minh lại bánh xe" trở nên lố bịch và bạn đã quên mang nó với một hạt muối. Chỉ cần viết phiên bản của riêng bạn từ đầu, khớp với quy ước đặt tên và hướng dẫn kiểu mã của bạn (ví dụ math_min_uint(x, y)), đảm bảo nó hoạt động (kiểm tra đơn vị hoặc bất cứ điều gì) và tiếp tục với cuộc sống và không có vấn đề bản quyền.

Với kinh nghiệm ngày càng tăng, những đoạn nhỏ tầm thường mà bạn cần lặp đi lặp lại chỉ nằm trong hộp công cụ của bạn và bạn sẽ viết lại chúng mà không cần suy nghĩ quá nhiều, hoặc đơn giản là lấy chúng từ thư viện của riêng bạn.


2

Mọi người dường như quên mất rằng luật bản quyền, cả về tinh thần và thư, có nghĩa là hành động sao chép thực sự bị cấm - không phải là hành động thể hiện cùng một suy nghĩ của chính bạn, ngay cả khi kết quả không giống nhau một cách đáng ngờ.

Nếu bạn lấy mã GPL, sửa đổi nó, sử dụng nó theo cách trái với giấy phép mà bạn đã nhận được và cho rằng đó không phải là một tác phẩm phái sinh, thì bạn đang vi phạm pháp luật. Ngay cả khi bạn sử dụng phiên bản thứ hai của mình - bạn đã thay đổi tên của tất cả các biến và thay đổi định dạng, nhưng nó vẫn xuất phát từ bản gốc.

Tuy nhiên, nếu bạn viết phiên bản của riêng mình minvà do tính tầm thường của nhiệm vụ, thực tế là chỉ có rất nhiều cách bạn có thể viết một cách hợp lý như vậy, và một chút trùng hợp, phiên bản của bạn cuối cùng giống hệt nhau vào mã GPL, sau đó bạn chưa sao chép bất cứ điều gì.

Dù một câu chuyện có thể vượt qua tại tòa hay không là một vấn đề khác. Nếu một mẫu mã lớn hơn hoặc phức tạp hơn xuất hiện ở một nơi khác, hoàn chỉnh với các nhận xét, định dạng và lỗi chính tả, bạn sẽ khó thuyết phục bất cứ ai rằng bạn đã viết nó một cách độc lập, vì vậy nếu có thể chứng minh rằng bạn biết bản gốc nguồn (trong đó, thực tế là bạn đã đăng nó ở đây, nên khá tầm thường).


1

Nếu mã thực sự là tầm thường như ví dụ "tối thiểu" thì có khả năng rất cao là người khác đã thực hiện chức năng tương tự theo giấy phép nguồn mở khác.

Tùy thuộc vào giấy phép, bạn rất có thể được phép đưa mã vào tài khoản nguồn đóng của mình.


1

Chỉ cần viết nó trong 30 giây. Bạn có thể sử dụng chính xác cùng một thuật toán. Chỉ không sao chép / dán.

Bản quyền chỉ bảo vệ sự thể hiện của một ý tưởng, không phải chính ý tưởng đó. Bạn có thể sử dụng ý tưởng trực tiếp với điều kiện bạn không sao chép nó.

FWIW, tôi nghi ngờ rằng việc sao chép một đoạn mã tầm thường như vậy sẽ khiến bạn gặp rắc rối. Thiệt hại sẽ bằng không, và nó có thể sẽ được sử dụng hợp pháp trong hầu hết các khu vực pháp lý. Nhưng các trường hợp pháp lý là một nỗi đau mà tôi sẽ không muốn mạo hiểm.


1

Vì mã GPL của nó, câu hỏi lớn ở đây là bạn có kế hoạch phân phối mã của bạn hoặc bán phần mềm của bạn.

Nếu bạn chỉ sử dụng nó trong nội bộ, GPL cho phép bạn hoàn toàn tự do làm theo ý muốn.

Nếu bạn đang dự định phân phối gói của bạn - điều dễ nhất là GPL gói của bạn theo cùng điều khoản với bất kỳ nguồn GPL nào bạn đã sử dụng. Có những cách khác nhưng nó trở nên phức tạp.

Nếu bạn dự định bán phần mềm của mình, bạn phải phân phối mã nguồn cho bất kỳ mã GPL nào bạn đã sử dụng và / hoặc sửa đổi theo cùng giấy phép GPL mà bạn đã nhận được.


0

Nếu bạn đang sử dụng C ++ chứ không phải C, hãy khắc phục sự cố này bằng cách sử dụng thư viện chuẩn std::minhoặc std::maxtrong <algorithm>:

http://www.cplusplus.com/reference/alerskym/min/

Điều đó mua cho bạn tính tổng quát, và nó sẽ hoạt động cho bất kỳ loại so sánh nào. Ngoài ra: khi bất cứ thứ gì d-bag cố gắng tuyên bố họ đã phát minh ra nó và được bảo vệ bởi các bằng sáng chế phần mềm, họ sẽ ầm ầm với ủy ban ISO ... không phải bạn.

Trong trường hợp chung, hãy lưu ý về người đã xuất bản mã. Tổng công ty, hay cá nhân lành mạnh? Nếu đó là một cá nhân lành mạnh (như trường hợp có nhiều nguồn mở), hãy viết một ghi chú đẹp cho họ và xin phép. Lưu câu trả lời của họ nói rằng nó ổn. Vấn đề được giải quyết.


-2

Đối với trường hợp chung: Mã phức tạp hơn chắc chắn có thể có bản quyền, trái ngược với tối thiểu và tối đa (có thể có hoặc không có bản quyền).

Sau đó, Cấp phép mã của bạn tuân thủ thư viện tức là GPL! Tuy nhiên, xin lưu ý rằng có các thư viện LGPL (và GPL có ngoại lệ) cho phép bạn sử dụng các triển khai của họ trong khi cung cấp cho mã của bạn bất kỳ giấy phép nào bạn muốn.

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.