Czy niewłaściwe jest pobieranie kodu, który stworzyłeś w pracy i ponowne wykorzystywanie go do osobistych projektów?

31

W różnych miejscach pracy zawsze pisałem kod, który sprawił, że pomyślałem „byłoby to naprawdę przydatne w innych sytuacjach”. Rzeczywiście celowo piszę kod, nawet jeśli zajmuje mi to więcej czasu, co, jak wiem, pomoże mi w przyszłości (np. SubString()Funkcje niestandardowe ). Dobrym kandydatem do tych fragmentów są różne klasy „Pomocników”.

Te fragmenty, jestem pewien, prawdopodobnie można je znaleźć gdzie indziej w Internecie, ale chodzi o to, że je napisałem i użyję ich później w innych pracach lub do osobistych projektów. Obecnie nie prowadzę osobistej biblioteki kodów, ale pytanie brzmi: czy błędem jest zabranie kodu, który stworzyłeś w pracy i ponowne wykorzystanie go ( a ) do osobistych projektów i ( b ) w innych pracach?

Arj
źródło
2
@Michael Podobne, ale nie dokładny duplikat. Odpowiedzi są bardzo podobne, ale w rzeczywistości są to dwie różne obawy. Ten dotyczy mniejszych fragmentów kodu - kilku klas, metody lub dwóch. Drugi polega na odtworzeniu całego projektu.
Thomas Owens
Zabawne jest to, że zawsze znajduję przepływ w innym kierunku . Zwykle bardzo interesujące fragmenty kodu mam w moich projektach hobby, w których eksperymentuję więcej. Z pewnością nikt nie narzeka, kiedy te udane pomysły trafią do mojej pracy za wynagrodzeniem. :-)
DaveGauer

Odpowiedzi:

25

Zawsze rozwiązałem ten problem, mając osobisty projekt, w którym umieszczam wszystkie moje szalone pomysły i ogólne rzeczy, a następnie udzielam licencji na licencji BSD, która pozwala ludziom ponownie używać, zmieniać, rebrandować, zamykać i pobierać pieniądze za to. W ten sposób zachowuję prawa autorskie, ale mogę ponownie użyć kodu, tak jak mi się podoba dla tego i tego pracodawcy, aby zachować prawa autorskie do oryginału, ale pracodawca zachowuje prawa autorskie do ponownie użytej instancji. Wydaje mi się, że gdyby mieli z tym problem, to po prostu musieliby mi zapłacić za przepisanie go na czas pracy, co z ich punktu widzenia nie ma sensu. Co więcej, firmy cały czas używają kodu BSD, ponieważ idea BSD polega na umożliwieniu ludziom i firmom robienia z nim wszystkiego, co tylko chcą, w tym rebrandingu i sprzedaży.

Wtedy oczywiście, jeśli do kodu w miejscu pracy zostaną dodane dodatkowe elementy, nie będę mógł go użyć w innym miejscu bez przepisywania go w swoim własnym czasie ... co jest w porządku, ponieważ ogólne elementy są zwykle stosunkowo małe, chyba że jest to pomysł, który i tak wymaga znacznego wysiłku w czasie wolnym.

Pisanie go w swoim własnym czasie i licencjonowanie kodu w ramach licencji typu BSD powinno pozwolić ci na utrzymanie biblioteki dla siebie, z której możesz korzystać praktycznie gdziekolwiek chcesz.

Teraz, jeśli chodzi o umowy, które twierdzą, że pochłaniają wszystkie prawa autorskie do twoich osobistych projektów ... to prawdopodobnie różni się radykalnie między jurysdykcjami, ale przynajmniej w niektórych zachodnich jurysdykcjach rozumiem, że umowa nie może tego zrobić. Umowa może powiedzieć, że tak, ale nie byłaby egzekwowana w sądzie, ponieważ prawa autorskie muszą być jawnie przeniesione, w przeciwieństwie do „cała twoja baza należy do nas” - rodzaj umowy, która nigdy nie zostałaby podtrzymana (w jurysdykcja, z której i tak pochodzę). Istnieje szereg ograniczeń dotyczących tego, co można utrzymać w sądzie w drodze umowy, dlatego zazwyczaj (i mam nadzieję) zobaczysz klauzulę, która mówi, że jeśli jedna część umowy nie działa zgodnie z prawem , pozostała część umowy nadal obowiązuje.

Ale jak zawsze skonsultuj się z prawnikiem, zanim zinterpretujesz to jako dokładną poradę prawną. Nigdy nie zostałem postawiony przed sądem w tej sprawie, więc nie znam żadnej z tych rzeczy jako faktów prawniczych. :)

Teekin
źródło
31

