Der Client möchte Quellcode, aber er enthält viel gemeinsam genutzten Code, den ich für andere Projekte wiederverwende


96

Ich habe einen Client, der mir den Quellcode mit einer entwickelten Anwendungsbinärdatei zur Verfügung stellen soll. Sie sagten ursprünglich nichts über den Quellcode, aber sie sagten kürzlich, dass sie ihn brauchen. Der Vertrag ist nicht abgeschlossen. Sie stimmten der Arbeit zu, unterschrieben nicht und kamen dann mit dieser Klausel zurück.

Das Problem ist: Ich habe eine Codebasis, die ich im Laufe der Jahre erstellt und als Vorlage für die meisten Anwendungen verwendet habe, die ich schreibe. Es ist weitaus größer als der Umfang des Projekts.

Ich habe auch vor, es für ein Produkt zu verwenden, daher möchte ich es wirklich nicht für ein relativ kleines Projekt zur Verfügung stellen.

Ich vermute, dies ist nicht das erste Mal, dass dies in dieser Branche passiert ist. Was ist der beste Weg, um dieses Problem zu umgehen? Ich vermute, Dinge wie Shared Libraries könnten helfen.


18
Wofür brauchen sie es? Möglicherweise möchten sie den Code nur dann haben, wenn Sie nicht mehr im Geschäft sind. Möglicherweise können Sie Lizenzen hinzufügen, die die zulässige Nutzung einschränken. Einst hat eine Firma, bei der ich gearbeitet habe, den Quellcode als Sicherheit für einen solchen Fall bei einer Anwaltsfirma hinterlegt.
Thorsten Müller

33
Benutzerdefinierte Software sollte mit Quellcode geliefert werden. Ansonsten handelt es sich um ein Einzelhandelsprodukt. Ich glaube nicht, dass sie ein gefrorenes Produkt brauchen, falls etwas später mit Ihnen / Ihrem Unternehmen passiert. Laden Sie aber entsprechend auf. Ziehen Sie auch in Betracht, Ihren Bibliothekscode in eine kompilierte Bibliothek einzufügen (sofern dies von Ihrer Sprache unterstützt wird), damit diese die Software ändern, kompilieren, aber Ihre Bibliothek nicht ohne Weiteres selbst wiederverwenden kann.
CodeAngry

14
@CodeAngry "sollte"? Nur wenn sie den richtigen Geldbetrag bezahlen.
o0 '.

32
@CodeAngry Nein. Es gehört dir, wenn nichts anderes vereinbart ...
o0' .

46
Seien wir ehrlich - egal wie viele Jahre Sie in Ihr Framework investiert haben, es hat für niemanden außer für Sie einen Wert. Niemand wird eine neue Anwendung erstellen, die auf einem nicht dokumentierten, nicht unterstützten und im Allgemeinen unbekannten Framework basiert, unabhängig davon, wie gut Sie es finden. Geben Sie ihnen den vollständigen Quellcode, stellen Sie sicher, dass Sie das Urheberrecht an den nicht maßgeschneiderten Teilen Ihrer Anwendung behalten, und erhalten Sie einen zufriedenen Kunden.
Guntram Blohm

Antworten:


137

Das erste, was zu beachten ist, ist, dass der Quellcode einen Wert hat, der von den Binärdateien getrennt ist. Es ist absolut vernünftig, entweder die Unterzeichnung eines Vertrags zu verweigern, der die Lieferung von Quellcode erfordert, oder auf zusätzlichen Zahlungen für die Lieferung von Quellcode zu bestehen. Verträge sind wechselseitige Dokumente. Lassen Sie sich nicht vom anderen Teil vorschreiben, was erforderlich ist, nur weil es sich um "große Unternehmen" handelt, und "tun Sie dies die ganze Zeit". Entscheiden Sie zunächst , was Sie liefern möchten und wie Sie entschädigt werden möchten. Dann nehmen Sie ihren Vertrag zu einem Anwalt und erarbeiten Sie, was geändert werden muss. Dann verhandeln Sie.

Tun Sie nicht das, was viele junge Leute tun, wenn sie anfangen, Verträge abzuschließen. Unterschreiben Sie nicht nur, weil sie anscheinend viel Erfahrung haben und Sie nicht. Das ist ein guter Weg, um abgezockt zu werden.

