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.