To zależy od umowy o pracę. Obecnie najbardziej prawdopodobną odpowiedzią jest (a) tak, to jest złe i (b) tak, to jest naprawdę złe. Prawie wszystkie umowy oferowane dziś deweloperom zawierają postanowienia mówiące, że każdy kod, który piszesz podczas pracy w firmie (zarówno w godzinach pracy, jak i poza nią) jest ich własnością i automatycznie przenosisz na nie swoje prawa autorskie. Chyba że specjalnie negocjujesz z tym, prawdopodobnie dotyczy to ciebie.

Jednak jak zawsze:

Nie wierz nam! Skonsultuj się z prawnikiem przed zrobieniem czegoś potencjalnie niebezpiecznego.

Kilian Foth
źródło
7
+10 (jeśli mógłbym) za „Nie wierz nam! Przed zrobieniem czegoś potencjalnie niebezpiecznego skonsultuj się z prawnikiem”. Najlepiej. Doradzać. Zawsze.
Sardathrion - Przywróć Monikę
2
Czy masz jakieś źródło oświadczenia, że ​​„prawie wszystkie umowy oferowane deweloperom” stanowią, że „każdy kod, który piszesz podczas pracy w firmie (zarówno w godzinach pracy, jak i poza nią)” należy do pracodawcy?
CVn
3
Warunki te są rutynowe w sposób obejmujący samych pracodawców zbyt wiele, a nie zbyt mało, aw wielu przypadkach jest miejsce na zdrowy rozsądek. To powiedziawszy: (1) musisz upewnić się, że twoje zdanie na temat zdrowego rozsądku zgadza się z ich opinią, i (2) to duże ryzyko. Kilka lat później opinie mogą się zmienić - szczególnie jeśli zarabiasz dużo pieniędzy lub jeśli uważają, że coś, co napisałeś, może szkodzić ich sprzedaży. W przypadku biblioteki małych ogólnych funkcji narzędziowych łatwiej jest pisać ponownie i nie martwić się. Coś bardziej znaczącego i jesteś na bardzo niebezpiecznym gruncie.
Steve314,
4
@ MichaelKjörling. Źródło, którego szukasz, znajduje się w doskonałej odpowiedzi Joela Spolsky'ego na ten temat w Start Ups .
TRiG
22
Właściwie .. Myślę, że denerwujące i nierealistyczne jest zawsze mówienie „zapytaj prawnika”. Przede wszystkim dlatego, że to zdrowy rozsądek, że możesz się mylić; jeśli doradzasz, jak naprawić krytyczną lukę w zabezpieczeniach SO, nie mów „Zapytaj programistę!” każdego razu. Drugi prawnik jest drogi; szczerze mówiąc, jak myślisz, ile osób faktycznie zatrudni prawnika za zadawanie - zwykle - ciekawostek? Czy ty kiedykolwiek wynajął prawnika do zadawania coś takiego?
Thomas Bonini,
9

Po prostu przepisz kod w razie potrzeby . Całkowicie unika tego problemu ze względu na kilka minut kodowania.

Są szanse, że nauczysz się więcej i napiszesz coś lepszego. Przepisywanie kodu również ogólnie czyni go bardziej eleganckim.

Tom Squires
źródło
Zgadzam się, ale co z podbibliotekami, które nie są po prostu kilkuminutowe? Klasy dostępu do baz danych, tworzenia plików itp.? To prawda, że ​​przepisywanie poprawia kod
Arj
3
To nie takie proste. Każda ponowna implementacja musi być całkowicie różna od oryginalnego kodu. Nawet przepisywanie może być złe. Tworzenie lepszej wersji istniejących rzeczy jest zdecydowanie złe. Lepiej trzymać go całkowicie osobno.
tp1,
Jeśli opracujesz dla kogoś jakiś zastrzeżony algorytm, (prawdopodobnie) wpadniesz w kłopoty, jeśli napiszesz go jeszcze raz dla kogoś innego. Jest trochę szkicowy. Jeśli jest to po prostu kod bojlera, tak, łatwo rozpocząć nową kolekcję.
Tim Post
@ tp1 Poczekaj, co jeśli cel funkcji x()jest tak konkretny i użyteczny, że nie ma aż tak wielu sposobów na napisanie go? W takim przypadku, w jaki sposób można go rozdzielić, jeśli implementacja jest tak podobna?
Arj
@ a12jun, cóż, dlatego należy to rozpatrywać osobno dla każdej sytuacji. Pojęcie sortowania jest prawdopodobnie doświadczeniem programisty w dziedzinie informatyki, a pisanie jest w porządku. Ale jeśli jest to coś konkretnego, co jest rzadkie lub specyficzne dla pewnego rodzaju oprogramowania, to będzie źle.
tp1
6

