In welchen Fällen ist es gerechtfertigt, den Quellcode geheim zu halten?

8

Als ich als Freiberufler arbeitete, stieß ich auf viele Fälle, in denen Kunden ihre Ideen und den Quellcode ihrer Projekte (wie Webanwendungen) so gut wie möglich schützten, egal wie unwichtig, uninteressant und unoriginal die Projekte und Konzepte dahinter waren .

Ich habe bereits eine Frage zur Geheimhaltung der Ideen gestellt und viele gute Antworten erhalten. Jetzt geht es mir mehr um die Geheimhaltung des Quellcodes.

Nach meinen Beobachtungen von:

  • Die Codebasen, an denen ich während meiner Karriere arbeiten musste,
  • Meine eigene Bereitschaft, einen Teil meines eigenen Quellcodes geheim zu halten, und:
  • Einige Artikel wie zum Beispiel " Offene Antwort auf Simon Stuart" des beliebten Programmers.SE-Mitarbeiters Mason Wheeler ,

Ich komme zu dem Schluss, dass der Quellcode hauptsächlich aus folgenden Gründen geheim gehalten wird:

  1. Weil sich der Autor für den Code von solch schlechter Qualität schämt oder das Unternehmen befürchtet, den Ruf zu verlieren, wenn jemand eine so schlechte Codebasis sieht, oder weil die Codebasis aufgrund der geringen Qualität von Nutzen ist, wird es niemandem etwas Nützliches bringen, ihn als Open Source zu veröffentlichen: Selbst wenn jemand interessiert wäre, wäre er kaum in der Lage, die Lösung auszuführen (oder oft sogar zu kompilieren).

  2. Da Teile des Codes gestohlen werden (hauptsächlich aus Open-Source-Projekten, für die eine Lizenz gilt, die die Verwendung in einer bestimmten Situation einschränkt),

  3. Weil der Code auf Sicherheit durch Dunkelheit beruht und der Autor sich nicht um Kerckhoffs Prinzip kümmert .

  4. Weil das Produkt so zerbrechlich ist, dass das Anzeigen des Codes zu viel Schaden anrichten würde: Wenn eine Closed-Source-App mit all diesen Sicherheitslücken einem Neuling-Hacker standhalten würde, hätte dieselbe Open-Source-App weitaus geringere Chancen, da selbst der Anfänger-Hacker dies tun würde Sie müssen nur den Code studieren, um alle Löcher zu entdecken.

    Wenn nicht klar ist, wovon ich spreche, hier ein Beispiel:

    if (credentials.password === 'masterPassword12345')
    {
        isLoggedIn = true
        currentUser = credentials.userName
    }
    else
    {
        authenticate(credentials)
    }
    
  5. Weil der Autor den Quellcode (und seine eigenen Fähigkeiten und Fachkenntnisse) überschätzt hat. Beispiel: Zu glauben, dass ein hausgemachter kryptografischer Algorithmus (der von niemandem überprüft wurde) besser ist als jeder bekannte.

  6. Weil der Autor glaubt, dass die Idee hinter dem Code großartig ist und gestohlen würde.

  7. Wegen des "Es ist nicht perfekt genug" -Syndroms. Mit anderen Worten, der Entwickler ist bereit, den Quellcode für die Öffentlichkeit freizugeben, wenn der Code "gut genug" ist, aber Tag für Tag gibt es noch Verbesserungsmöglichkeiten, sodass der Code niemals veröffentlicht wird.

All diese Gründe vermitteln ein eher negatives Bild von Personen, die gegen die Veröffentlichung des Quellcodes sind.

Gibt es gültige Fälle, in denen der hochwertige Code, der dem Kerckhoffs-Prinzip folgt, nicht veröffentlicht wird?

Arseni Mourzenko
quelle
Ich liebe diese Frage, aber ...
James McLeod
3
Ich liebe diese Frage auch. Das Problem "Closed Source" im Vergleich zu "Open Source" ist meinungsbasiert ", aber es ist nicht (zumindest meiner Meinung nach nicht) möglich, gültige mögliche Gründe für Cloed Source zu finden. Ich möchte die Frage erneut öffnen, habe aber nicht genug Ruf dafür.
k3b
Ich kann auch nicht für eine Wiedereröffnung stimmen, aber ich denke, dies ist eine "gute subjektive" Frage. Angesichts der berechtigten Neigung von SO zu Open-Source-Software halte ich eine Untersuchung, wann Closed- Source gut ist, für eine berechtigte Frage.
1
Diesmal nicht xkcd: click
Vorac
Was für eine verrückte Frage. Es ist wie zu fragen, warum ein Künstler seine Kunst nicht kostenlos verschenken sollte. Es ist nicht so, dass jemand es einfach kopieren und für seinen eigenen Profit verwenden könnte. Oh warte, ja sie können. Gleiches gilt für Software.
Dunk

Antworten:

25

Einige Leute und die meisten Unternehmen haben eine seltsame Vorstellung vom Wert von Code.

"Wir haben 100.000 US-Dollar für dieses Projekt ausgegeben, daher muss der Code das wert sein" und müssen ihn schützen.

