Ha senso licenziare i test unitari?


12

Mi chiedo se ci siano benefici / rischi di (non) mettere una licenza sul codice di test che consiste principalmente in unit test. Cosa pensi?

Sono particolarmente interessato alle licenze in base a (L) GPL, Apache, MIT e BSD.

EDIT : il presupposto è che il codice non test sia già pubblicato con una licenza, ma il codice test non lo è, quindi la domanda è se pubblicarlo e in tal caso se inserirvi la stessa licenza.


I test non sarebbero considerati fatti / dati, che in primo luogo non sono soggetti a copyright o licenze? È legale copiare un'API e immagino sia anche legale utilizzare gli stessi test per verificare che l'implementazione sia corretta?
endolith il

Risposte:


10

Sono sorpreso che nessuno lo abbia già menzionato, ma se non si allega una licenza al proprio codice, sia esso un prodotto o un codice di prova, gli altri non hanno diritti sul codice .

Il codice di licenza riguarda la concessione di diritti ad altri che normalmente non avrebbero. Il codice di test è automaticamente coperto da copyright (nella maggior parte dei paesi del mondo) anche se non si allega esplicitamente un avviso sul copyright. Essendo protetti da copyright, altre persone non possono utilizzare, distribuire o derivare da quel codice.

Allegando una licenza al tuo codice di prova, dai alle persone il diritto di utilizzare, distribuire e / o modificare tale codice in conformità con i termini della licenza.

Consiglio di distribuire il codice di test con il codice del prodotto, con la stessa licenza. Questo è più semplice per tutti. Significa anche che se le persone vogliono inviarti patch, possono eseguire i test unitari prima di inviarti una patch, il che dovrebbe aiutare a eliminare le patch che rompono le cose.


15

Nel mondo commerciale, la maggior parte delle aziende addebita non solo il prodotto principale ma anche il supporto. Molto spesso il supporto implica qualsiasi forma di aiuto tramite strumento o assistenza personale, per essere in grado di rendere utilizzabile il prodotto o risolvere eventuali problemi relativi al prodotto.

In questo modo, il codice per testare il prodotto qualifica ugualmente uno strumento di supporto ed è una proprietà intellettuale a sé stante. Quindi merita una licenza propria.


9

Perché separare il codice e testare?

Preferisco un pacchetto di codice e test. E questo pacchetto dovrebbe ottenere la stessa licenza.

Se qualcuno desidera ottenere due soldi, allora puoi fare due pacchetti, ciascuno con una licenza. Per il software libero, non vedo alcun motivo per due pacchetti (a meno che non si tratti di un problema di dimensioni).


6

Il codice di test ha molto valore, poiché consente all'utente di verificare se la soluzione funziona in un determinato ambiente. Nel mio lavoro (software incorporato) la suite di test fa parte del contratto. Dovresti pubblicarlo con la stessa licenza, perché l'utilizzo è simile:

  • se qualcuno usa solo il tuo codice, eseguirà i test

  • se qualcuno vuole modificare il codice, probabilmente dovrà anche modificare alcuni test


2

IANAL, tuttavia:

  1. Se stai concedendo in licenza il tuo codice con GPL, anche i test unitari sono GPL in quanto sono abbastanza inutili senza il codice principale
  2. Se stai utilizzando Apache / BSD, la disposizione "USA A TUO RISCHIO". Schiafferei un file di licenza con l'intero progetto e lascerei che l'utente capisse se è per il codice o il codice di prova.
  3. Se si utilizza una licenza commerciale e si limita l'accesso al codice, perché pubblicare i test in primo luogo? Se vuoi essere sicuro, metti un "LEGGENDO IL CODICE DI PROVA, CONVENI CONCORDO DI GOUGE I TUOI OCCHI" e sei a posto.

1

Il compilatore GCC (principalmente licenza GPLv3) ha una suite di test piuttosto estesa, che viene distribuita con il codice sorgente. (forse alcuni file di test sono di dominio pubblico, in realtà non conosco il loro stato giuridico individuale).

Perché dovresti voler distribuire la tua suite di test separatamente dal tuo prodotto?


0

Potrebbe essere un possibile modello di business, quindi rilascia un programma come software libero (GPL o altro), ma i test unitari corrispondenti con una licenza commerciale. In questo modo, se qualcuno desidera rilasciare una versione migliorata del software (ad esempio incorporato in un dispositivo), potrebbe essere motivato ad acquistare la licenza di unit test per uno sviluppo più rapido e sicuro.


0

Se i test unitari sono stati eseguiti correttamente, rappresentano un modello per la riproduzione del software. Se non li autorizzi in modo equivalente al codice, stai invitando qualcuno a venire e implementare nuovamente tutto ciò che hai fatto. Se stai bene, non preoccuparti di concederli in licenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.