クライアントはソースコードを必要としますが、他のプロジェクトで再利用する多くの共有コードが含まれています


96

開発したアプリケーションバイナリでソースコードを配信したいクライアントがいます。元々はソースコードについては何も言わなかったが、最近は必要だと言った。契約は確定していません。彼らは作業に同意し、署名せずに、この条項とともに戻ってきました。

問題は、私が長年にわたって作成したコードベースがあり、作成するほとんどのアプリケーションのテンプレートとして使用していることです。プロジェクトの範囲よりもはるかに大きい。

また、製品に使用するつもりなので、比較的小さなプロジェクトには提供したくありません。

この業界でこれが起こったのはこれが初めてではないと思います。この問題を回避する最良の方法は何ですか?共有ライブラリのようなものが役立つと思います。


18
彼らは何のためにそれを必要としますか?おそらく、彼らはあなたが廃業した場合にのみコードを持っていることを望んでいるでしょう。許可された使用を制限するライセンスを追加できます。かつて私が働いていた会社が、そのような場合のセキュリティとして弁護士会社にソースコードを預けていました(正しい言葉ですか?)。
トールステンミュラー

33
カスタムソフトウェアはソースコードで提供する必要があります。それ以外の場合は、小売製品です。後であなた/あなたのビジネスに何かが起こった場合に備えて、彼らは冷凍製品を必要とは思わない。しかし、それに応じて充電してください。また、ライブラリコードをコンパイル済みライブラリ(言語でサポートされている場合)に配置して、ソフトウェアを変更、コンパイルできるが、ライブラリ自体を簡単に再利用できないようにすることを検討してください。
CodeAngry

14
@CodeAngryは「すべき」ですか?いいえ。正しい金額を支払った場合のみです。
o0 '。

32
@CodeAngryいや。特に同意しない限り、それはあなたのものです…
o0 '。

46
それに直面しましょう-フレームワークに何年を費やしても、あなた以外の誰にとっても価値はありません。あなたがどんなに良いと思うかに関係なく、誰も文書化されておらず、サポートされていない、一般に未知のフレームワークに基づいて新しいアプリケーションを作成しません。完全なソースコードを提供し、アプリケーションの非カスタマイズ部分の著作権を保持していることを確認し、顧客を満足させます。
ガントラムBlohm

回答:


137

最初に留意すべきことは、ソースコードにはバイナリとは別の価値があるということです。ソースコードの配信を必要とする契約への署名を拒否するか、ソースコードの配信に対する追加の支払いを要求することは完全に合理的です。契約は双方向の文書です。彼らが「大企業」であり「常にこれを行う」という理由だけで、他の部分に何が必要かを指示させないでください。最初に、何を提供し、どのように報酬受け取りたいか決定します。その後、弁護士と契約を結び、何を変える必要があるかを考えます。次に、交渉します。

多くの若者が契約を開始するときに行うことをしないでください。彼らは多くの経験を持っているようで、あなたはそうではないので、ただ署名しないでください。それは食い物にする良い方法です。

ソースが必要な理由を調べてください。後で別の開発者を使用するオプションを選択できるように、彼らはそれを望むかもしれません。または、彼らはあなたがバスにぶつかるのを恐れているという理由だけでそれを望み、突然彼らは改善できないバイナリを残されるでしょう。この2番目の場合は、ソフトウェアコードエスクローサービスを調べてください。これらのサービスは、倒産し​​た場合やソフトウェアを維持できない場合に備えて、ソースコードを保持しています。これは、他の顧客にサービスを提供するためにコードを専有的に保持したいという欲求と、何か悪いことが起こった場合に維持できないバイナリのセットをバッグに残さないという欲求の両方を満たすことができます。


17
ソフトウェアコードエスクローサービスが破産した場合はどうなりますか?
user11153

21
その後、コードの所有者は-できれば-まだ存在し、別のエスクローサービスにコードを配信できます。このサービスは、単一障害点を除去することを目的としています。
アレクサンダー

