web-dev-qa-db-ja.com

ソースコードを秘密にしておくことが正当化されるのはどのような場合ですか?

私がフリーランサーとして働いていたとき、プロジェクトとその背後にある概念がいかに重要でなく、興味深く、独創的でなくても、顧客がプロジェクト(Webアプリケーションなど)のアイデアとソースコードを可能な限り保護している多くのケースに遭遇しました。

私はすでに投稿しました アイデアを秘密に保つことについての質問 、そして多くの素晴らしい答えを受け取りました。今、私の懸念は、ソースコードの秘密性についてです。

私の観察によると:

私はソースコードが主にこれらの理由のために秘密にされていると結論づけます:

  1. 作者はそのような質の悪いコードに恥じている、または誰かがそのような質の悪いコードベースを見つけた場合、またはコードベースの質が低い場合に評判を失うことを恐れているので、それをオープンソース化するのに役立つものは誰にもありません。誰かが興味を持っても、彼はソリューションを実行することがほとんどできません(または、多くの場合、コンパイルさえできません)。

  2. コードの一部が盗まれているため(ほとんどの場合、特定の状況での使用を制限するライセンスの対象となるオープンソースプロジェクトから)、

  3. コードはあいまいさによるセキュリティに依存しており、作成者は Kerckhoffsの原則 を気にしません。

  4. 製品は非常に壊れやすいので、コードを表示すると非常に害が生じます。これらのセキュリティリークのあるクローズドソースのアプリが初心者のハッカーに耐える場合、初心者のハッカーでさえ同じオープンソースのアプリで発生する可能性ははるかに小さくなります。コードを調べてすべての穴を発見する必要があります。

    私が何を話しているのかはっきりしない場合は、ここに例があります:

    if (credentials.password === 'masterPassword12345')
    {
        isLoggedIn = true
        currentUser = credentials.userName
    }
    else
    {
        authenticate(credentials)
    }
    
  5. 著者がソースコード(および彼自身のスキルと専門知識)を過大評価したためです。例:自家製の暗号化関連のアルゴリズム(誰もレビューしなかった)は、よく知られたアルゴリズムよりも優れていると信じています。

  6. なぜなら、コードの背後にあるアイデアは素晴らしいものであり、盗まれるだろうと著者が考えているからです。

  7. 「それは十分に完全ではない」症候群のために。言い換えれば、開発者はコードが「十分」であればソースコードを公開してもかまいませんが、日々改善すべき点があるため、コードがリリースされることはありません。

これらすべての理由は、ソースコードの公開に反対している人々のかなり否定的なイメージを与えます。

ケルクホフスの原則に従う高品質のコードを公開しない正当なケースはありますか?

8

一部の人々とほとんどの企業は、コードの価値について奇妙な認識を持っています。

「私たちはこのプロジェクトに100,000ドルを費やしたため、コードはその価値があるに違いありません」そしてそれを保護する必要性を感じています。

実際には、ほとんどのコードはペイントに似ています。ペイントに100ドル、壁に塗るために200ドルを費やします。しかし今、ペイントは何の価値もありません。あなたはそれを売ることができず、誰もそれを望んでいません。たとえ彼らがそれをしたとしても、あなたはそれをあなたの壁から取り、他の誰かの壁に置くことはできません。

それは建物の価値を高めるかもしれませんが、建物を売ることなくこれを実現することはできません。

アマゾンのコードベースを「盗み」(そのほとんどはさまざまなオープンソースプロジェクトから無料で入手できます)、Ammassons Webサイトをセットアップできますが、アマゾンのビジネスの多くを引き継ぐことはできません。

コードは現代のビジネスインフラストラクチャに必要な部分ですが、それ自体は何の価値もないプロセスと文化の一部としてのみ価値があります。

私は、コードがビジネスに不可欠であり、それが秘密にされるべきである競合他社にとって十分に価値があるいくつかの状況があると付け加えます。

  • 施設の悪意のある操作を防止するには、Googleの「ページランク」システムがWebサイトに不当に高いランクを与えるために常に「ゲーム」されているのが良い例です。
  • 自動取引アルゴリズム-悪意のある競合他社がアルゴリズムを研究し、システムをだまして売りすぎ、買いすぎとする可能性があります。
  • 「より速く/より良い」アルゴリズム-ソフトウェアの独自のセールスポイントがソート/圧縮/何でもより速くより良いアルゴリズムである場合、これを可能な限り営業秘密に保つことはおそらく価値があります。
25
James Anderson

書くのが大変だったので、そしてテスト。そしてデザイン。そして具体的に。そしてデバッグ。そしてISO9000。そしてドキュメント。そしてバージョン管理。先のとがった髪のボスを邪魔にならないようにします。そして、ソフトウェアエンジニアの仕事を価値あるものにするものは何でも。

また、競合他社がソースコードをコピーアンドペーストするだけで、製品に時間とお金をかけるのではなく、.

6
mouviciel

最も明白な答えは、ソフトウェアは、多くの企業にとって、企業体が顧客にもたらす価値の実質的な部分であると私は思う。したがって、コードを変更して再コンパイルしたり、貴重な部分を再利用したりできれば、同じサービスまたは価値を提供できます。これは、企業体の競争上の利益を傷つけ、おそらくそれらを失うことになります。

4
arbn

問題、または特定の一連の問題を解決するためにお金が費やされました。競争が「無料」でこれらの問題の答えを得る場合、それは特に問題を解決した会社を経済的に不利な立場に置きます-特に大企業がインフラが整っている、または競合他社がマーケティングの開発に費やしたお金を費やしている場合。

さらに、これらの事柄を見ることによって、会社のポリシーやプロセスのアイデアを得ることが時々可能です。繰り返しになりますが、この情報は戦略的な利点として使用できます。これはしばしばより大きな問題です...コードは会社の内部構造を明らかにします。

2
Don Nickel

そうです、ほとんどの企業はコードを秘密にしておくために長い時間を費やす必要はありません。それは他の誰にも役に立たないからです。多くの内部ソリューションは、カスタムERPソリューションの一種として、他のアプリケーションやシステムと密接にリンクしています。

一部の企業にとって、ソフトウェアの価値はその企業の価値の一部です。彼らの目的のために機能するくだらないコードベースは価値があり、技術者でないバイヤーにとっては心配になりません。紐を付けたまま会社を買収したい人はいません。買い手は、誰がコードを所有するかについての簡単な答えを望んでいます。彼らは自由にコードを処理できますか?誰が知っているか、新会社は内部アプリケーションを取り、それを業界内の他の人に売り、彼らの購入を活用したいと思うかもしれません。このグループは、堅固なアプリケーションほどには悪いコードベースを評価しません。コードが秘密に保たれていること(これは幻想かもしれません)を知っていて、回避するためのオープンソースライセンスがないため、ビジネスの販売に付加価値があります。

1
JeffO

あなたが作成したソフトウェアにクライアントが変更を必要とするとき、彼らはあなたと一緒に行かなければならず、あなたはプレミアムを請求することができるので、あなたはソースコードを手渡しません。

0
Pieter B