Nếu bạn quản lý một dự án nguồn mở được cấp phép BSD, làm thế nào để bạn bảo vệ chống lại ai đó đóng góp trái phép mã được cấp phép GPL?


8

Một dự án nguồn mở được cấp phép theo BSD, MIT hoặc một giấy phép cho phép khác chấp nhận đóng góp mã từ cộng đồng.

Làm cách nào tôi có thể ngăn ai đó lấy mã được cấp phép GPL mà họ không sở hữu và gửi mã đó cho dự án được cấp phép BSD của tôi? Tôi không biết rằng đóng góp đã bị đánh cắp từ một dự án được cấp phép GPL và chấp nhận nó.

Tôi không muốn chấp nhận những đóng góp như vậy, để không làm cho toàn bộ GPL dự án. Nhưng tôi không có cách nào để biết liệu người đóng góp có thực sự giữ bản quyền cho mã mà họ đang đóng góp hay không. Vì vậy, nếu ai đó đóng góp trái phép mã được cấp phép GPL cho dự án của tôi, tôi không biết cách nào để ngăn chặn họ (không chấp nhận bất kỳ đóng góp nào).

Chắc chắn, có rất nhiều dự án được cấp phép của BSD và MIT, vì vậy phải có một giải pháp.

Cảm ơn!


1
có lẽ bởi vì câu hỏi tìm kiếm lời khuyên pháp lý thường được coi là lạc đề
Newtopian

3
@Newtopian Tư vấn pháp lý này thế nào? Đó là về việc quản lý một dự án nguồn mở. Tôi không thấy làm thế nào điều này là lạc đề ở đây cả. Tuy nhiên, nó có thể phù hợp hơn với Nguồn mở, nhưng quản lý một dự án là tốt ở đây.
Thomas Owens

3
@ThomasOwens: Tôi không thấy bất kỳ nỗ lực trả lời nào không liên quan đến các vấn đề pháp lý. Vào cuối ngày, bạn đang dựa vào lời của người đóng góp trừ khi bạn yêu cầu bằng chứng về bản quyền của một số loại, làm cho nó trở thành một vấn đề pháp lý một lần nữa.
Robert Harvey

3
Tôi không phải là người hạ bệ cũng không bỏ phiếu để đóng. Đó là một câu hỏi chính đáng nhưng một câu hỏi rất khó trả lời mà không có, như Robert nói, rơi trở lại về mặt pháp lý của nó. Điều tốt nhất tôi có thể hy vọng ở đây là dựa vào đức tin tốt của những người đóng góp đồng thời lưu giữ những ghi chép xuất sắc về những gì, khi nào, ai đã viết mã và chuẩn bị cho những lần quay ngược dài và viết lại nếu bất kỳ phần nào trôi qua Những vết nứt.
Newtopian

5
Xin lưu ý rằng việc thêm mã GPL không đúng vào dự án BSD mà không bao gồm phân bổ hợp lý, v.v ... sẽ không tự động tạo GPL dự án. Thay vào đó, nó làm cho dự án không thể phân phối hợp pháp. Điều đó có thể được khắc phục bằng cách xóa mã GPL hoặc gán đúng mã vv và chuyển đổi toàn bộ dự án thành GPL.
bdsl

Câu trả lời:


6

nhập mô tả hình ảnh ở đây

Một người không chỉ đơn giản là "bảo vệ chống lại" đóng góp bất hợp pháp.

Bạn không bao giờ chấp nhận đóng góp một cách mù quáng và nên có một quy trình để bác sĩ thú y (bao gồm cả đóng góp của bạn) cho một số loại rắc rối:

  • kiểm tra đơn vị (tự động)
  • backreen và lỗ hổng bảo mật (phân tích tĩnh có thể giúp đỡ, các công cụ khác tồn tại)
  • mã mùi (tự động)
  • logic mã kém (đánh giá ngang hàng, "đủ mắt để làm lỗi nông", v.v. - câu chuyện về OpenSSL cho thấy điều này có thể không đủ)
  • Tôi chắc chắn tôi đã bỏ lỡ một vài người khác - đóng góp chào mừng

"Tất cả" mà bạn cần làm là thêm một kiểm tra đạo văn . Điều này có thể được thực hiện, đến một điểm, với các công cụ tự động chỉ bằng cách googling các dòng mã có liên quan.

