클라이언트가 소스 코드를 원하지만 다른 프로젝트와 재사용하는 많은 공유 코드가 포함되어 있습니다.


96

개발 된 응용 프로그램 이진으로 소스 코드를 제공하려는 클라이언트가 있습니다. 그들은 원래 소스 코드에 대해 아무 말도하지 않았지만 최근에 필요하다고 말했습니다. 계약이 완료되지 않았습니다. 그들은 그 일에 동의했고, 서명하지 않았으며,이 조항으로 돌아 왔습니다.

문제는 : 수년에 걸쳐 만든 코드베이스를 가지고 있으며 필자가 작성한 대부분의 응용 프로그램의 템플릿으로 사용되었습니다. 프로젝트 범위보다 훨씬 큽니다.

또한 제품에 사용하려고하므로 비교적 작은 프로젝트에 제공하고 싶지 않습니다.

이것이 이것이이 업계에서 처음 일어난 것은 아니라고 생각합니다. 이 문제를 피하는 가장 좋은 방법은 무엇입니까? 공유 라이브러리와 같은 것들이 도움이 될 것이라고 생각합니다.


18
그들은 무엇을 위해 필요합니까? 그들은 당신이 사업을 외출 할 경우에 대비해 코드를 갖고 싶어 할 것입니다. 허용 된 사용을 제한하는 라이센스를 추가 할 수 있습니다. 한때 회사는 변호사 회사와 함께 그러한 사건에 대한 보안으로 소스 코드를 입금했습니다 (오른쪽 단어?).
thorsten müller

33
맞춤형 소프트웨어는 소스 코드와 함께 제공되어야합니다. 그렇지 않으면 소매 제품입니다. 나중에 당신 / 당신의 사업에 어떤 일이 발생하는 경우 그들이 냉동 제품이 필요하다고 생각하지 않습니다. 그러나 그에 따라 요금을 청구하십시오. 또한 라이브러리 코드를 컴파일 된 라이브러리 (언어에서 지원하는 경우)에 넣어 소프트웨어를 수정하고 컴파일 할 수는 있지만 라이브러리 자체를 쉽게 재사용 할 수는 없습니다.
CodeAngry

14
@CodeAngry "해야"? 아닙니다. 적절한 금액을 지불 한 경우에만 가능합니다.
o0 '.

32
@CodeAngry 아뇨. 달리 동의하지 않는 한 귀하의
책임입니다

46
몇 년 동안 프레임 워크에 썼더라도, 당신 외에는 아무 가치가 없습니다. 아무리 생각하더라도 문서화되지 않고 지원되지 않으며 일반적으로 알려지지 않은 프레임 워크를 기반으로 새 응용 프로그램을 만드는 사람은 없습니다. 그들에게 완전한 소스 코드를 제공하고, 응용 프로그램의 비 독점 부분에 대한 저작권을 유지하고, 행복한 고객을 확보하십시오.
Guntram Blohm

답변:


137

가장 먼저 염두에 두어야 할 것은 소스 코드는 바이너리와 별개의 가치를 가진다는 것입니다. 소스 코드 전달이 필요한 계약서 서명을 거부하거나 소스 코드 전달에 대한 추가 지불을 요구하는 것이 합리적입니다. 계약은 양방향 문서입니다. 상대방이 "대기업"이고 "항상이 일을하기"때문에 필요한 것을 지시하지 않도록하십시오. 먼저, 무엇 기꺼이 전달하고 보상 원하는지 결정하십시오 . 그런 다음 계약을 변호사에게 가져 가서 변경해야 할 사항을 해결하십시오. 그런 다음 협상합니다.

계약을 시작할 때 많은 젊은이들이하는 일을하지 마십시오. 그들은 경험이 많고 당신이하지 않는 것처럼 보이기 때문에 서명하지 마십시오. 그것은 찢어지는 좋은 방법입니다.