Sehen Sie nach, warum sie die Quelle wollen. Möglicherweise möchten sie es, damit sie später die Möglichkeit haben, einen anderen Entwickler zu verwenden. Oder sie möchten es nur, weil sie befürchten, von einem Bus angefahren zu werden, und plötzlich stehen ihnen Binärdateien zur Verfügung, die sie nicht verbessern können. Wenn dies der zweite Fall ist, wenden Sie sich an einen Software Code Escrow Service . Diese Dienste enthalten den Quellcode für den Fall, dass Sie in Konkurs gehen oder die Software auf andere Weise nicht warten können. Dies kann sowohl Ihren Wunsch befriedigen, Ihren Code geschützt zu halten, um andere Kunden zu bedienen, als auch den Wunsch, nicht mit einem nicht zu wartenden Satz von Binärdateien in der Tasche zu bleiben, wenn etwas Schlimmes passiert.


17
Was passiert, wenn der Software Code Escrow Service in Konkurs geht?
user11153

21
Dann ist der Besitzer des Codes - hoffentlich - noch da und kann seinen Code an einen anderen Treuhanddienst liefern. Der Dienst soll den Single Point Of Failure entfernen.
Alexander

17
Verwenden Software Code Escrow Services Software Code Escrow Services?
FreeAsInBeer

29
@FreeAsInBeer: Nein, sie verwenden Software Code Escrow Escrow Services. Offensichtlich.
Nneonneo

@Alexander, Nur wenn die Rückübertragung eine vertragliche Verpflichtung darstellt. Andernfalls berechnet der Entwickler erneut eine Gebühr für die zweite Übertragungsurkunde.
Pacerier

67

"Nein" ist eine sehr gute Antwort, eigentlich ist es eine unglaublich nützliche Antwort, die aus irgendeinem Grund, den ich nicht verstehen kann, sehr unterschätzt wird.

"Hallo, wir haben plötzlich beschlossen, dass wir auch nur kostenlosen Quellcode wollen."
"Hi, nein."

Es ist nicht so schwer, wirklich.

Dann , wenn sie ungeheuerliche Geldbeträge zahlen wollen über , was sie bereits Sie schulden, können Sie ihnen eine getrimmte Version Ihrer Anwendung geben, die nur die Quellen enthält sie tatsächlich benötigen, und das Aufpassen sie unbedingt erhalten nicht -exclusive Rechte.

Komplizieren Sie keine einfachen Dinge.


Tolle, prägnante Antwort.
Sea Coast of Tibet

26

Ihre Frage lautet: "Wie kann dieses Problem am besten umgangen werden?" Aber was sehen Sie als Problem? Andere haben zu Recht darauf hingewiesen, dass es sich um eine Verhandlungssache handelt: Alles hat einen Wert, und es liegt an Ihnen, dem Kunden einen Preis für die Bereitstellung dessen zu geben, was gewünscht wird.

Sie müssen jedoch auch die Auswirkungen der Bereitstellung des Codes sorgfältig prüfen und in den Vertrag eintragen. Ist es nur so, dass der Kunde es sehen kann? Kann der Client das ändern? Würden Sie Ihrem Kunden insbesondere die exklusiven Rechte für die Codebasis einräumen, die Sie im Laufe der Jahre erstellt haben und die für die meisten Anwendungen als Vorlage verwendet wird, damit Sie sie in Zukunft nie wieder selbst verwenden können?

Sie müssen sicherstellen, dass im Vertrag ausdrücklich angegeben ist, wer zur Verwendung des Codes berechtigt ist und auf welche Weise.


19

Denken Sie daran, dass jeder Quellcode eine Lizenz erfordert. Wenn Sie den Quellcode übergeben, kann das Unternehmen den Quellcode verwenden, um alles zu tun, was die Lizenz erlaubt, und alles, was darüber hinaus geht, ist eine Urheberrechtsverletzung. Wenn Sie also den Quellcode übergeben, haben Sie einen Vertrag, der absolut klarstellt, dass Sie das ausschließliche Urheberrecht des Quellcodes behalten und genau wissen, welche Verwendungen des Quellcodes zulässig sind. Und natürlich wäre der Quellcode und die Lizenz nicht kostenlos.