17
ソフトウェアコードエスクローサービスはソフトウェアコードエスクローサービスを使用しますか?
FreeAsInBeer

29
@FreeAsInBeer:いいえ、彼らはソフトウェアコードエスクローエスクローサービスを使用します。明らかに。
nneonneo

@Alexander、再寄託が契約上の義務である場合のみ。そうでない場合、開発者は2番目のエスクローに対して再度請求します。
パセリエ

67

「いいえ」は完全にすばらしい答えです。実際、それは信じられないほど有用な答えであり、なぜか私には理解できず、非常に過小評価されています。

「こんにちは、ソースコードも無料で欲しいと突然決定しました。」
「こんにちは、いいえ」

それほど難しくありません、本当に。

彼らはお金のとんでもない金額を支払うことを希望する場合はその後、上で彼らは何すでにあなたを借りて、あなたは彼らが実際に必要とする唯一の情報源が含まれ、アプリケーションのトリミングバージョンを与え、彼らは絶対に入手ケア取るかもしれない -exclusive権利を。

単純なことを複雑にしないでください。


素晴らしく簡潔な答え。
チベットの海岸

26

あなたの質問は、「この問題を回避する最良の方法は何ですか?」です。しかし、あなたは問題として何を見ていますか?他の人たちは、それは交渉の問題だと正しく指摘しています。すべてには価値があり、クライアントに要求されたものを提供する代償を与えるのはあなた次第です。

ただし、コードを提供することの意味を慎重に検討し、契約に書き込む必要もあります。クライアントがそれを見ることができるというだけですか?クライアントはそれを変更できますか?特に、長年にわたって作成したコードベースにクライアントに排他的権利を付与し、ほとんどのアプリケーションのテンプレートとして使用して、今後自分で使用できないようにすることを検討しますか?

契約には、コードを使用する権利を誰がどのような方法で持っているかを明示する必要があります。


19

ソースコードにはライセンスが必要であることを忘れないでください。ソースコードを引き渡すと、会社はソースコードを使用して、ライセンスで許可されているすべてのことを実行でき、それを超えると著作権侵害になります。したがって、ソースコードを引き継ぐ場合、ソースコードの独占的な著作権を保持し、ソースコードの使用が正確に許可されていることを完全に明確にする契約があります。そしてもちろん、ソースコードとライセンスは無料では提供されません。

大手企業があなたの著作権を侵害する可能性は低いでしょう。なぜなら、逮捕されると、金銭的損害は別として、彼らの評判に大きな損害を与えるからです。一方、問題を将来修正できるという保証のないソフトウェアの支払いは、クライアントにとって受け入れられない可能性があります。


33
ただし、ソースコードの不正使用を検出することは、特に検索していない場合は特に難しいと考えています。ライセンスを盲目的に信用しないでください。一部の人にとっては、それは単なる紙です。
o0 '。

1
しかし、@ Lohorisは、アプリケーションがコードを使用している疑いがある場合、それが単なるバイナリであっても、それを伝えるのは本当に簡単です。基本的なリバースエンジニアリングスキルが必要です。
REV

6
-1私はあなたの「大企業...」の主張には証拠がないと思うので、それは単なる推測です。
djechlin

@Lohoris:それが起こった場合、あなたへの損害は何ですか?最良のケース:ポスターは彼のサービスを他の会社に提供し、彼らが彼がとても誇りに思っている図書館をすでに持っているとわかります。メジャー給料日!
gnasher729

13