그들이 소스를 원하는 이유 를 살펴보십시오 . 그들은 나중에 다른 개발자를 사용할 수있는 옵션을 원할 수도 있습니다. 또는 버스에 부딪 칠 우려가 있기 때문에 그것을 원할 수도 있습니다. 갑자기 개선 할 수없는 바이너리가 남게됩니다. 이 두 번째 경우에는 소프트웨어 코드 에스크로 서비스를 살펴보십시오 . 이러한 서비스는 파산하거나 소프트웨어를 유지 관리 할 수없는 경우를 위해 소스 코드를 보유합니다. 이렇게하면 다른 고객에게 서비스를 제공하기 위해 코드를 독점적으로 유지하려는 욕구와 나쁜 일이 발생할 경우 유지 관리 할 수없는 바이너리 세트로 가방을 들고 있지 않은 욕구를 모두 충족시킬 수 있습니다.


17
소프트웨어 코드 에스크로 서비스가 파산되면 어떻게됩니까?
user11153

21
그런 다음 코드 소유자는 여전히 주변에 있으며 코드를 다른 에스크로 서비스에 전달할 수 있습니다. 이 서비스는 단일 실패 지점을 제거하기위한 것입니다.
Alexander

17
소프트웨어 코드 에스크로 서비스는 소프트웨어 코드 에스크로 서비스를 사용합니까?
FreeAsInBeer

29
@FreeAsInBeer : 아니요. 소프트웨어 코드 에스크로 에스크로 서비스를 사용합니다. 명백하게.
nneonneo

@Alexander, 재중 개가 계약 상 의무 인 경우에만. 그렇지 않으면 개발자가 두 번째 에스크로를 다시 청구합니다.
Pacerier

67

"아니오" 는 완벽하게 훌륭한 답변입니다. 실제로 이해할 수없는 매우 유용한 답변입니다.

"안녕하세요, 우리는 소스 코드도 무료로 원한다고 갑자기 결정했습니다."
"안녕."

그렇게 어렵지는 않습니다.

그들은 돈을 터무니없는 금액을 지불하고자하는 경우, 을 통해 그들이 무엇을 이미 당신을 빚을, 당신은 그들에게 실제로 필요한 경우에만 소스를 포함 응용 프로그램, 그들은 절대적으로 얻을 관리 복용의 손질 버전 줄 수도 -Exclusive 권한을.

단순한 것을 복잡하게하지 마십시오.


훌륭하고 간결한 답변.
티벳의 바다 해안

26

귀하의 질문은 "이 문제를 피하는 가장 좋은 방법은 무엇입니까?"입니다. 그러나 무엇이 문제라고 생각하십니까? 다른 사람들은 그것이 협상의 문제라는 것을 올바르게 지적했습니다. 모든 것이 가치가 있으며, 고객이 요청한 것을 제공하는 가격을 책정합니다.

그러나 코드 제공의 의미 를 신중하게 고려하고 계약서에 작성해야합니다 . 클라이언트가 볼 수 있도록하는 것입니까? 클라이언트가 수정할 수 있습니까? 특히, 수년 동안 생성 한 코드베이스에 대한 독점적 권한을 고객에게 부여 하고 나중에 다시는 다시는 사용할 수 없도록 대부분의 응용 프로그램의 템플릿으로 사용 하시겠습니까?

계약서에 코드를 사용할 권한이있는 사람과 방법을 명시 적으로 명시해야합니다.


19

모든 소스 코드에는 라이센스가 필요합니다. 소스 코드를 양도하면 회사는 소스 코드를 사용하여 라이센스가 허용하는 모든 것을 수행 할 수 있으며 그 이외의 모든 것은 저작권을 침해 할 수 있습니다. 따라서 소스 코드를 양도하는 경우 소스 코드의 독점 저작권 및 소스 코드 사용이 정확히 허용된다는 계약을 체결하게됩니다. 물론 소스 코드 + 라이센스는 무료로 제공되지 않습니다.