Tôi đã thử ngay bây giờ bằng cách nâng một số mẫu mã từ các dự án và nó hoạt động. Tôi chỉ đơn giản là trích xuất các chuỗi, định dạng, nhận xét và tên hàm và nguyên mẫu từ mã, sau đó googled tất cả chúng và xem xét nơi một trang web xuất hiện trong nhiều kết quả khớp. Trong 17 bài kiểm tra trong số 19 trang web nguồn là người đầu tiên trong số năm ứng cử viên; trong mọi trường hợp, trang web đã xuất hiện trong số năm đầu tiên. Ngược lại, các đoạn mã của riêng tôi chỉ kích hoạt dương tính giả trong ba (bốn) trường hợp trong số hai mươi, với các mục tiêu chất lượng rất thấp, vì vậy bằng cách nhanh chóng truy cập vào nửa tá trang web, tôi có thể loại bỏ cảnh báo. Ngoài ra, với mã GPL, đoạn mã từ Tìm kiếm của Google rõ ràng giống với mã mà tôi đã kiểm tra.

Tại thời điểm này tôi tự tin rằng bạn có thể làm điều đó bằng tay . Hãy xem mã, xem các bình luận (chúng có hợp lý không? Nếu không, đó là một loại đèn đỏ khác. Nếu có, tất cả chúng đều được điều chỉnh lại (!) Hoặc bạn sẽ tìm thấy chúng), hãy thử vài chuỗi văn bản, cắm chúng vào Google và / hoặc các công cụ tìm kiếm khác.

Và bạn chỉ cần điều này cho những đóng góp lớn .

Từ quan điểm pháp lý - Tôi nhanh chóng thoát khỏi chiều sâu của mình - Tôi tưởng tượng rằng bạn cần những người đóng góp của bạn chấp nhận một số hình thức từ bỏ hoặc thỏa thuận trong đó họ tuyên bố rằng họ sẽ đóng góp một cách trung thực.

Khi họ không làm như vậy và bạn đã bỏ lỡ điều đó (ví dụ như họ đã biến hình / làm xáo trộn một số mã GPL để nó không bị phát hiện bởi googling), IMHO có thể sẽ không bao giờ được tìm ra trừ khi nó được thực hiện cho mục đích bẫy và họ tự thổi còi. Tại thời điểm đó, dự án của bạn sẽ vi phạm GPL và bạn có thể:

  • xóa mã GPL khỏi dự án
  • tuyên bố phần còn lại của dự án thuộc GPL

Để toàn bộ kịch bản trở thành bất kỳ loại rắc rối thực tế nào, "người đóng góp" cần phải:

  • định vị phần mã GPL có ý nghĩa với tỷ lệ hữu ích,
  • xóa tất cả thông tin cấp phép,
  • viết lại hoàn toàn - nhận xét, tên hàm, tên biến không tầm thường, chuỗi văn bản - để tìm kiếm sẽ không tìm thấy mã, và vẫn để nó giống nhau , đồng thời để nó hoạt động
  • hãy để mã "hầm" trong cơ sở mã và những người đóng góp khác dựa vào chức năng của nó , đến mức loại bỏ nó sẽ là một vấn đề

Toàn bộ kịch bản, đặc biệt là điểm cuối cùng, đối với tôi dường như rất xa vời. Một khi kiểm tra đạo văn được thực hiện, tôi sẽ ngừng lo lắng.


1
Câu trả lời rất thú vị và toàn diện! Có một số googling có thể giúp xác định một số bản sao và dán không mong muốn. Tuy nhiên, điều này chỉ hoạt động đối với các bản sao theo nghĩa đen: nếu ai đó lấy cùng một mã và thay thế một số tên biến hoặc thay đổi thứ tự của một số câu lệnh, bạn sẽ không tìm thấy nó, mặc dù đó vẫn là đạo văn. Nhưng bạn đã đúng: ít nhất nó có thể giúp giảm thiểu rủi ro. Các thỏa thuận đóng góp nên làm nghĩa vụ rõ ràng và chuyển rủi ro còn lại để đóng góp.
Christophe

1
Để thêm vào câu trả lời này, tôi là một người hướng dẫn tại một bootcamp mã hóa một chút. Đạo văn không phổ biến, nhưng nó đã xảy ra. Nó thường khá rõ ràng đối với tôi khi nó xảy ra bởi vì một sinh viên sẽ gửi mã khác nhiều so với những gì tôi đã từng thấy từ họ. Khi điều đó xảy ra, tôi sẽ lấy một vài dòng mã phân biệt và tìm kiếm trong GitHub để tìm mã. Nếu tôi không tìm thấy nó trong GitHub, Google sẽ là người tiếp theo, nhưng tôi luôn có thể tìm thấy mã gốc trong GitHub.
Dan Jones
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.