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.
quelle
Antworten:
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.
quelle
"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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle
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.
quelle