큰 회사는 저작권을 침해 할 가능성이 적습니다. 잡히면 재정적 피해를 제외하고는 명성이 크게 손상 될 수 있기 때문입니다. 반면에 향후 문제가 해결 될 것이라는 보장없이 소프트웨어에 대한 대가를 지불하는 것은 고객에게 용납되지 않을 수 있습니다.


33
그러나 소스 코드 오용 탐지는 특히 검색하지 않을 경우 엄청나게 어렵다고 생각합니다. 맹목적으로 라이센스를 믿지 마십시오. 어떤 사람들에게는 단지 종이 일뿐입니다.
o0 '.

1
그러나 @Lohoris는 응용 프로그램이 코드를 사용하고 있다고 의심되는 경우 바이너리 일뿐인지 쉽게 알 수 있습니다. 기본 리버스 엔지니어링 기술 만 있으면됩니다.
rev

6
-1 "주요 회사"주장에 대한 증거가 없다고 생각하기 때문에 추측 일뿐입니다.
djechlin

@Lohoris : 만약 그렇다면, 당신에게 어떤 피해가 있습니까? 가장 좋은 경우 :이 포스터는 다른 회사에 서비스를 제공하고 있으며 자신이 자랑스럽게 여기는 라이브러리를 가지고 있음을 알게됩니다. 주요 월급 날!
gnasher729

13

이전에는 보통 MIT 라이센스하에 소스 코드 (라이브러리 및 모두)를 클라이언트에 제공했습니다. 라이브러리가 잘 정리되어 있으면 해당 특정 클라이언트에 필요한 파일 / 리소스 만 제공하고 그 이상은 제공하지 않습니다. 나는 그것이 저와 고객 모두에게 공평하다고 생각합니다. 그러나 계약에 따라 특정 고객을 위해 작성된 새 코드 문제는 항상 라이브러리의 일부가 아니 었습니다. 그래서 프로젝트를 시작하기 전에 고객과 문제를 논의하기 시작했습니다. 일부 고객은 해당 코드의 소유권을 원했지만 일부 고객은 그렇지 않습니다 (저는 항상 사람들에게 높은 가격과 같은 부정적인 인센티브를주었습니다). 그러나 실제로 일부 고객에게는 토론이 매우 혼란 스러웠으며 때로는 프로젝트 승인을 받기 위해 3 명 또는 5 명의 다른 사람 (변호사 포함)에게 이야기했습니다.

이제 모든 라이브러리는 항상 개발에 사용하는 사용자 지정 프레임 워크의 일부이며이 프레임 워크를 사용하지만 프레임 워크는 다른 라이센스를 가진 다른 제품이라고 클라이언트에 설명합니다. (때로는 "프레임 워크"가 이해하기 어려울 수 있으므로 설명 할 때 "소프트웨어 구성 요소"를 사용합니다). 나는 항상 MIT 라이센스하에 사용되는 파일의 코드를 제공하고 (모든 코드가 잘 구성되어 있기 때문에) 저수준 코드 (새로운 것조차도)는 프레임 워크에 남아 있습니다 (나와 그들에 의해 재사용되어야 함). 그들의 응용 프로그램에 대해서만 그들 자신의 용어를 유지하는 것입니다 (이 코드는 아마도 다른 프로젝트에서 재사용하는 데 쓸모가 없을 것입니다). 물론 모든 것은 계약서에 올바르게 작성되었습니다. 나는 이것이 공평하다고 생각합니다.

핵심은 "이 구성 요소는 다른 제품"이며 시작하기 전에 모두 계약서에 기록됩니다.

예, 공유 라이브러리 사용에 대한 아이디어가 옳을 수도 있습니다. 그러나 위험을 줄일 수있는 라이센스 하에서 사용한 소스 코드를 제공하지 않는 이유는 무엇입니까? 나는 그것이 공평하다고 생각합니다.


