Czy ma sens licencjonowanie testów jednostkowych?


12

Zastanawiam się, czy istnieją jakieś korzyści / ryzyko (nie) nałożenia licencji na kod testowy, który składa się głównie z testów jednostkowych. Co myślisz?

Szczególnie interesuje mnie licencjonowanie na podstawie (L) GPL, Apache, MIT i BSD.

EDYCJA : Założeniem jest, że kod nie testowy jest już opublikowany na podstawie licencji, ale kod testowy nie, więc pytanie brzmi, czy go opublikować, a jeśli tak, czy nałożyć na niego tę samą licencję.


Czy testy nie byłyby uważane za fakty / dane, które nie podlegają prawom autorskim ani licencjonowaniu? Kopiowanie interfejsu API jest legalne i sądzę, że legalne jest również używanie tych samych testów w celu sprawdzenia, czy implementacja jest poprawna?
endolith,

Odpowiedzi:


10

Dziwi mnie, że nikt już o tym nie wspominał, ale jeśli nie dołączysz licencji do swojego kodu, niezależnie od tego, czy jest to kod produktu, czy testowy, inni nie mają żadnych praw do kodu .

Kod licencyjny polega na przyznawaniu praw innym, których normalnie by nie posiadali. Twój kod testowy jest automatycznie objęty prawem autorskim (w większości krajów na całym świecie), nawet jeśli nie dołączasz wyraźnej informacji o prawach autorskich. Będąc chronionym prawem autorskim, inni ludzie nie mogą używać, rozpowszechniać ani czerpać z tego kodu.

Dołączając licencję do kodu testowego, dajesz ludziom prawo do używania, rozpowszechniania i / lub modyfikowania tego kodu zgodnie z warunkami licencji.

Zalecam rozpowszechnianie kodu testowego wraz z kodem produktu na tej samej licencji. Jest to najprostsze dla wszystkich. Oznacza to również, że jeśli ludzie chcą przesyłać ci łatki, mogą uruchomić testy jednostkowe, zanim wyślą ci łatkę, co powinno pomóc w usunięciu łatek, które psują rzeczy.


15

W świecie komercyjnym większość firm pobiera opłaty nie tylko za produkt podstawowy, ale także za wsparcie. Najczęściej wsparcie obejmuje każdą formę pomocy za pomocą narzędzi lub pomocy osobistej, aby umożliwić użytkowanie produktu lub rozwiązać wszelkie problemy związane z produktem.

Pod tym względem kod do testowania produktu w równym stopniu kwalifikuje narzędzie wsparcia i jest sam w sobie własnością intelektualną. Zasługuje więc na własną licencję.


9

Dlaczego oddzielasz kod i testujesz?

Wolę pakiet kodu i test. I ten pakiet powinien uzyskać tę samą licencję.

Jeśli ktoś chciałby dostać dwa razy więcej pieniędzy, możesz zrobić dwie paczki - każda z licencją. W przypadku wolnego oprogramowania nie widzę powodu dla dwóch pakietów (chyba że jest to problem z rozmiarem).


6

Kod testowy ma dużą wartość, ponieważ pozwala użytkownikowi sprawdzić, czy twoje rozwiązanie działa w danym środowisku. W mojej pracy (oprogramowanie wbudowane) pakiet testowy jest częścią umowy. Powinieneś opublikować go z tą samą licencją, ponieważ użycie jest podobne:

  • jeśli ktoś po prostu użyje twojego kodu, wtedy przeprowadzi testy

  • jeśli ktoś chce zmodyfikować kod, prawdopodobnie będzie musiał również zmodyfikować niektóre testy


2

IANAL jednak:

  1. Jeśli licencjonujesz swój kod na licencji GPL, de facto twoje testy jednostkowe są również na licencji GPL, ponieważ są one bezużyteczne bez kodu głównego
  2. Jeśli używasz Apache / BSD, przepis „UŻYWAJ NA WŁASNE RYZYKO”. Uderzyłbym plik licencji z całym projektem i pozwoliłbym użytkownikowi dowiedzieć się, czy jest to kod, czy kod testowy.
  3. Jeśli korzystasz z licencji komercyjnej i ograniczasz dostęp do kodu, dlaczego miałbyś w ogóle publikować swoje testy? Jeśli chcesz mieć pewność, umieść licencję „PRZECZYTANIE KODU TESTOWEGO, NINIEJSZYM ZGADZAJ SIĘ NA DOKŁADNE OCZY” i możesz jechać dalej.

1

GCC kompilator (głównie GPLv3 licencjonowany) ma dość obszerny zestaw testów, który jest rozpowszechniany z kodem źródłowym. (być może niektóre pliki testowe są własnością publiczną, naprawdę nie znam ich indywidualnego statusu prawnego).

Dlaczego miałbyś chcieć dystrybuować swój zestaw testów oddzielnie od swojego produktu?


0

Może to być możliwy model biznesowy, więc wypuść program jako wolne oprogramowanie (GPL lub cokolwiek innego), ale odpowiednie testy jednostkowe na licencji komercyjnej. W ten sposób, jeśli ktoś chce wydać ulepszoną wersję oprogramowania (np. Wbudowaną w urządzenie), może być zmotywowany do zakupu licencji na testy jednostkowe w celu szybszego i bezpieczniejszego rozwoju.


0

Jeśli testy jednostkowe są dobrze wykonane, stanowią one plan do odtworzenia oprogramowania. Jeśli nie licencjonujesz ich równoważnie z kodem, zapraszasz kogoś, aby po prostu przyszedł i ponownie zaimplementował to, co zrobiłeś. Jeśli masz rację, nie zawracaj sobie głowy licencjonowaniem ich.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.