W zależności od warunków zatrudnienia może tak być. Skonsultuj się ze swoim przełożonym, działem zasobów ludzkich, działem prawnym i / lub działem etyki, aby ustalić, co jest własnością Twojej firmy i tego, co jest Twoją własnością, a także jaki jest proces wnioskowania o uzyskanie praw do użytkowania lub własności rzeczy które produkujesz w pracy.

Prawie w każdym miejscu, w którym pracowałem, rzeczy, które biorą udział w projektach, są własnością firmy, ale szukałem i otrzymałem pozwolenie na wydawanie rzeczy na osobiste projekty na podstawie indywidualnych przypadków, co zwykle wymagało wyjaśnienia, czego chcę zrobić z tym i jak nie byłoby szkodliwe dla organizacji, aby pozwolić jej odejść.

Thomas Owens
źródło
Zgadzam się z tym; rozmowa z ludźmi we własnej firmie jest dobrym punktem wyjścia (zakładając, że masz z nimi dość dobre relacje). Nie jest wykluczone, że powiedzą „pewnie, rób z tym, co lubisz, o ile nie jest to ściśle związane z naszą działalnością”.
Keith Thompson
Tak, dobrze jest poprosić o pozwolenie: umowa może zawierać stwierdzenie, że „cała twoja baza należy do nas”, ale generalnie jest to wyłącznie do celów CYA i mogą chcieć zezwolić na rzeczy, których twoja umowa nie gwarantuje . (Ale na wszelki wypadek możesz się upewnić, że dostałeś to na piśmie.)
SamB
4

Odniosłem pewien sukces (nie całkowity sukces) w przekonaniu moich pracodawców do wydania na licencji open source części mojego kodu napisanego podczas pracy dla nich. Przeważnie kod napisałem w swoim własnym czasie, ale czasem nie. Cały kod nie jest specyficzny dla żadnej branży.

Zacząłem od napisania kilku bibliotek, kiedy byłem bezrobotny, a następnie wydałem je na licencji MIT. Następnie podczas procesu rekrutacji przy późniejszych pracach wspomniałem o tym i mówiłem, że użyję tego kodu, aby im pomóc, jeśli to możliwe, ale czy mieliby coś przeciwko, gdyby dodali rzeczy, które napisałem podczas pracy dla nich, ale tylko rzeczy, które nie były specyficzne dla ich działalności i tylko za ich zgodą.

Wyniki były różne, ale z czasem mogłem rozbudować swoją bibliotekę. Zdarzały się przypadki, w których posiadanie biblioteki przyspieszyło rozwój moich pracodawców.

psr
źródło
4

Dziwi mnie, że najczęściej głosowaną odpowiedzią jest „tak”. Jako programista odpowiedź zawsze brzmiała „absolutnie nie”, z wyjątkiem sytuacji, w których kod jest albo:

  1. Poprzednio skomponowana biblioteka, którą opracowałem niezależnie od obecnych i wszystkich poprzednich projektów, lub
  2. Biblioteka, która została udostępniona w tym celu, np. Rzeczy typu open source.

Ktoś zapłacił ci za napisanie kodu. Z wyjątkiem innego porozumienia i porozumienia, co jest w porządku, nie jest właściwe, aby ktoś inny mógł czerpać z tego BEZPOŚREDNIE korzyści.

Teraz - słowo BEZPOŚREDNIE. Jeśli osiągniesz koniec projektu i nauczyłeś się czegoś ciekawego i stworzyłeś z niego coś użytecznego, co nie jest bezpośrednio związane z własnością intelektualną klienta, poświęć trochę czasu i stwórz sobie bibliotekę. Jeszcze lepiej - ROZPOCZNIJ Z NIM OTWARTY PROJEKT ŹRÓDŁOWY, aby wszyscy byli dla niego bogatsi. Myślę, że jest absolutnie w 100% etycznie czysty jak śnieg na jeździe i rzeczywiście zrobiłem to sam.

W krótkim okresie ponowne użycie kodu, który zapłacono za napisanie dla kogoś innego, spowoduje prawne problemy. Na dłuższą metę spowoduje to bóle głowy postaci.

Chris B. Behrens
źródło
1
Brawo za udzielenie odpowiedzi na podstawie etycznej, a nie prawnej. Pamiętajcie: cała moralność nie jest zawarta w prawie. Ponadto, przynajmniej w USA, prawo oderwało się od rzeczywistości i społeczeństwa. Prawo i prawnicy wydają się aktywnie działać przeciwko większemu dobru.
Bruce Ediger,
Dobra i elegancka odpowiedź, ale nie ma nic wspólnego z prawem. Z prawnego punktu widzenia odpowiedź ta jest niepewna w większości krajów zachodnich.
szybko_naz
2