In Wirklichkeit ähnelt der meiste Code eher Farbe. Sie geben 100 US-Dollar für Farbe und 200 US-Dollar für Farbe aus. Aber jetzt ist die Farbe nichts wert, Sie können sie nicht verkaufen, niemand will sie, und selbst wenn sie es tun, können Sie sie nicht von Ihrer Wand nehmen und an die Wand eines anderen hängen.

Es kann den Wert des Gebäudes steigern, aber Sie können dies nicht realisieren, ohne das Gebäude zu verkaufen.

Sie könnten die Codebasis von Amazons "stehlen" (das meiste davon ist in verschiedenen Open-Source-Projekten frei verfügbar) und eine Ammassons-Website einrichten, aber Sie würden nicht viel von Amazons Geschäft übernehmen.

Code ist ein notwendiger Bestandteil jeder modernen Unternehmensinfrastruktur, aber er hat nur Wert als Teil eines Prozesses und einer Kultur, allein ist er nichts wert.

Ich würde hinzufügen, dass es einige Situationen gibt, in denen der Code für das Unternehmen von entscheidender Bedeutung ist und für jeden Konkurrenten so wertvoll ist, dass er geheim gehalten werden sollte:

  • Um eine böswillige Manipulation Ihrer Einrichtungen zu verhindern, wäre das "Page Rank" -System von Google ein gutes Beispiel, das ständig "gespielt" wird, um Websites einen ungerechtfertigt hohen Rang zu verleihen.
  • Automatisierte Handelsalgorithmen - Ein skrupelloser Konkurrent könnte den Algorithmus untersuchen und Ihr System dazu verleiten, zu niedrig zu verkaufen und zu hoch zu kaufen.
  • Ein "schneller / besserer" Algorithmus - Wenn das Alleinstellungsmerkmal Ihrer Software ein schnellerer, besserer Algorithmus zum Sortieren / Komprimieren / was auch immer ist, lohnt es sich wahrscheinlich, dies so lange wie möglich als Geschäftsgeheimnis zu betrachten.
James Anderson
quelle
3
+1 für die Lackanalogie!
Gerry
3
"Ich habe gebrauchte Farbe gekauft, aber zum Glück hatte sie die Form meines Hauses" - Steven Wright
JeffO
1
Zu Ihrer Liste von Code, der geheim gehalten werden sollte, würde ich hinzufügen: Code, der Hunderte oder sogar Tausende von Stunden Forschung in einem bestimmten System umfasst; die in einer Software-Suite verwendet wird, die es Kunden eines Unternehmens ermöglicht, diese Forschung zu nutzen, ohne das gleiche (Wissens-) Wissen zu erwerben; und was, wenn offengelegt, es Wettbewerbern ermöglichen würde, ihren Kunden den gleichen Wert anzubieten. Sie erwarten auch nicht, dass die Firma Coca Cola das Rezept für ihr Coca-Cola-Getränk mitteilt, oder?
Marjan Venema
Tolle Antwort, obwohl ich nicht zustimmen würde, dass Code "allein nichts wert ist". Gibt es nicht einen Wert für andere Entwickler, die ihn für ihre eigene Bereicherung studieren könnten? (Auch wenn als Beispiel, was nicht zu tun ist)
Dan1701
Solange wir die Farbdosen-Analogie verwenden, erstellen viele Softwareprojekte ihre eigenen Farbdosenfabriken und füllen die Dosen in einer anderen Fabrik in einer anderen Stadt mit verschiedenen Farben. Es ist wahr, dass die Herstellung der Farbe 100 US-Dollar kostet, aber die Herstellung der Fabriken selbst kostet 1.000.000 US-Dollar. Es gibt Beobachter, die sicherstellen, dass der Lack die richtige Farbe hat, und während die Lackdosenfabrik über die Lackfabrik Bescheid weiß, ist das Gegenteil nicht der Fall.
Robert Harvey
6

Weil es schwer zu schreiben und zu testen war . Und Design. Und spezifizieren. Und debuggen. Und ISO 9000. Und Dokument. Und Versionskontrolle. Und den spitzen Chef aus dem Weg räumen. Und was auch immer die Arbeit eines Software-Ingenieurs lohnt.

Und Sie möchten nicht, dass Ihre Konkurrenten einfach Ihren Quellcode kopieren und einfügen, anstatt so viel Zeit und Geld wie Sie in ihr Produkt zu stecken.

Mouviciel
quelle
Gibt es Fälle, in denen ein erfolgreicher Geschäftsansatz darin besteht, Code zu kopieren und einzufügen, ohne einen Mehrwert zu schaffen?
Arseni Mourzenko
3
@MainMa - Ja: Alle Fälle, in denen Open-Source-Code verwendet wird. Dazu gehört, dass Apple BSD Unix für sein Betriebssystem verwendet, anstatt ein Betriebssystem von Grund auf neu zu entwickeln.
Mouviciel
OK. Guter Punkt. +1 dann.
Arseni Mourzenko
1
Das ist ein schlechtes Beispiel. Niemand wird reich, wenn er Open-Source-Software ohne Unterstützung oder Mehrwert mit einem anderen Namen verkauft. OS X war ein gutes Stück "Mehrwert" gegenüber BSD. (und sie zahlten trotzdem 100% des Listenpreises.)
DougM
1
@DougM - Es geht nicht um Open-Source-Software, sondern um die Kosten für die Entwicklung von Software im Vergleich zur Verwendung bereits entwickelter Software. Wenn der Quellcode von Photoshop V1 vor zwanzig Jahren veröffentlicht würde, wäre Adobe nicht dort, wo er jetzt ist.
Mouviciel
4

