Copyright sulla propria implementazione della libreria C standard

0

Sono impegnato a scrivere una libreria C standard per il mio sistema operativo per hobby. Sto solo includendo le funzioni di cui ho veramente bisogno per ora, ma la libreria è ancora referenziata come 'libc' nella mia fonte e ho intenzione di estenderla a una libreria C completa. Il mio sistema operativo verrà rilasciato come open-source, quindi vorrei sapere che tipo di avviso sul copyright dovrei mettere sui file sorgente per la mia 'C Library' perché la codifica è mia ma è ancora basata sulla fonte di altri Librerie C come GNU C.

Ho visto questo avviso di copyright su un'implementazione di libreria C per AVR

00001 /* Copyright (c) 2002, Marek Michalkiewicz
00002    Copyright (c) 2004,2007 Joerg Wunsch
00003 
00004    Portions of documentation Copyright (c) 1990, 1991, 1993, 1994
00005    The Regents of the University of California.
00006 
00007    All rights reserved.
00008 
00009    Redistribution and use in source and binary forms, with or without
00010    modification, are permitted provided that the following conditions are met:
00011 
00012    * Redistributions of source code must retain the above copyright
00013      notice, this list of conditions and the following disclaimer.
00014 
00015    * Redistributions in binary form must reproduce the above copyright
00016      notice, this list of conditions and the following disclaimer in
00017      the documentation and/or other materials provided with the
00018      distribution.
00019 
00020    * Neither the name of the copyright holders nor the names of
00021      contributors may be used to endorse or promote products derived
00022      from this software without specific prior written permission.
00023 
00024   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00025   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00026   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
00027   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
00028   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
00029   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
00030   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00031   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00032   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
00033   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00034   POSSIBILITY OF SUCH DAMAGE.
00035 
00036   $Id: stdlib_8h_source.html,v 1.1.1.4 2012/01/03 16:04:22 joerg_wunsch Exp $
00037 */
    
posta Keagan Ladds 12.03.2014 - 11:02
fonte

1 risposta

4

Se hai basato la tua fonte sul sorgente di glibc in qualsiasi modo (anche guardando la fonte glibc, approssimativamente calcolando come funziona e poi scrivendo il tuo codice simile), la tua libreria potrebbe già contare come una derivata lavoro. Poiché glibc è concesso in licenza sotto GPL con eccezione di collegamento, ciò significa che il tuo codice deve essere anche sotto GPL. Il copyright dovrebbe quindi dire qualcosa del tipo "Basato su sorgenti di glibc. Parti aggiuntive (c)."

Il derivato funziona indirettamente dagli altri è un problema legale difficile, e potresti voler consultare un esperto al riguardo. In alcune aziende, gli ingegneri non sono autorizzati a consultare il codice GPL che è collegato in remoto a ciò che stanno facendo, per timore che possano essere "avvelenati" dal codice e produrre opere derivate. (Ricordo un ingegnere che lavora su un compilatore per una grossa compagnia che ha guardato un discorso che ho fatto su Clang - mi ha detto che doveva chiudere gli occhi quando una delle mie diapositive conteneva un po 'di codice sorgente di Clang. anche GPLed.)

D'altro canto, per quanto ne so, una connessione così sciolta non è mai stata testata in un tribunale e, nel caso di un'interfaccia di programmazione chiaramente definita come la libreria standard C, la difesa dell'ovvietà potrebbe essere applicata in molti casi. In altre parole, se scrivi un semplice strcpy :

char* strcpy(char* dest, const char* src) {
  for (; *src; ++src, ++dest) {
    *dest = *src;
  }
  return dest;
}

allora sarà difficile dire che l'hai copiato da qualcun altro perché questo è solo il modo semplice e ovvio per implementarlo. Ma se il codice diventa più complesso, ad esempio, include le ottimizzazioni SIMD, quindi le cose diventano più sfocate.

    
risposta data 12.03.2014 - 11:15
fonte

Leggi altre domande sui tag