Her kaynak dosyaya bir lisans bildirimi eklemeniz gerekiyor mu?


111

Açık kaynak kodlu bir projem için kullanabileceğim çeşitli lisanslar arıyordum, ancak gördüğüm tüm projeler, her türlü lisansla birlikte devasa, iğrenç görünüyor (bence) Her bir kaynak dosyada, dosyanın belirli bir lisans altında listelendiğini belirten not. Bunun gibi bir haberi olmayan , kamu malı olmayan tek bir kaynak proje bulduğumu sanmıyorum .

Bu sadece zaman kaybı ve dosya alanı gibi görünüyor. Projelerime etiket koymayı @licenseve @authoretiketlemeyi planlıyorum , ancak kodumu kamuya açık yapmak istemiyorsam neden her dosyada bu kadar büyük bir notu listelemem gerektiğini anlamıyorum.

Projelerime böyle bir haberi eklemek istememin ya da sadece bir bildirimi READMEve bir @licenseetiketi eklemenin yeterince iyi olması için bir neden var mı? Bu, çoğu lisansın “açıkça belirtildiği” kuralını etkiliyor mu, yoksa insanların tartışmayacakları bir şey değil mi?


10
Editörünüz lisansı 1 satıra katlamanıza / gizlemenize izin vermelidir.
Pubby

1
Gerçekçi olarak, eğer biri kodunuzu yöneltirse, bir değişkeni yeniden adlandırır ve telif hakkını kaldırırsa mahkemenin bu 2 dosyayı aynı göreceğini düşünür müsün?
NoChance

5
@Emmad: Hayır, bir mahkeme aynı olduklarını söylemezdi. (Ancak "özde aynı" olabilirler.) Evet, bir mahkeme telif hakkı ihlali olduğunu söyleyebilir.
Andrew Dalke


Yanıtlar:


39

Anladığım kadarıyla GPLv3 , her kaynak dosyadaki bir telif hakkı bildirimini kesinlikle (belki de en azından 17 bölümden sonra bu Programları Yeni Programlarınıza Nasıl Uygulayacağımı metnini nasıl anladığımı gerektirir) önerir . Diyor ki

Bunu yapmak için, aşağıdaki bildirimleri programa ekleyin. Garantinin hariç tutulmasını en etkili şekilde belirtmek için bunları her kaynak dosyanın başlangıcına eklemek en güvenli yoldur; ve her dosya en azından “telif hakkı” satırına ve tam bildirimin bulunduğu yere bir göstergeye sahip olmalıdır.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year>  <name of author>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

FSF'nin sahip olduğu GNCC projeleri, GCC gibi, her dosyada böyle bir haber var.