2
나는 이것이 좋은 대답이라고 생각합니다. OP는 분명히 롤오버해서는 안되지만 반면에 사용자 정의 프로젝트의 소스 코드를 요구하는 것은 상당히 합리적입니다 (그리고 계약 프로젝트가 충분히 진행되어 누군가가 구출해야 함을 보았습니다) 그렇지 않으면 아마도 내가 찾고 있다면 소스 제공을 거부 한 계약자를 고려하지 않을 것입니다).
케이시

11

이것을 다루는 방법은 협상하는 것입니다.

그들이 소스 코드를 원한다면, 그 비용을 지불 할 준비가되어 있어야하고, 얼마를해야하는지 결정하는 것은 당신에게 달려 있습니다.

반면에 ... 그들이 원하는 것을 지불 할 준비가되지 않았다면, 그들은 "다른 곳에서 그들의 사업을하기로"결정할 수 있습니다.

비즈니스 세계에 오신 것을 환영합니다 :-)


그리고 장래에 잠재 고객과 대화 할 때는 모든 사람의 시간을 낭비하지 않도록이 문제를 미리 언급하십시오.


또한 여러분이하고있는 일은 오픈 소스 개발자와 오픈 소스 솔루션을 찾고있는 (교육을받은) 고객을위한 혐오입니다.


5
첫째, "원하는 것"보다 라이센스에 대한 가능성이 훨씬 더 많습니다. 둘째, 회사 대신 "이를 충분히 일찍 시작하지 않는다"는 OP를 비난하는 것은 매우 불공평하다고 생각합니다. 이것은 약간 편집되었습니다. 셋째, 공개 소스 개발자가 비공개 소스 프로젝트에서 작업하려는 경우 왜 혐오에 직면하는지 알 수 없습니다. 넷째, 회사가 오픈 소스 솔루션을 찾고 있다면 목적을 위해 소스 코드의 개인 사본이 아니라이를 요구할 것입니다.
djechlin

1
@ djechlin-1) 나는 OP를 비난하지 않았다. 그러나 만약 그가 그 시점에서 협상 할 준비가되지 않았다면, 그는 >> 이전에 제기해야한다. 맞춤형 소프트웨어에 대한 지식이 풍부한 고객에게는 분명하고 합리적인 요구 사항입니다. 2) "아나 테마"는 OP가하고있는 일이다. 소스 코드를 유지하려고 노력한다. 3) 고객이 오픈 소스를 요구했다는 증거는 없지만 (아마도, 실제로 이점을 이해하지 못할 수도 있음) >> do << 소스 코드를 원한다는 것이 분명합니다. 이는 OSS의 주요 이점 중 하나입니다. .
Stephen C

3
이 의견은 제자리에 있습니다. 소프트웨어 개발자로서 모든 고객은 소프트웨어를 사용하고 수정할 수있는 독점 라이센스를 취득하고 소스 코드를 제공합니다. 또한 본인은 다른 프로젝트에서 작성한 코드를 재사용하고이 프로젝트에서 다른 프로젝트의 코드를 재사용 할 권리를 보유합니다. 이것은 그들에게 돈과 시간을 절약 해줍니다. 아무도 그것에 대해 문제가 없었습니다.
dotancohen

1
@dotancohen : "비 독점적"라이센스를 받기를 바랍니다. 독점 라이센스가있는 경우 다음 고객의 코드를 재사용 할 수 없습니다. 동일한 코드에 대해 "독점"라이센스를 가진 두 명의 고객을 가질 수 없습니다.
gnasher729

라이센스는 코드를 사용 및 수정하지만 공유, 판매 또는 배포 할 수는 없습니다. VPS에서 주로 실행되는 PHP이기 때문에 코드가 '누수'된 경우 내가 할 수 있거나 할 일이별로 없습니다. 나는 내가 일하는 분야에서 그다지 중요하지 않다.
dotancohen