以前、私は通常、クライアントにMITライセンスの下でソースコード(ライブラリとすべて)を提供しました。ライブラリが適切に編成されている場合、その特定のクライアントに必要なファイル/リソースのみを提供しますが、それ以上は提供しません。それは私にとってもクライアントにとっても公平だと思います。しかし、以前はライブラリの一部ではなかった契約の下で、特定のクライアント向けに記述された新しいコードの問題が常にありました。そこで、プロジェクトを開始する前に、クライアントと問題について話し合いました。一部のクライアントはそのコードの所有権を望んでいましたが、そうでない人もいました(私は常に負のインセンティブを与えました。しかし、実際には一部のクライアントにとって、議論は非常に混乱し、時にはプロジェクトを承認するために3人または5人の異なる人々(弁護士を含む)に話しかけることになりました。

だから今、私のすべてのライブラリは、私が常に開発に使用するカスタムフレームワークの一部であり、このフレームワークを使用するが、フレームワークは異なるライセンスを持つ異なる製品であることをクライアントに説明します。(「フレームワーク」が知られていない可能性があるため、説明するときに「ソフトウェアコンポーネント」を使用することがあります)。私は常にMITライセンスの下で使用されたファイルのコードを提供します(すべてのコードがうまく編成されているため)低レベルのコード(新しいものも)はフレームワークに残っています(私と彼らによって再利用されます)が、関連するコード彼らのアプリケーションに対する唯一の目的は、彼らが彼ら自身の条件の下に保つことです(そのコードは私が別のプロジェクトで再利用するためにほとんど役に立たないでしょう)。もちろん、それはすべて契約に適切に書かれています。これも公平だと思います。

重要なのは、「これらのコンポーネントは異なる製品」であり、すべてが開始前に契約書に書かれていることです。

そのため、共有ライブラリの使用についてのあなたの考えは正しいかもしれません。しかし、リスクを軽減するライセンスの下で、使用したソースコードを提供してみませんか。それは公平だと思います。


2
これは良い答えだと思います。OPは明らかにロールオーバーするべきではありませんが、一方で、カスタムプロジェクトのソースコードを要求することは非常に合理的です(そして十分な契約プロジェクトが完全にレールから外れており、誰かに助けられる必要があるのを見てきましたそれ以外の場合、私が探しているのであれば、ソースを提供することを拒否した請負業者はおそらく考えないでしょう)。
ケーシー

11

これに対処する方法は、交渉することです。

もし彼らがソースコードが欲しいなら、彼らはそれを支払う準備ができているべきであり、それがいくらであるべきかを決めるのはあなた次第です。

一方、...彼らがあなたが望むものを支払う準備ができていないならば、彼らは「彼らのビジネスを他の場所に連れて行く」ことを決めるかもしれません。

ビジネスの世界へようこそ:-)


また、将来見込み客と話をするときは、早い段階で必ずこの問題に言及してください。全員の時間を無駄にしないためです。


また、あなたがやっていることは、オープンソース開発者にとって、そしてオープンソースソリューションを探している(教育を受けた)顧客にとって嫌悪感があるということも注目に値します。


5
まず、ライセンスには「欲しい」よりもはるかに多くの可能性があります。第二に、会社の代わりに「これを早めに育てない」ことをOPのせいにするのは非常に不公平だと思います。これは少し編集されています。第三に、オープンソースの開発者がクローズドソースのプロジェクトに取り組むことを希望する場合、なぜ嫌悪感に直面するのかわかりません。第4に、会社がオープンソースソリューションを探している場合、その目的のためのソースコードのプライベートコピーではなく、それを求めています。
-djechlin

1
@djechlin-1)OPを責めなかった。しかし、もし彼がその点について交渉する準備ができていないなら...そして彼はそれをもっと早く持ち出すべきだったはずです。これは、特注ソフトウェアの知識豊富な顧客にとっては明白かつ合理的な要件です。2)「アナセマ」は、OPが行っていることです...ソースコードを保持しようとしています。3)一方、顧客がオープンソースを要求したという兆候はありません(おそらく、彼らの利点を本当に理解していないでしょう)。 。
スティーブンC