Ich denke, die naheliegendste Antwort von allen ist, dass die Software für viele Unternehmen einen wesentlichen Teil des Werts ausmacht, den die Unternehmenseinheit für die Kunden bringt. Wenn also jemand den Code einfach ändern und neu kompilieren oder wertvolle Teile davon wiederverwenden könnte, könnte er denselben Service oder Wert anbieten. Dies würde die Wettbewerbsinteressen der Unternehmenseinheit beeinträchtigen und möglicherweise dazu führen, dass sie Geld verlieren.

arbn
quelle
1
Nicht wirklich. Amazon gab Millionen von Risikokapitalgebern aus, bevor es jemals einen Gewinn erzielte. Dies war in einem Markt, den sie mehr oder weniger mit sehr wenig Wettbewerb geschaffen haben. Sie könnten Amazons Codebasis stehlen, aber ohne Millionen für Werbung und Branding auszugeben, würden Sie nichts erreichen.
James Anderson
8
@ JamesAnderson: Software ist für Amazon das Mittel zum Zweck, nicht wie sie ihr Geld verdient. Wenn Sie Microsoft oder Autodesk sind, ist der Wert, wenn Ihre Software ein viel größerer Teil des Bildes ist.
Blrfl
@JamesAnderson Ich habe meine Antwort bearbeitet, um zu verdeutlichen, dass ich nur über eine bestimmte Untergruppe von Unternehmen spreche. Wie Blrfl betont, befinden sich Microsoft, Autodesk, Wolfram Research und wahrscheinlich viele andere Unternehmen in dieser Situation.
Arbn
2
Aber [Libra | Open] Office macht alles kostenlos. Branding, Marketing und Kundenkontakte sind viel mehr wert als die Software selbst.
James Anderson
4
@JamesAnderson, Sie haben gerade ein Produkt (LibreOffice) aufgerufen, das aus einem Open-Source-Produkt hervorgegangen ist und einen Teil seiner Benutzerbasis übernommen hat, während Sie gleichzeitig darauf bestanden, dass der Schutz von Code keinen Wert hat. Ehrlich gesagt scheinen Sie absichtlich unwissend zu sein.
MikeFHay
2

Geld wurde ausgegeben, um ein Problem oder eine bestimmte Reihe von Problemen zu lösen. Wenn der Wettbewerb dann die Antwort auf diese Probleme "kostenlos" erhält, wird das Unternehmen, das das Problem gelöst hat, finanziell benachteiligt - insbesondere dann, wenn es einem größeren Unternehmen möglich wäre, vor dem erstellenden Unternehmen "auf den Markt zu kommen", weil dies der Fall ist Infrastruktur vorhanden, oder wenn ein Wettbewerber das Geld ausgibt, das er für die Entwicklung des Marketings ausgegeben hätte.

Darüber hinaus ist es manchmal möglich, sich anhand dieser Dinge ein Bild von den Richtlinien und Prozessen eines Unternehmens zu machen. Auch diese Informationen können als stratgischer Vorteil genutzt werden. Dies ist oft das größere Problem ... Der Code enthüllt das Innenleben des Unternehmens.

Don Nickel
quelle
1

Sie haben Recht, die meisten Unternehmen müssen keine großen Anstrengungen unternehmen, um ihren Code geheim zu halten, da er für niemanden anderen von Nutzen ist. Viele interne Lösungen sind als eine Art benutzerdefinierte ERP-Lösung eng mit anderen Anwendungen und Systemen verbunden.

Für einige Unternehmen ist der Wert der Software ein Teil des Werts ihres Unternehmens. Eine beschissene Codebasis, die für ihre Zwecke funktioniert, hat Wert und ist für einen nicht technischen Käufer kein Problem. Niemand möchte eine Firma mit Bedingungen kaufen. Der Käufer möchte eine klare Antwort darauf, wem der Code gehört, und kann er damit machen, was er will? Wer weiß, das neue Unternehmen möchte möglicherweise eine interne Anwendung nehmen und an andere in der Branche verkaufen und deren Kauf nutzen. Diese Gruppe bewertet eine schlechte Codebasis nicht so hoch wie eine solide Anwendung. Das Wissen, dass der Code geheim gehalten wurde (obwohl dies eine Illusion sein könnte) und es keine Open-Source-Lizenzen gibt, die umgangen werden könnten, trägt zum Verkauf des Unternehmens bei.

JeffO
quelle
0

Sie geben den Quellcode nicht weiter, denn wenn Ihr Client Änderungen an einer von Ihnen erstellten Software benötigt, muss er mit Ihnen gehen und Sie können eine Prämie verlangen.

Pieter B.
quelle