Ayrıca, her bir dosyada böyle bir bildirimde bulunmadığından, özgür bir yazılım topluluğu web sitesinde reddedilen bir programı (J.Pitrat'ın CAIA sistemi) de biliyorum.

Avukat değilim , ancak böyle bir bildirimin bir GPLv3 programının her bir kaynak dosyasında neredeyse zorunlu olduğuna inanıyorum .

(özellikle FSF olmayan bir lisans kullanıyorsanız, nasıl uygulanacağını dikkatlice okuyunuz; YMMV; ancak AFAIK her dosyaya bir not yazmak zarar vermeyecektir.)


16
Zorunlu olamaz, çünkü kaynak kodunu dosya olarak ifade etmeyen Smalltalk görüntüleri gibi sistemler vardır. "En güvenli" ve "yapmalı" diyorlar, "yapmalı" değil. Önerdikleri, birinin hata yapma şansı çok az olan kolay anlaşılır bir kılavuzdur, ancak kesinlikle "pratik olarak zorunlu değildir".
Andrew Dalke

Katılıyorum ve bilerek "kaynak dosya" dedim. Aslında, CAIA'nın sistemi Smalltalk'a biraz benziyor: görüntü veri dosyalarında ve bahsettiğim CAIA "kaynak dosyaları" C dosyaları oluşturuyor. Ancak, GCC MELT'im (FSF'nin telif hakkı altındaki bir GCC'nin dalı) da meta programlanır ve oluşturulan C dosyalarında telif hakkı bildirimi yorumları oluşturmaya özen gösteririm (ve bunları el ile yazılmış C & MELT koduna koyarım).
Basile Starynkevitch

Alınan nokta. MELT hakkında şimdi bir paragraf biliyorum. Genel olarak, oluşturulan dosyaların telif hakkı bildirimini içermesi, aksi takdirde lisansı "eklemek" çok zordur. Örneğin, "yacc" ve "lex" yapabilecekleri ile sınırlıdır.
Andrew Dalke

1
Kişisel tecrübemize göre: Savannah'da bir projeyi kabul etmek için her dosyada bir lisansa sahip olmalısınız.
Mael

1
Sadece GPL SSS göre netleştirmek için #LicenseCopyOnly ve #NoticeInSourceFile bu yazının yazıldığı anda, bu oluyor değil eklemesi gerekmektedir Nasıl Başvurulur ... Her kaynak dosyasının metin; dil "gerekir" ve "gerekir" kullandığına dikkat edin. Ancak, bu uygulamayı takip etmenizi şiddetle tavsiye ederler .
ZeroKnight

37

Yalnızca README'de veya LİSANS veya KOPYALAMA dosyasında lisanstan bahseden birçok proje gördüm.

Yazılımınız uluslararası hukukta kararlaştırıldığı gibi otomatik olarak telif hakkı kapsamındadır. (ABD hükümeti veya telif hakkı için geçerli olmayan başka bir kuruluş için çalışmıyorsanız).

Birisi yazılımınızı kullanıyorsa, lisans sözleşmesini izlediğinizden veya yapabilecekleriyle ilgili adil kullanım kısıtlamalarına uyduğundan emin olmalıdır.

Bu kişinin kod dağıtımınızdaki dosyalardan birini kullanmak istediğini varsayalım, ki bu da bir kopya gerektirir ve bu nedenle telif hakkı yasası geçerlidir. Varsayılan olarak, yazılımınızı telif hakkı yasası uyarınca kullanma hakkına sahip değillerdir. Sadece kullanmalarına izin verilen lisans kısıtlamalarını bildikleri ve takip ettikleri zaman.

Bu nedenle, yazılım lisansı olmayan bir dosya kullanıyorlarsa, telif hakkı yasasını çiğniyorlar. Tüm lisanslar "Yukarıdaki telif hakkı bildirimi ve bu izin bildirimi, Yazılımın tüm kopyalarına veya önemli kısımlarına dahil edilecektir" gibi bir şey söylediğinden, bu lisansı bir yere koymak zorundadırlar.

Bu, dosyanın kendisinde olabilir veya kodu kütüphane olarak kullandığımda, ilgili kısımları kendi dizinine koyar ve bu alt dizine bir "README" veya "LICENSE" eklerim.

Kısacası, lisansı her dosyaya koymanız gerekmez. Bence aşırı kalmış. Bunu yaparken fazladan yasal koruma yoktur. Alt kullanıcılara biraz yardımcı olur, fakat fazla değil.

Çok sayıda yorum temelli meta veri geleneğinin (lisans, her bir işlevin yaratılma tarihi, değişmezlik, vb.) Geleneğinin çok eski gelenekler olduğunu düşünüyorum çünkü bunlar kolay ve hangileri daha kullanışlı?

Örneğin, varsayılan Eclipse şablonu, sürüm kontrolü tarafından daha iyi yakalandığını düşündüğüm her işlevden önce işe yaramaz meta veriler olarak düşündüğümü ekler. Ancak bu uygulama birçok mağazada yaygındır.


2
Örneğin, Rails kaynak dosyalarında lisanslama ile ilgili hiçbir şey göremiyorum.
Anton Barkovsky

3
Üst seviye Python standart kütüphanesindeki 200 dosyadan sadece 34'ü “telif hakkı” kelimesini içeriyor ve bunlardan sadece 4'ü Python'a telif hakkını kontrol eden Python Yazılım Vakfı'na ait.
Andrew Dalke

evet, dosya başına telif hakkı bildirimlerinin süreceğini sanmıyorum ... bu çok fazla .. sadece geleceğin yolu olamaz .. DRY'yi düşün ... kök seviyesi LİSANS, ve haydi bir gün arayın ... bence çoğunlukla npm'deki her şey zaten bu şekilde yapıyor
ChaseMoskal

13

Buradaki sorun, tek bir kaynak kod dosyasını, yalnızca teslim alan, e-postayla gönderen, tek bir dosyayı indiren, tam telif hakkını içerenler hariç, tek bir kaynak kod dosyası gibi büyük projesinden ayırmak çok kolaydır. Ve sonra bu dosya, ad-infinitum boyunca zaman içerisinde, dosyaların kökeni hakkında hiçbir fikri olmayan Nth partilere aktarılabilir.

En üstteki telif hakkı bildirimi, bu yalnız dosyada çalışan herkese aslında telif hakkıyla korunan, kamu malı olmayan ve bu nedenle bazı lisansların dağıtımına veya kullanımına dahil olabileceğini veya katılmayabileceğini hatırlatır. Bulucunun kendi rastgele varsayımlarını yapmasına izin vermek.


21
Kaynak dosyanın çeşitli parçalarını kopyala yapıştır ile birleştirmek de kolay değil mi? Sonra ne? Bu argüman bana tutarsız görünüyor.
Travis Griggs

10
Telif hakkı bildirimi olmayan bir iş için kamu malı olduğunu varsaymak problemdir. Telif hakkı bildirimi olmadan bir dosyaya rastlarsanız, dosyayı kopyalayıp başkalarına göndermemelisiniz.
Rich Remer,

Elbette o zaman bir dosyayı "klonlayıp sahiplenmenin" yasal olması problemi var, doğrudan proje kaynağımıza açık kaynak koyduk, çünkü bazen yukarı akış projesinin dışında bir hatayı düzeltmek zor olabilir, ancak bekleyemezsiniz. Onları serbest bırakmak için. Bunun iyi bir fikir olduğunu söylememek ama biz yaptık.
xenoterracide

8

Her kaynak dosyaya ne koymanız gerektiğini söyleyen bir yeraltı sığınağında gizli bir süper güç toplantısı yoktur.

Kullanıcıya bu dosyanın hangi lisansın altında olduğunu ve aslında çoğu GPL yazılımının license.txt dosyasını okumak için kısa bir başlangıç ​​sayfası içerdiğini açıkça ortaya koyuyor. Projelerin bölündüğünü ve dosyaların yeniden kullanıldığını unutmayın; bu nedenle iletiyi yalnızca bir dosyaya koymak iyi bir fikir olmayabilir.

Olası bir olayda, mahkemeye çıkarsa, her dosyayı işiniz olarak net bir şekilde işaretlemiş olsaydınız ve hangi lisansın altında olduğunu açıkça iddia ettiyseniz, o zaman hiç kimse bu ilkel dosyanın kapsanmadığını düşündüğünü iddia edemezdi.


6

Neredeyse oldukça benzer bir soru yayınladım. Sıkıntılardan daha az, teknikler hakkında daha fazla. TL; DR: Cevabın yazarın öncelikleri olduğuna inanıyor. Belki niyet önceliklerden daha doğru olur ...

"Tamam" tanımınıza bağlı olarak kaynağınızdaki bir lisansa başvurmanın uygun olduğuna inanıyorum. "Refakatsiz" teriminin, sevgi dolu kod tabanından acımasızca ayrılmış bir projenin parçası olan bir kaynak dosyayı gösterdiğini kabul edelim. Söz konusu dosya şöyle bir satır içeriyor:

# This file is covered by the LICENSING file in the root of this project.

Veya bunun gibi daha serin bir çizgi:

* @license OMGBBQ <http://goodlics.com/bbq>

"Fakat bekle!" , diye bağırıyorsun, "az önce bu dosyanın projesinden ayrıldığını söyledin! ve goodlics.com etki alanı çöküşüne yönlendiriliyor! Trixy olmayı bırak!" Haklısın, bunu söyledim, ama bu iyi olabilir ve bana bağırmayı kes. İşte benim avukat olmayan akıl yürütmem:

  • Hemen hemen her ülke, AFAIK'in bir şey yaratmanız durumunda, telif hakkına sahip olduğunuz süre anlamına geldiği anlamına gelen Berne Sözleşmesini kabul etti. Bir (c) çizgisine veya bunun gibi herhangi bir saçmalığa ihtiyacınız yok, ancak bu şeyler (artı GitHub gibi üçüncü taraf bir VCS), onu yarattığınızı ve ne zaman oluşturduğunuzu kanıtlamayı kolaylaştırır .
  • Bu nedenle, çevrimiçi olarak oluşturduğunuz bazı sulu 1337 kodlarını çevrimiçi olarak gönderirseniz, üzerinde telif hakkınız vardır. Kimsenin (yasal olarak) kopyalamasına izin verilmez. Nadir ve şok edici, biliyorum, ama insanların kanunları bazen çiğnediğini duydum. Bu hala mümkün.
  • Bu harika nyancat-bcminer-algo.qbasicdosyası yazdım ve inanın edilir LiveJournal yayınlanan ya da değil, değil kamu malı. Kamu malı olduğunu söylemedikçe . Varsayılan olarak, sadece sizindir. Bu ... Değerli . (En azından 25-50 + yıl, Disney olmadıkça.)
  • İnsanlar bu niyeti geleneksel olarak (sizin ya da kendinizin değil bazı hakların tümünü ya da hepsini yaparak) lisanslar aracılığıyla iletir, ancak bu amacı bildirmeniz gerekir; vazgeçmeyi reddetme (HAHA GET IT?, telif hakkınızı devre dışı bırakmayı seçti mi? Biletlerinizi alın, neredeyse ordayız!
  • Tamam ise yukarıda belirtilen refakatsiz belgeler özel alanı olduğunu - yani, yasal olarak copyable değilse, o potansiyel kırık referans kullanarak gayet olumlu. Ancak, tamam değilse , o zaman her kaynak dosyaya lisans metnini eklemeniz gerektiğini düşünüyorum. Bu şekilde, refakatsiz dosyaların, öncelikli olarak sizin hedeflediğiniz şekilde lisanslandığından emin olabilirsiniz . Evet, bu daha iyi.

Bu akıl yürütme iki destansı ve muhtemelen geçersiz varsayımı yapar:

  • "Bozuk" bir lisans referansı, geçerli (varsayımlı) bir davranış olmayabilir, varsayılan (telif hakkı alınmış) davranışa geri döner.
  • Yayınladığınız o sitede, her şeyi genel alan haline getiren bir tür gönderme politikası (StackExchange gibi) bulunmuyor.

Maymun-beyin hava yollarını kullandığınız için teşekkürler.

Uyarı: Bu bana% 90 hatalı olduğumdan% 90 emin olduğum için mantıklı geliyor.


6

Lisans ile giriş arasında bir fark var .

Projelerimin bazılarında GNU Genel Kamu Lisansı Sürüm 3.0'ı kullanıyorum . GNU GPL, her kaynak kod dosyasında bir giriş yapılmasını gerekli kılar:

Giriş ve talimatlar, GNU GPL'nin ayrılmaz parçalarıdır ve ihmal edilemez.

Kaynak: http://www.gnu.org/licenses/gpl-faq.html#GPLOmitPreamble

Yani burada ne yapıyorum:

1. License.txt ekleyin

Kuralları takip etmek için projemin deposunun köküne bir LICENSE.txt koydum . Bu, GitHub tarafından da önerilmektedir (bkz. " Lisans nerede yaşıyor" ).

2. Otomatik katlamayı kullanarak giriş ekleyin

Daha sonra, GPU başlangıç ​​kodunu, her ne kadar zor olmasa da , her kaynak kod dosyasının üzerine ekledim . IDE'ye gizledim. Çoğu IDE, kod bloklarını otomatik olarak katlama özelliğine sahiptir. NetBeans, Özel Kod Katlama için desteğe sahiptir ve WebStorm da yorum katlama özelliğini desteklemektedir .

Yani işte nasıl göründüğü:

//<editor-fold desc="Preamble">
/*
 * Company Name
 * Copyright (C) 2016 Company Name
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * ...
 */
//</editor-fold>

console.log('Here is my licensed JavaScript code.');

Bunun rahatlık ve yasal güvenlik arasında çok iyi bir uzlaşma olduğunu düşünüyorum.

Lisans eklemeniz gereken birçok projeniz varsa, http://www.addalicense.com/ size yardımcı olabilir.

Lütfen dikkat: Tavsiyem GPLv3 ile ilgilidir. Diğer lisans türleri bir başlangıç ​​gerektirmeyebilir.


7
«GNU GPL, her kaynak kod dosyasında bir giriş yapılmasını gerekli kılar:» Değil. Alıntı yaptığınız kısım, başlangıç LICENSEdosyasını dosyadan çıkarmanızı önler , yani GPL'nin metnini bırakarak değiştiremezsiniz.
Andrea Lazzarotto

6

Burada henüz belirtilmeyen başka bir pratik yol var.

SPDX-License-Identifieretiket. https://spdx.org/using-spdx

Kullanarak, her kaynak dosya başlığındaki "yasal kazanınız" sadece iki satıra indirgenir:

/* SPDX-License-Identifier: (GPLv3-or-later AND LGPL-2.0-only) WITH bison-exception */
/* Copyright © 1234 Project Author */

Ayrıca, yazılım tedarik zinciri analizlerini otomatikleştiren kişiler, ortak bir makine tarafından okunabilen lisans tanım standardına uyduğunuz için teşekkür edeceklerdir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.