3
このコメントはスポットです。私自身ソフトウェア開発者として、すべてのクライアントはソフトウェアを使用および変更するための独占ライセンスを取得しており、ソースコードを提供しています。それに加えて、他のプロジェクトで作成したコードを再利用する権利、およびこのプロジェクトの他のプロジェクトのコードを再利用する権利を保持します。これは彼らにお金と私たちの両方の時間を節約します。誰もそれに関して問題を抱えたことはありません。
-dotancohen

1
@dotancohen:彼らが「非独占的」ライセンスを取得することを願っています。排他的なライセンスを持っている場合、次の顧客にコードを再利用することはできません。同じコードの「排他的」ライセンスを持つ2人の顧客を持つことはできません。
gnasher729

ライセンスにより、コードの使用および変更は許可されますが、コードの共有、販売、または配布は許可されません。ほとんどがPHPをVPSで実行しているため、コードが「リーク」した場合にできることはほとんどありません。私が働いている分野では大したことではないと思います。
dotancohen15年

5

これは、あなたがすでに契約上これを行うことに同意している可能性があり、異なる顧客と相互に互換性のない条件に同意している可能性があるため、手遅れかもしれません。

顧客にソースコードを提供する方法は2つあります。著作権の所有権とライセンス。

一部のお客様は、ソースコードの所有権を求めます。これは、プロセスの最後に彼らがあなたにお金を支払うことを意味し、その代わりにあなたが彼らのために作成したコードの著作権著作権を彼らに与えるでしょう。この理由の1つは、ソースコードに知的財産の重要な可能性があり、会社のバランスシートでこれを評価したい場合です。このシナリオでは、この資格を付与した顧客からライセンスも取得しない限り、他のプロジェクトでそのソースコードを継続して使用する資格はありません。

顧客が自分で「既製」の製品を購入している場合、彼らはソースコードの所有権ではなく、ソフトウェアを使用するためのライセンスを受け取ることを期待するでしょう。彼らは、あなたが同じ(または類似の)ソフトウェアを他の多くの組織に販売していること、そして顧客ベースが広いために購入コストが安くなることを期待しているはずです。

ただし、この質問の状況は、この2つのごまかしです。

これが私にできることです。共有コードを使用(および変更)するライセンスを顧客に付与します。顧客からクイズされた場合、これは既に複数のプロジェクトで使用している共有コードであり、この作業を継続して使用することに基づいた将来の作業のために現在の入札単価が設定されていることを指摘します。これにより、このプロジェクトでの顧客の時間は短縮され、結果として顧客は低価格で支払ったことになります。プロジェクトで使用されるコードの他の共有ライブラリと同様に、このコードを使用し、他の開発チームがこれを開発するためのライセンスと、このライブラリに基づく他のプロジェクトを許可するライセンスがあります。ただし、すべてのコードの所有権を希望する場合は、代替品を作成しても構いませんが、これは追加料金になります。

すでにコミットした内容によっては、代替機能を無料で作成するか、ソースコードを提供する必要があります。

ライブラリにはさまざまな種類があることを忘れないでください。C ++の標準テンプレートライブラリは、ソースコードレベルに含まれるライブラリの良い例であり、一般的なコードの使用方法と非常によく似たプロジェクト実行可能ファイルにコンパイルされます。


1
このコメントから:「契約は最終決定されず、彼らは同意し、署名せず、この条項で戻ってきました。」-わずか2日前のように、交渉はまだ続いていると思います。

0

提供するソフトウェアでサードパーティを使用する場合、このサードパーティのソースコードがない可能性があります。サードパーティのバイナリを使用して、引き続きソフトウェアを会社に配信します。すべてのプロジェクトで共有されるフレームワークとして開発したコードは、たとえ所有者であっても、サードパーティとまったく同じです。この場合、会社は、フレームワークのバイナリについて、サードパーティとまったく同じリスクを抱えています。この場合、フレームワークのソースコードを会社に提供するのはなぜですか。あなたは彼女にライセンス契約とそのAPIドキュメントを提供できます。コードに業界に革命をもたらす次の大きなものが含まれている場合、それは別の話ですが、一般的にはそうではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.