Jestem pewien, że jest to kwestia prawna w zależności od tego, gdzie mieszkasz / pracujesz i co zostało uzgodnione / twoja umowa.

Jeśli nauczę się czegoś na własną rękę, we własnym czasie, wszystkie wydatki poniesione przeze mnie (komputer, dostęp do Internetu, oprogramowanie itp.), Czy nie chcieliby, żebym wykorzystał to w mojej pracy? Znajdujesz wyrażenie regularne dla osobistego projektu i decydujesz się wysłać go e-mailem na swoje konto służbowe, ponieważ prawdopodobnie możesz go użyć. Trochę głupio byłoby spędzić czas w towarzystwie udając, że ponownie go szuka w Internecie. Oczywiście staramy się ulepszać nasze rzemiosło, tego oczekuje się od programistów, bla, bla, bla, ale co, jeśli byłby w obszarze poza programowaniem, a nawet IT? Mogę się powstrzymać, jeśli chcą zagrać w tę grę.

Firma może starać się ściśle trzymać kod, który produkuję. Budowanie relacji jest po prostu słabym fundamentem. Jeśli tak bardzo im zależy na kilku liniach kodu, nie wyobrażam sobie, w jakim stopniu zdominują mój czas; co jest warte dużo więcej.

JeffO
źródło
1

W przeszłości miałem te same myśli. Niestety, myślę, że wszystko, co piszesz bezpośrednio na temat swojej pracy, technicznie byłoby chronione prawem autorskim przez twojego pracodawcę. Musisz poprosić o zgodę na ponowne użycie tego kodu w innych pracach niezwiązanych z firmą.

Z drugiej strony, jeśli pisałeś kod w wolnym czasie dla jednego ze swoich projektów, możesz chronić swój kod jakimś rodzajem praw autorskich, a następnie zaoferować przekazanie tego kodu pracodawcy.

Tak czy inaczej, musi być jasna komunikacja w tej sprawie.

Oczywiście IANAL.

Mike Cellini
źródło
1

Twoje pytanie jest bardzo podobne do tego „ Open Source - Czy legalne jest odtwarzanie / open source programu, który wcześniej stworzyłeś dla innej firmy?

Powiedziałbym, że masz chwiejną podstawę prawną, ponieważ firmy, dla których pracowałeś, prawdopodobnie posiadają kod, który dla nich napisałeś. Lepiej byłoby kodować procedury od zera, ale nawet wtedy mogą pojawić się pytania, czy nadal masz kopie innego kodu.

[Nie jestem prawnikiem, więc nie oczekuj, że moja rada pomoże ci w sądzie.]

jwernerny
źródło
+1 za „Nie jestem prawnikiem, więc nie oczekuj, że moja rada pomoże ci w sądzie”.
Sardathrion - Przywróć Monikę
1

Powiedziałbym, że tych ogólnych metod / funkcji najlepiej nie zachowywać między projektami. Przez większość czasu możesz użyć doładowania lub dowolnego innego języka, aby to zrobić. Najczęściej są one lepiej napisane niż twoje.

Dobrym pomysłem jest mieć dla nich zestaw testów jednostkowych i użyć ich do przetestowania kata kodu.

Sardathrion - Przywróć Monikę
źródło
1

Zadania kierują się do Azji, więc przepisz kod, dopóki pociąg sos nadal istnieje. Jeśli otrzymujesz wynagrodzenie za napisanie kodu, napisz go lub wklej i udawaj, że przepisałeś go podczas zabawy. Albo jeszcze lepiej: pracuj z domu i zapłać bardziej wykwalifikowanemu, inteligentniejszemu i, co najważniejsze, znacznie tańszemu programistowi z Azji, aby napisał kod dla ciebie i pomieszał różnicę. Następnie możesz wyjść i cieszyć się światem, zanim nas korporacyjni Bogowie nas porzucą, a my wszyscy jesteśmy bez środków do życia, pracując w fabrykach chipów, wytwarzając chipy za 2 centy za godzinę dla bogatych chińskich i indyjskich konsumentów iPhone'ów.

marabutt
źródło
0

Wiem, że to stare pytanie, ale ktoś go podniósł i uważam, że dobrym pomysłem byłoby dodanie odniesienia do bardzo smutnej historii Siergieja Aleynikowa . Zanim zabierzesz kod z pracy, przeczytaj, jak to zrujnowało mu życie i wsadziło go do więzienia .

JimmyJames
źródło