Es ist unwahrscheinlich, dass ein größeres Unternehmen Ihr Urheberrecht verletzt, da das Fangen einen erheblichen Reputationsschaden mit Ausnahme finanzieller Schäden zur Folge hätte. Andererseits kann es für den Kunden inakzeptabel sein, für Software zu zahlen, ohne dass garantiert wird, dass Probleme in der Zukunft behoben werden können.


33
ABER denken Sie auch, dass das Erkennen von Quellcode-Missbrauch unglaublich schwierig ist, besonders wenn Sie nicht danach suchen. Vertraue nicht blindlings einer Lizenz: Für manche Leute ist es nur ein Stück Papier.
o0 '.

1
@Lohoris Wenn Sie jedoch den Verdacht haben, dass eine Anwendung Ihren Code verwendet, ist dies sehr einfach zu erkennen, unabhängig davon, ob es sich nur um eine Binärdatei handelt. Grundlegende Reverse Engineering-Kenntnisse sind alles, was Sie brauchen, um sicher zu sein.
rev

6
-1 Da ich glaube, dass es keine Beweise für Ihre Behauptung "Eine große Firma ..." gibt, ist es nur eine Vermutung.
Djechlin

@Lohoris: Wenn das passiert, was ist der Schaden für dich? Bester Fall: Das Plakat bietet seine Dienste einer anderen Firma an und stellt fest, dass sie bereits die Bibliothek haben, auf die er so stolz ist. Großer Zahltag!
gnasher729

13

Früher habe ich normalerweise den Quellcode (Bibliotheken und alle) unter einer MIT-Lizenz für den Client bereitgestellt. Wenn Ihre Bibliotheken gut organisiert sind, stellen Sie nur die benötigten Dateien / Ressourcen für diesen bestimmten Client zur Verfügung, mehr jedoch nicht. Ich denke, das ist fair für mich und den Kunden. Es gab jedoch immer die Ausgabe von neuem Code, der für diesen bestimmten Kunden unter Vertrag geschrieben wurde und zuvor nicht Teil der Bibliothek war. Deshalb habe ich begonnen, das Problem mit dem Kunden zu besprechen, bevor ich mit dem Projekt begonnen habe. Einige Kunden wollten den Code besitzen, andere nicht (ich gab immer negative Anreize, wie höhere Preise für diejenigen, die dies tun). Aber für einige Kunden war diese Diskussion wirklich sehr verwirrend und manchmal sprach ich für 3 oder 5 verschiedene Leute (einschließlich ihres Anwalts), nur um das Projekt zu genehmigen.

Jetzt sind alle meine Bibliotheken Teil eines benutzerdefinierten Frameworks, das ich immer für die Entwicklung verwende, und ich erkläre dem Kunden, dass ich dieses Framework verwenden werde, das Framework jedoch ein anderes Produkt mit einer anderen Lizenz ist. (Manchmal verwende ich "Softwarekomponenten", wenn ich erkläre, weil "Framework" für sie möglicherweise unbekannt ist.) Ich stelle immer den Code der verwendeten Dateien unter einer MIT-Lizenz zur Verfügung und (da der gesamte Code gut organisiert ist) bleibt der Low-Level-Code (auch der neue) im Framework (zur Wiederverwendung durch mich und durch sie), aber der Code, der sich darauf bezieht nur für ihre Anwendung ist es für sie, unter ihren eigenen Bedingungen zu bleiben (dieser Code wäre höchstwahrscheinlich nutzlos, wenn ich ihn in einem anderen Projekt wiederverwenden würde). Natürlich ist alles richtig im Vertrag geschrieben. Ich finde das auch fair.

Der Schlüssel ist: "Diese Komponenten sind ein anderes Produkt" und alles ist in einem Vertrag vor dem Start geschrieben.

Ja, Sie haben möglicherweise die richtige Idee, gemeinsam genutzte Bibliotheken zu verwenden. Ich frage Sie jedoch, warum Sie ihnen den von Ihnen verwendeten Quellcode nicht unter einer Lizenz zur Verfügung stellen, mit der sie ihr Risiko reduzieren können. Ich denke das wäre fair.