5

계약을 체결하기로 이미 계약 한 것에 동의하고 서로 다른 고객과 상호 호환되지 않는 조건에 동의 할 수 있다는 점에서 너무 늦을 수 있습니다.

고객에게 소스 코드를 제공 할 수있는 두 가지 방법이 있습니다. 저작권 및 라이센스의 소유권.

일부 고객은 소스 코드의 소유권을 원할 것입니다. 즉, 프로세스가 끝나면 돈을 지불하고 대신 코드를 작성하여 저작권을 부여합니다. 그 이유 중 하나는 소스 코드에서 지적 재산권의 상당한 잠재력을보고 회사 대차 대조표에서이를 가치있게 평가할 수 있기 때문입니다. 이 시나리오에서는 고객에게이 권한을 부여하는 라이센스를 얻지 않는 한 다른 프로젝트에 해당 소스 코드를 계속 사용할 수있는 권한이 없습니다.

고객이 직접 '기성품'제품을 구매하는 경우 소스 코드의 소유권이 아니라 소프트웨어를 사용할 수있는 라이센스를받을 것으로 예상됩니다. 그들은 다른 많은 조직에 동일한 (또는 유사한) 소프트웨어를 판매하고 있으며 더 넓은 고객 기반으로 인해 구매 비용이 더 낮아질 것으로 기대하고 있습니다.

그러나이 질문의 상황은 두 가지의 혼란입니다.

여기 내가 할 수있는 일이 있습니다. 고객에게 공유 코드를 사용 (및 수정) 할 수있는 라이센스를 부여합니다. 고객이 퀴즈를 내린 경우이 코드는 이미 여러 프로젝트에서 사용한 공유 코드이며이 작업을 계속 사용함에 따라 향후 작업에 대한 현재 입찰가가 설정되어 있습니다. 이로 인해 귀하의 고객에게이 프로젝트에 대한 시간이 줄어들었고 결과적으로 더 낮은 가격을 지불했음을 지적하십시오. 프로젝트에서 사용하는 다른 공유 코드 라이브러리와 마찬가지로이 코드를 사용하고 다른 개발 팀이이 라이브러리 및이 라이브러리를 기반으로하는 다른 프로젝트를 개발할 수있는 라이센스가 있습니다. 그러나 모든 코드의 소유권을 원한다면 교체를 기꺼이 만들지 만 추가 요금이 부과됩니다.

이미 커밋 한 내용에 따라 무료로 대체 기능을 작성하거나 소스 코드를 제공해야 할 수 있습니다.

다른 유형의 라이브러리가 있다는 것을 기억하십시오. C ++의 표준 템플릿 라이브러리는 소스 코드 수준에 포함 된 라이브러리의 좋은 예이며 일반적인 코드 사용 방법과 매우 유사한 프로젝트 실행 파일로 컴파일됩니다.


1
에서 이 댓글 "계약이 완료되지 않은, 그들은 서명하지 않았다 동의 한 후 다시이 절을했다." -이틀 전만해도 협상이 아직 진행 중이라고 가정하겠습니다.

0

제공하는 소프트웨어와 함께 타사를 사용하는 경우이 타사의 소스 코드가 없을 수 있습니다. 귀하는 여전히 타사 바이너리가있는 회사에 소프트웨어를 제공 할 것입니다. 모든 프로젝트에서 공유하는 프레임 워크로 개발 한 코드는 사용자가 소유하더라도 제 3 자와 같습니다. 이 경우 회사는 프레임 워크의 바이너리와 타사의 위험이 동일합니다. 이 경우 회사에 프레임 워크의 소스 코드를 제공해야하는 이유는 무엇입니까? 라이센스 계약과 함께 좋은 API 문서를 제공 할 수 있습니다. 코드에 업계에 혁명을 일으킬 다음 큰 것이 포함되어 있다면 또 다른 이야기이지만 일반적으로 그렇지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.