Czy ponowne wykorzystanie kodu w projektach innych klientów jest legalne?

22

Pracuję jako niezależny programista dla aplikacji mobilnych. Klient prosi mnie o opracowanie aplikacji mobilnej. W tej chwili obliczam czas i wysiłek, aby napisać ofertę dla tego projektu.

Sama aplikacja będzie używana tylko przez pewien czas, ponieważ będzie później związana z określonym zdarzeniem, jeśli będzie bezużyteczna. Ale podstawowa funkcjonalność aplikacji będzie mogła być ponownie wykorzystywana przez innych klientów, którzy chcą mieć podobną aplikację na swoje wydarzenie.

W tej chwili zastanawiam się, czy jest w porządku, aby opracować aplikację dla klienta, pozwolić mu zapłacić za rozwój i ponownie wykorzystać część kodu źródłowego dla aplikacji innego klienta?

Jaki byłby dla mnie najlepszy sposób radzenia sobie z tym scenariuszem?

  • Do kogo należy kod źródłowy aplikacji?
  • Czy muszę podać kod źródłowy klientowi, który zapłacił za opracowanie?
  • Jeśli muszę, czy mogę zachować jego kopię i wykorzystać ją później?
  • Czy muszę prosić klienta o ponowne użycie kodu?
  • Czy muszę tutaj pracować z jakimś modelem licencjonowania. I czy pierwszy klient zapłaci tylko określoną część projektu, abym mógł ponownie użyć kodu bez żadnych obaw?

Mam nadzieję, że wyjaśniłem swoją sytuację. Czekam na twoje odpowiedzi.

Flo
źródło
Czy masz już formalną umowę z klientem?
Thomas Owens
Nie, w tej chwili jestem w fazie planowania. Do tej pory rozmawiałem z klientem tylko o wymaganiach.
Flo
5
@Flo - Napisz umowę uwzględniającą wszystkie te obawy. Domyślnie prawa autorskie należą do ciebie jako autora. Oczywiście, jeśli zgadzasz się na umowę, która mówi inaczej, która dotyczy ciebie.
Ramhound 30.01.12
8
Powinieneś skonsultować się z prawnikiem, zamiast polegać na domysłach grupy programistów, którzy nie znają szczegółów twojej sytuacji i lokalnych przepisów.
Paul Tomblin
1
Powiązane: stackoverflow.com/questions/900803
Robert Harvey

Odpowiedzi:

26

Przed rozpoczęciem projektu powinieneś zdecydować , kto zachowa własność kodu.

Jeśli pozwolą ci zachować własność, możesz używać go w innych projektach. Jeśli później chcą przejąć na własność, jest to punkt negocjacji.

Tomek
źródło
6
W twoim interesie może być zaproponowanie oferty, w której możesz ponownie wykorzystać kod, ale nie w projektach dla konkurentów twojego klienta. Z ich punktu widzenia wydaje się to smaczniejsze.
Emilio M Bumachar,
4
Jeśli sprzeciwiają się, zwykłą opcją jest cytowanie 2rates. 1, jeśli mogę ponownie wykorzystać istniejący kod i biblioteki oraz 2. 10 razy więcej, jeśli muszę odtworzyć wszystko od zera tylko dla tego projektu. W praktyce wkładasz trochę w „ponowne wykorzystywanie standardowego kodu i bibliotek” tylko po to, by się ochronić i nikt nigdy nie zauważy ani nie będzie cię to obchodziło.
Martin Beckett,
3
+1 do Martina Becketta. Powinieneś mieć dwie bazy kodu w każdym projekcie; Zestaw „wspólnych” bibliotek zawierających kod z globalną aplikacją, które „licencjonujesz” swoim klientom, oraz „niestandardowy” kod, który klient będzie faktycznie posiadał po zakończeniu. W umowie można zastrzec, że tworzenie „wspólnych” bibliotek z nowymi funkcjami w odpowiedzi na wymagania tego projektu jest nadal płatne. Będziesz musiał negocjować z klientem indywidualnie, co kwalifikuje się jako „wspólne”; klient może chcieć bazy kodu, która nie jest całkowicie zależna od twojego kodu licencyjnego.
KeithS
6