2
Ich denke, das ist eine gute Antwort. Das OP sollte natürlich nicht einfach umgedreht werden, aber auf der anderen Seite erscheint es überaus vernünftig, nach dem Quellcode für ein benutzerdefiniertes Projekt zu fragen (und ich habe gesehen, dass genug vertraglich vereinbarte Projekte völlig aus dem Ruder laufen und von jemandem gerettet werden müssen ansonsten würde ich wahrscheinlich keinen Auftragnehmer in Betracht ziehen, der sich geweigert hat, eine Quelle anzubieten, wenn ich nachschaue).
Casey

11

Der Weg, um damit umzugehen, ist zu verhandeln.

Wenn sie Quellcode wollen, sollten sie bereit sein, dafür zu zahlen, und es liegt an Ihnen, zu entscheiden, wie viel das sein soll.

Auf der anderen Seite ... wenn sie nicht bereit sind zu bezahlen, was Sie wollen, können sie beschließen, "ihr Geschäft woanders zu betreiben".

Willkommen in der Geschäftswelt :-)


Wenn Sie in Zukunft mit potenziellen Kunden sprechen, sollten Sie dieses Problem frühzeitig erwähnen, damit Sie nicht die Zeit aller verschwenden.


Es ist auch erwähnenswert, dass Sie Open Source-Entwicklern und (geschulten) Kunden, die nach Open Source-Lösungen suchen, ein Gräuel bereiten.


5
Erstens gibt es weit mehr Möglichkeiten für eine Lizenz als "sie wollen". Zweitens finde ich es sehr unfair, dass Sie dem OP die Schuld geben, dass Sie das nicht "früh genug zur Sprache gebracht" haben, anstatt dem Unternehmen. Dies ist ein bisschen redaktionell. Drittens verstehe ich nicht, warum Open-Source-Entwickler einem Gräuel ausgesetzt sind, wenn sie an einem Closed-Source-Projekt arbeiten möchten. Viertens, wenn das Unternehmen nach einer Open-Source-Lösung suchen würde, würde es dies verlangen und nicht nach einer privaten Kopie des Quellcodes für seine Zwecke.
Djechlin

1
@djechlin - 1) Ich habe dem OP keine Vorwürfe gemacht. Aber wenn er nicht bereit ist, über diesen Punkt zu verhandeln ... dann hätte er es >> früher << ansprechen sollen. Es ist eine offensichtliche und vernünftige Anforderung an einen sachkundigen Kunden für maßgeschneiderte Software. 2) Das "Anathema" ist das, was das OP tut ... und versucht, den Quellcode festzuhalten. 3) Während es keinen Hinweis darauf gibt, dass der Kunde nach Open Source gefragt hat (vielleicht verstehen sie seine Vorteile nicht wirklich), ist klar, dass der >> do << den Quellcode haben möchte, was einer seiner Hauptvorteile von OSS ist .
Stephen C

3
Dieser Kommentar ist genau richtig. Als Softwareentwickler erhalten alle meine Kunden eine exklusive Lizenz zur Nutzung und Änderung der Software und ich versorge sie mit Quellcode. Darüber hinaus behalte ich mir das Recht vor, Code, den ich in anderen Projekten geschrieben habe, wiederzuverwenden und Code aus anderen Projekten in diesem Projekt wiederzuverwenden. Das spart ihnen Geld und uns beiden Zeit. Niemand hat jemals ein Problem damit gehabt.
Dotancohen

1
@dotancohen: Ich hoffe sie bekommen eine "nicht exklusive" Lizenz. Wenn sie eine exklusive Lizenz haben, können Sie den Code nicht für den nächsten Kunden wiederverwenden. Sie können nicht zwei Kunden mit einer "exklusiven" Lizenz für denselben Code haben.
gnasher729

Die Lizenz gestattet es ihnen, den Code zu verwenden und zu ändern, ihn jedoch nicht weiterzugeben, zu verkaufen oder zu verbreiten. Da hauptsächlich PHP auf VPS ausgeführt wird, gibt es nicht viel, was ich tun könnte oder tun möchte, wenn der Code "durchgesickert" ist. Ich sehe es nicht als große Sache auf dem Gebiet, auf dem ich arbeite.
dotancohen

5

Dies kann für Sie zu spät sein, da Sie dies möglicherweise bereits vertraglich vereinbart haben und möglicherweise mit anderen Kunden inkompatible Bedingungen vereinbart haben.

Es gibt zwei Möglichkeiten, wie Sie Ihren Kunden Ihren Quellcode zur Verfügung stellen können. Eigentum des Urheberrechts und lizenziert.

