Nie zgadzam się z większością tutaj. Najwyraźniej większość ludzi twierdzi, że nie powinieneś tego robić. Niekoniecznie się z tym nie zgadzam, ale podtekst iw wielu przypadkach jawna wiadomość brzmi: prawnie nie możesz tego zrobić , zamiast po prostu nie powinieneś tego robić . Prawna poprawność tej wiadomości jest daleka od jasności w twoim przypadku i ogólnie.
Miło jest widzieć, że chociaż jestem w mniejszości, nie jest to tak niejasne, że żadne inne odpowiedzi nie zgadzają się z moim poglądem lub że wszystkie odpowiedzi, które są zgodne z moim zdaniem, są oceniane negatywnie. Zgadzam się z duchem przesłania @ Kittoes0124.
Jako mniejszość z pewnością powinniśmy się czegoś nauczyć od ostrożnej większości: wielu programistów zostało zwolnionych lub gorzej za naruszenie praw autorskich lub inne naruszenie własności intelektualnej. Rezultatem niestety było przekroczenie defensywności społeczności, co prowadzi do szkód dla społeczności Open Source i całego społeczeństwa, które czerpie korzyści z silnej społeczności systemów operacyjnych.
Jeden apropos comment odwoływał się do Clean Room Design, który jest prawnie pobłogosławioną, wypróbowaną i sprawdzoną metodą powielania funkcji bez naruszania praw autorskich. Zwróć uwagę, co link do artykułu mówi o projektowaniu pomieszczeń czystych, wraz z uzasadnieniem prawnym:
Projektowanie pomieszczeń czystych jest zwykle stosowane jako najlepsza praktyka, ale nie jest to ściśle wymagane przez prawo . W sprawie NEC Corp. przeciwko Intel Corp. (1990), NEC zwrócił się o orzeczenie deklaratoryjne przeciwko zarzutom Intela, że inżynierowie NEC po prostu skopiowali mikrokod procesora 8086 w swoim klonie NEC V20. Amerykański sędzia orzekł, że chociaż wczesne, wewnętrzne wersje mikrokodu NEC były rzeczywiście naruszeniem praw autorskich, to późniejsza, która faktycznie trafiła do produktu NEC, chociaż wywodzi się z tego pierwszego, wystarczająco różniła się od mikrokodu Intela, można ją uznać za wolną od naruszenia praw autorskich.
To jest właściwy standard w Stanach Zjednoczonych. Opiera się na orzecznictwie, a nie na opinii deweloperów czy anegdocie. Możesz odwoływać się do zastrzeżonego kodu i osobistego doświadczenia w celach informacyjnych, a nawet używać tego dosłownego kodu jako konkretnego punktu wyjścia, ale ostateczny kod musi być „wystarczająco inny”.
Wydaje się, że jest to niejednoznaczne i arbitralny standard, ponieważ tak właśnie jest. Sędziowie różnią się pod względem pobłażliwości interpretacji przepisu, ale zasada jest jasna. Powszechna mądrość brzmi „lepiej bezpiecznie niż przepraszać” i dlatego wielu profesjonalistów niestety unika publicznego wyświetlania jakiegokolwiek kodu. Generalnie mądrzejsze i mniej ryzykowne jest uzyskanie wewnętrznej zgody korporacji, ale generalnie nie jest to wymagane przez prawo. Może to być wymagane prawnie, jeśli podpisałeś dodatkowe dokumenty lub jeśli w Twojej jurysdykcji obowiązują specjalne przepisy.
Ważną uwagą w Twoim konkretnym przypadku jest to, że istnieje ważna różnica między kodem, który proponujesz do wysyłki, a oryginalny kod. Oświadczasz, że oryginalny kod jest specyficzny dla platformy i proponujesz dostarczyć kod niezależny od platformy. Oznacza to, że istnieją przypadki użycia, których starszy kod nie obsługuje. To jest jedna z metod wykazania znaczącej różnicy. Możesz dodatkowo wzmocnić tę różnicę, celowo ustawiając swoje rozwiązanie jako niezgodne ze starszą platformą. Oznaczałoby to, że przypadki użycia w ogóle się nie pokrywają.
Nie jestem prawnikiem i to nie jest porada prawna. Jeśli zdecydujesz się na coś takiego, radzę skonsultować się z prawnikiem. Widzę wiele amerykańskich precedensów prawnych potwierdzających fakt, że kodując w naturalny sposób będziesz czerpać z wcześniejszego doświadczenia i wiedzy, w tym odwoływać się do konkretnych przykładów kodu, a to nie czyni Open Source nielegalnym.
Używanie tej samej składni nie musi być problemem. Wiele języków i bibliotek udostępnia tylko jeden syntaktyczny sposób wykonywania określonej czynności, a najlepsze praktyki istnieją dla funkcji, zmiennych itd., Tak że używanie nawet tych samych nazw zmiennych może być nieuniknione w przypadku replikacji funkcji. W takich przypadkach znacząca różnica może być niemożliwa, a tym samym niewymagana.
Pamiętaj, że te ogólne pojęcia byłyby całkowicie nie do obrony, gdybyś podpisał konkretną NDA lub inne dokumenty.
Dwie inne powiązane uwagi. Po pierwsze, naruszenia praw własności intelektualnej podlegają w USA przedawnieniu ( źródło):
Naruszenie praw autorskich może skutkować odpowiedzialnością cywilną i / lub karną. Okres przedawnienia w postępowaniu karnym wynosi pięć lat, natomiast w przypadku postępowania cywilnego - trzy lata.
Druga uwaga dotyczy tylko 4 (AFAIK / IANAL) rodzajów własności intelektualnej ( źródło):
- Prawa autorskie
- Znak towarowy
- Patent
- Tajemnice handlowe
Jeśli masz do czynienia z IP, które nie mieści się w kategoriach 1-3, dostosowanie kodu do własnego użytku jest mniej problematyczne z prawnego punktu widzenia. Wydaje mi się trudne, że ktokolwiek mógłby twierdzić, że X jest tajemnicą handlową, jeśli X jest powszechnym wzorcem lub funkcją w innym oprogramowaniu, szczególnie jeśli już istnieje w projektach Open Source.