Ponieważ nie masz jeszcze umowy, przed podpisaniem ostatecznej umowy musisz rozwiązać te problemy z klientem. Z mojego zrozumienia, stanie się tak, jeśli klient zgodzi się z twoimi szacunkami na czas i koszt, więc powinieneś pomyśleć o rozmowie z klientem teraz, wraz z wymaganiami. Są to rzeczy, które często są zawarte w takim dokumencie. To, co jest w zestawie, powinno być akceptowalne zarówno dla ciebie, jak i osoby płacącej za produkt, chociaż w zależności od osoby lub organizacji możesz nie uzyskać wszystkiego, czego chcesz.

Jeśli nie masz dużego doświadczenia w pisaniu umów lub masz bardzo szczegółowe pytania, najlepiej zapytać prawnika, który specjalizuje się w prawie umów i prawie gospodarczym - wiedziałby, czy to, co napisałeś sąd powinien być problem. Nie chcesz, aby błąd w umowie spowodował później problemy.

Thomas Owens
źródło
7
+1 Chciałbym również dodać, że uzyskanie porady prawnej lub pomoc w napisaniu pierwszej umowy jest dobrym pomysłem, abyś mógł to zrobić dobrze. Ogólnie rzecz biorąc, większość ofert jest bardzo podobnych, więc używanie starych umów jako szablonu umów, które później piszesz dla nowych klientów, jest dość łatwe.
wałek klonowy
4

Dotychczasowe odpowiedzi były doskonałe. Z całego serca zgadzam się z radą, aby:

  • zapytaj prawnika
  • sporządzaj umowę za każdym razem, gdy współpracujesz z kimkolwiek
  • kontynuuj współpracę ze swoim prawnikiem
  • zysk!

W tej sytuacji wiesz już, że „podstawowa funkcjonalność aplikacji będzie dostępna dla innych klientów”, i jestem pewien, że ty (i inni) doświadczyłeś już sytuacji, w których znasz podstawowe funkcje lub ramy - bądź będą dostępne w Internecie, na urządzeniach mobilnych, komputerach stacjonarnych lub w inny sposób. Mam na myśli naprawdę, dlaczego nie mielibyśmy ponownie użyć czegoś, o czym wiemy, że działa i znamy się na tym? Prawdopodobnie wszyscy robimy to cały czas.

To może nie działać dla ciebie, ale działało dla mnie przez lata:

  • Zjedz koszt rozwoju wszystkiego, co według ciebie będzie ponownie użyte, zachowaj własność i udziel licencję swoim klientom. Żadne pieniądze zewnętrzne nie zmieniają rąk w tym procesie, aby zachować przejrzystość własności.

W tej sytuacji, z pomocą prawnika, możesz wyjaśnić, że Twoi klienci płacą za wszystko zbudowane w oparciu o tę podstawową funkcjonalność, którą udostępniasz, są właścicielami tej modyfikacji, ale nie podstawa, i nadal możesz swobodnie rozwijać się dla innych w podobny sposób.

Jeśli klient żąda wyłączności użytkowania, wtedy możesz zaoferować im to w cenie, która wypłaca Ci do czasu, wysiłku i niemożność sprzedania go nikomu innemu w przyszłości.

Minusem jest oczywiście to, że rozwijasz coś za darmo. Musisz być pewien, że będzie można go ponownie wykorzystać i że inni ci zapłacą, w przeciwnym razie jest to zły hazard. Ale jeśli planujesz być niezależnym programistą przez jakiś czas i masz bazę klientów - a przynajmniej chcesz - ten sposób myślenia może być czymś do rozważenia na dłuższą metę.

I porozmawiaj z prawnikiem!

jcmeloni
źródło
3

Do kogo należy kod źródłowy aplikacji? Czy muszę podać kod źródłowy klientowi, który zapłacił za opracowanie?

To zależy od umowy. Ogólnie rzecz biorąc, musisz zapytać klienta o tak zwaną wyłączność . Na przykład możesz zapłacić znacznie więcej za wyłączne programowanie (a wtedy klient będzie właścicielem kodu); możesz też powiedzieć im, że klient będzie musiał zapłacić mniej, ale legalnie jesteś właścicielem źródła. Możesz dostarczać / instalować wersję binarną oprogramowania dla klientów, aby klient musiał przyjechać do ciebie w celu modyfikacji.

Jeśli muszę, czy mogę zachować jego kopię i wykorzystać ją później? Czy muszę prosić klienta o ponowne użycie kodu?