Einige Kunden möchten den Quellcode besitzen. Dies bedeutet, dass sie Ihnen am Ende des Prozesses Geld bezahlen und Ihnen im Gegenzug das Copyright des Codes geben, den Sie für sie erstellen. Ein Grund dafür ist, dass sie im Quellcode ein erhebliches Potenzial für geistiges Eigentum sehen und dies möglicherweise in ihrer Unternehmensbilanz bewerten möchten. In diesem Szenario haben Sie keine Berechtigung zur weiteren Verwendung dieses Quellcodes für andere Projekte, es sei denn, Sie erhalten von Ihrem Kunden eine Lizenz, die Ihnen diese Berechtigung erteilt.

Wenn Ihr Kunde ein Produkt von der Stange selbst kauft, erwartet er eine Lizenz zur Nutzung der Software und nicht das Eigentum am Quellcode. Sie sollten damit rechnen, dass Sie dieselbe (oder ähnliche) Software an viele andere Unternehmen verkaufen und dass sie aufgrund der größeren Kundenbasis hoffentlich von niedrigeren Anschaffungskosten profitieren.

Die Situation in dieser Frage ist jedoch ein Missgeschick der beiden.

Das möchte ich können. Ich erteile Ihrem Kunden eine Lizenz zur Nutzung (und Änderung) Ihres freigegebenen Codes. Wenn Sie vom Kunden befragt werden, möchte ich Sie darauf hinweisen, dass es sich um gemeinsam genutzten Code handelt, den Sie bereits in mehreren Projekten verwendet haben, und aktuelle Angebote für zukünftige Arbeiten vorliegen, die darauf beruhen, dass Sie diese Arbeit weiterhin verwenden. weisen Sie darauf hin, dass Ihr Kunde dadurch weniger Zeit für dieses Projekt hat und infolgedessen einen niedrigeren Preis bezahlt hat. Wie andere gemeinsam genutzte Codebibliotheken, die vom Projekt verwendet werden, verfügen sie über eine Lizenz, um diesen Code zu verwenden und es anderen Entwicklungsteams zu ermöglichen, diesen und andere Projekte auf der Grundlage dieser Bibliothek zu entwickeln. Wenn sie jedoch lieber den gesamten Code besitzen möchten, sind Sie bereit, einen Ersatz zu erstellen. Dies ist jedoch eine zusätzliche Gebühr.

Je nachdem, wofür Sie sich bereits verpflichtet haben, müssen Sie möglicherweise eine kostenlose Ersatzfunktion schreiben oder Ihren Quellcode weitergeben.

Denken Sie daran, dass es verschiedene Arten von Bibliotheken gibt. Die Standardvorlagenbibliothek in C ++ ist ein gutes Beispiel für eine Bibliothek, die auf Quellcodeebene enthalten ist und in eine ausführbare Projektdatei kompiliert wird, die möglicherweise der Verwendung Ihres allgemeinen Codes sehr ähnlich ist.


1
Aus diesem Kommentar : "Der Vertrag ist nicht abgeschlossen, sie haben zugestimmt, nicht unterschrieben und sind dann mit dieser Klausel zurückgekommen." - Wie es erst vor zwei Tagen war, würde ich davon ausgehen, dass die Verhandlungen noch laufen.

0

Wenn Sie mit der von Ihnen gelieferten Software einen Dritten verwenden, ist die Wahrscheinlichkeit groß, dass Sie nicht über den Quellcode für diesen Dritten verfügen. Sie werden die Software weiterhin mit Binärdateien von Drittanbietern an das Unternehmen liefern. Der Code, den Sie als Framework für alle Ihre Projekte entwickelt haben, ist genau wie ein Drittanbieter, auch wenn er Ihnen gehört. In diesem Fall hat das Unternehmen mit den Binärdateien Ihres Frameworks genau das gleiche Risiko wie mit dem Drittanbieter. Warum sollten Sie in diesem Fall dem Unternehmen den Quellcode Ihres Frameworks mitteilen? Sie können ihr eine gute API-Dokumentation mit einer Lizenzvereinbarung zur Verfügung stellen und das auch. Wenn Ihr Code die nächste große Sache enthält, die die Branche revolutionieren wird, ist dies eine andere Geschichte, aber im Allgemeinen ist dies nicht der Fall.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.