Zasadniczo przechowywanie kopii nie jest nielegalne / nieetyczne. Możesz go użyć, gdy klient prosi o dalszy rozwój. Jednak rozpowszechnianie kodu (do kogoś innego), jeśli umowa była wyłączna, jest niewłaściwe.

Czy muszę tutaj pracować z jakimś modelem licencjonowania. I czy pierwszy klient zapłaci tylko określoną część projektu, abym mógł ponownie użyć kodu bez żadnych obaw?

Nie tylko z punktu widzenia ponownego wykorzystania kodu w inny sposób, proces licencjonowania musi odbywać się w celu zdefiniowania wszystkich pozycji klienta i twoich obaw. Musisz więc uzyskać licencję niezależnie od tego, czy umowa jest jednostronna. Ponadto należy uwzględnić postanowienia dotyczące późniejszego rozwoju tego samego klienta.

Dipan Mehta
źródło
1
-1, Nie ma powodu, dla którego nie możesz rozpowszechniać kodu źródłowego, nawet jeśli jesteś jego właścicielem.
user606723,
@ user606723 czy przeczytasz pełne zdanie? However, distributing code (to someone else) if the deal was exclusive, is not right.tzn. jeśli opracowałeś kod wyłącznie dla klienta dystrybuującego go do kogoś innego, to nie jest właściwe!
Dipan Mehta
„alternatywnie możesz powiedzieć im, że klient będzie musiał zapłacić mniej, ale posiadasz źródło zgodnie z prawem. Możesz dostarczyć / zainstalować plik binarny tylko klientowi. ” <- o to mi chodzi. Możesz przyznać niewyłączne prawa do kodu źródłowego.
user606723,
@ user606723 nie jest również objęty moją odpowiedzią? alternatively you can tell them customer will have to pay less but you are legally owning the source- jaki jest sens niezgody?
Dipan Mehta
1
@DipanMehta: Zgadzam się z użytkownikiem 606723; a ostatnia edycja nie rozwiązała problemu. Problem polega na tym, że „[...] alternatywnie możesz powiedzieć im, że klient będzie musiał zapłacić mniej, ale jesteś prawnie właścicielem źródła. Możesz dostarczyć / zainstalować wersję binarną oprogramowania dla klientów [...]” brzmi tak, jakbyś nie mógł dać klientom kodu źródłowego, jeśli nadal chcesz go posiadać. Faktem jest, że nadal możesz udzielać im licencji na kod źródłowy w określonych celach, bez rezygnacji z własności i / lub zrzeczenia się wszystkich praw.
ruakh 30.01.12
-1

Zawsze możesz używać w swoim kodzie innych bibliotek, na przykład open source. Oczywiście klient nie będzie miał praw autorskich do nich. W szczególnym przypadku możesz użyć bibliotek napisanych przez ciebie. Klient płaci za dostosowanie - tę część, która jest zaprojektowana dla niego i jego potrzeb biznesowych. Wszystko, co nie jest specyficzne dla użytkownika i może być używane w wielu projektach, może być Twoją własną biblioteką. Nie widzę tam żadnego problemu.

Problemem może być ponowne użycie interfejsu lub logiki biznesowej, a nawet odsprzedanie tego samego projektu innej osobie. Kod narzędziowy jest czymś, czego klient zwykle nie jest świadomy i też go nie obchodzi.

Żeglarz naddunajski
źródło
1
Oczywiście wszystko to musiałoby zostać ujawnione klientowi.
user606723,
1
Nie zrobiłby tego. Licencje takie jak Apache lub MIT pozwalają na wykorzystanie komercyjne.
Danubian Sailor
-1

Inne odpowiedzi upraszczają sprawy. Nie chcę mieć pełnej odpowiedzi, tylko wskazać kilka rzeczy.

  1. Możesz dać prawa lub możesz dać prawa wyłączne.
  2. Jeśli przyznasz prawa wyłączne, możesz zachować to w ramach umowy, zachowujesz prawa niewyłączne. (Pozwoli to na osobiste użycie kodu / programu)
  3. Nawet jeśli nie dostarczysz wyłącznych praw, nadal możesz dostarczyć niewyłączne prawa do używania, modyfikowania i rozpowszechniania kodu źródłowego. Obie nie wykluczają się wzajemnie.
użytkownik606723
źródło
-1 twoja odpowiedź nie obejmuje ŻADNEGO punktu, o którym inni wcześniej nie mówili!
Dipan Mehta