Các trường hợp giữ bí mật mã nguồn là hợp lý?


8

Khi tôi làm việc tự do, tôi đã gặp rất nhiều trường hợp khách hàng bảo vệ ý tưởng và mã nguồn của các dự án của họ (như ứng dụng web) càng nhiều càng tốt, bất kể các dự án và khái niệm không quan trọng đến mức nào .

Tôi đã đăng một câu hỏi về việc giữ bí mật ý tưởng và nhận được nhiều câu trả lời tuyệt vời. Bây giờ, mối quan tâm của tôi là nhiều hơn về bảo mật mã nguồn.

Theo quan sát của tôi về:

  • Các cơ sở mã mà tôi phải làm việc trong suốt sự nghiệp của mình,
  • Tôi sẵn sàng giữ bí mật một số mã nguồn của riêng mình và:
  • Một vài bài báo như, ví dụ, Phản hồi mở cho Simon Stuart bởi những người lập trình nổi tiếng. Người đóng góp Mason Wheeler ,

Tôi kết luận rằng mã nguồn được giữ bí mật chủ yếu vì những lý do đó:

  1. Bởi vì tác giả xấu hổ về mã có chất lượng kém như vậy hoặc công ty lo sợ sẽ mất danh tiếng nếu ai đó nhìn thấy cơ sở mã kém như vậy hoặc do chất lượng thấp của cơ sở mã hóa, nó sẽ không mang lại bất cứ điều gì hữu ích cho bất kỳ ai để mở nguồn: ngay cả khi ai đó sẽ quan tâm, anh ta sẽ khó có thể chạy giải pháp (hoặc, thường xuyên, thậm chí biên dịch).

  2. Bởi vì các phần của mã bị đánh cắp (chủ yếu từ các dự án nguồn mở được bảo vệ bởi giấy phép hạn chế sử dụng nó trong một tình huống nhất định),

  3. Bởi vì mã dựa trên bảo mật bởi sự tối nghĩa và tác giả không quan tâm đến nguyên tắc của Kerckhoffs .

  4. Bởi vì sản phẩm rất dễ hỏng nên việc hiển thị mã sẽ gây ra quá nhiều tác hại: nếu một ứng dụng nguồn đóng với tất cả các rò rỉ bảo mật đó có thể chịu được một hacker mới, thì ứng dụng có nguồn mở tương tự sẽ có cơ hội nhỏ hơn rất nhiều, bởi vì ngay cả hacker mới bắt đầu cũng sẽ chỉ cần nghiên cứu mã để khám phá tất cả các lỗ hổng.

    Nếu nó không rõ những gì tôi đang nói, thì đây là một ví dụ:

    if (credentials.password === 'masterPassword12345')
    {
        isLoggedIn = true
        currentUser = credentials.userName
    }
    else
    {
        authenticate(credentials)
    }
    
  5. Bởi vì tác giả đã ước tính quá mức mã nguồn (và kỹ năng và chuyên môn của mình). Ví dụ: tin rằng một thuật toán liên quan đến mật mã tự tạo (không bao giờ được xem xét bởi bất kỳ ai) tốt hơn bất kỳ thuật toán nổi tiếng nào.

  6. Bởi vì tác giả tin rằng ý tưởng đằng sau mã là tuyệt vời, và nó sẽ bị đánh cắp.

  7. Bởi vì hội chứng "Nó không đủ hoàn hảo". Nói cách khác, nhà phát triển sẵn sàng phát hành mã nguồn ra công khai khi mã "đủ tốt", nhưng ngày qua ngày, vẫn còn nhiều thứ phải cải thiện, vì vậy mã sẽ không bao giờ được phát hành.

Tất cả những lý do đó đưa ra một hình ảnh khá tiêu cực của những người chống lại việc xuất bản mã nguồn.

Có trường hợp hợp lệ nào để không phát hành ra công chúng mã chất lượng cao theo nguyên tắc của Kerckhoffs không?


Tôi thích câu hỏi này, nhưng ...
James McLeod

3
Tôi cũng thích câu hỏi này Vấn đề "nguồn đóng" so với "nguồn mở" là dựa trên quan điểm "nhưng việc tìm ra những lý do hợp lệ cho nguồn bị che giấu không phải là (ít nhất là theo ý kiến ​​của tôi). Tôi muốn mở lại câu hỏi nhưng tôi không đủ uy tín cho việc này.
k3b

Tôi cũng không thể bỏ phiếu để mở lại, nhưng tôi nghĩ đây là một câu hỏi "chủ quan tốt". Do SO dựa vào phần mềm nguồn mở chính đáng, tôi nghĩ rằng một cuộc điều tra khi nguồn đóng là tốt là một câu hỏi hợp lệ.

1
Không phải xkcd lần này: nhấp
Vorac

Thật là một câu hỏi vô ích. Nó giống như hỏi tại sao một nghệ sĩ sẽ không cho đi nghệ thuật của họ miễn phí? Nó không giống như ai đó chỉ có thể sao chép nó và sử dụng nó cho lợi nhuận riêng của họ. Oh chờ đợi, vâng họ có thể. Tương tự với phần mềm.
Dunk

Câu trả lời:


25

Một số người và hầu hết các công ty có một nhận thức kỳ lạ về giá trị của mã.

"Chúng tôi đã chi 100.000 đô la cho dự án này do đó mã phải có giá trị đó" và cảm thấy cần phải bảo vệ nó.

Trong thực tế hầu hết các mã giống như sơn. Bạn chi 100 đô la cho sơn và 200 đô la để áp dụng nó vào tường của bạn. Nhưng bây giờ sơn không có giá trị gì, bạn không thể bán nó, không ai muốn nó, và ngay cả khi họ đã làm bạn không thể lấy nó trên tường của bạn và đặt nó lên tường của người khác.

Nó có thể nâng cao giá trị của tòa nhà nhưng bạn không thể nhận ra điều này mà không bán tòa nhà.

Bạn có thể "đánh cắp" cơ sở mã Amazons (hầu hết nó có sẵn miễn phí từ các dự án nguồn mở khác nhau) và thiết lập một trang web Ammassons nhưng bạn sẽ không tiếp quản nhiều hoạt động kinh doanh của Amazons.

Mã là một phần cần thiết của bất kỳ cơ sở hạ tầng doanh nghiệp hiện đại nào, nhưng, nó chỉ có giá trị như một phần của một quá trình và văn hóa, tự nó không có giá trị gì.

Tôi sẽ nói thêm rằng có một số tình huống trong đó mã là quan trọng đối với doanh nghiệp và sẽ đủ giá trị cho bất kỳ đối thủ cạnh tranh nào mà nó cần được giữ bí mật:

  • Để ngăn chặn các thao tác độc hại đối với các cơ sở của bạn - một ví dụ điển hình là hệ thống "xếp hạng trang" của Google liên tục bị "đánh bạc" để cung cấp cho các trang web một thứ hạng cao không thể tin được.
  • Thuật toán giao dịch tự động - một đối thủ cạnh tranh vô đạo đức có thể nghiên cứu thuật toán và đánh lừa hệ thống của bạn bán quá thấp và mua quá cao.
  • Thuật toán "nhanh hơn / tốt hơn" - nếu điểm bán hàng duy nhất của phần mềm của bạn là thuật toán tốt hơn nhanh hơn để sắp xếp / nén / bất cứ điều gì thì có lẽ phải trả tiền để giữ bí mật thương mại này càng lâu càng tốt.

3
+1 cho sự tương tự sơn!
Gerry

3
"Tôi đã mua một số sơn đã qua sử dụng, nhưng may mắn thay, nó có hình dạng của ngôi nhà của tôi" - Steven Wright
JeffO

1
Để danh sách mã của bạn cần được giữ bí mật, tôi sẽ thêm: Mã bao gồm hàng trăm hoặc thậm chí hàng ngàn giờ nghiên cứu vào một hệ thống cụ thể; được sử dụng trong bộ phần mềm cho phép khách hàng của một doanh nghiệp tận dụng lợi thế của nghiên cứu đó mà không cần có được kiến ​​thức (mức độ) tương tự; và khi được tiết lộ sẽ cho phép các đối thủ cạnh tranh cung cấp cùng loại giá trị cho khách hàng của họ. Bạn cũng không mong đợi công ty Coca Cola chia sẻ công thức cho thức uống Coca Cola của họ chứ?
Marjan Venema

Câu trả lời tuyệt vời, mặc dù tôi sẽ không đồng ý rằng mã "tự nó không có giá trị gì." Không có giá trị cho các nhà phát triển khác, những người có thể nghiên cứu nó để làm giàu cho chính họ? (Ngay cả khi là một ví dụ về những việc không nên làm)
Dan1701

Miễn là chúng ta sử dụng sơn có thể tương tự, nhiều dự án phần mềm tạo ra các nhà máy sơn riêng của họ và lấp đầy các lon bằng nhiều màu sơn khác nhau bằng cách sử dụng một nhà máy khác ở một thị trấn khác. Đúng là sơn có giá 100 đô la cho các nhà máy để tạo ra, nhưng bản thân các nhà máy tốn 1.000.000 đô la để thực hiện. Có những người quan sát để đảm bảo sơn đúng màu, và trong khi nhà máy sơn có thể biết về nhà máy sơn, thì điều ngược lại là không đúng.
Robert Harvey

6

Bởi vì nó rất khó để viết và kiểm tra . Và thiết kế. Và chỉ định. Và gỡ lỗi. Và ISO 9000. Và tài liệu. Và kiểm soát phiên bản. Và có được ông chủ tóc nhọn ra khỏi đường. Và bất cứ điều gì làm cho công việc của một kỹ sư phần mềm đáng giá.

Và bạn không muốn rằng các đối thủ cạnh tranh của bạn chỉ sao chép-dán mã nguồn của bạn thay vì bỏ nhiều thời gian và tiền bạc như bạn vào sản phẩm của họ.


Có trường hợp một cách tiếp cận kinh doanh thành công sẽ là sao chép-dán mã mà không cần thêm bất kỳ giá trị nào không?
Arseni Mourzenko

3
@MainMa - Có: tất cả các trường hợp liên quan đến việc sử dụng mã nguồn mở. Điều này bao gồm Apple sử dụng BSD Unix cho hệ điều hành của mình, thay vì phát triển HĐH từ đầu.
mouviciel

Đồng ý. Điểm tốt. +1 rồi.
Arseni Mourzenko

1
Đó là một ví dụ tồi tệ. Không ai trở nên giàu có khi bán phần mềm nguồn mở, không có giá trị hỗ trợ hoặc giá trị gia tăng, với một tên khác. OS X là một chút "giá trị gia tăng" so với BSD. (và dù sao họ cũng đã trả 100% giá niêm yết.)
DougM

1
@DougM - Vấn đề không nằm ở phần mềm nguồn mở, nó xoay quanh chi phí phát triển phần mềm so với sử dụng phần mềm đã được phát triển. Nếu mã nguồn Photoshop V1 được phát hành hai mươi năm trước, Adobe sẽ không còn như bây giờ.
mouviciel

4

Câu trả lời rõ ràng nhất trong tất cả, tôi nghĩ, là phần mềm, đối với nhiều công ty, là một phần đáng kể của giá trị mà thực thể công ty mang lại cho khách hàng. Vì vậy, nếu bất cứ ai chỉ có thể sửa đổi và biên dịch lại mã, hoặc sử dụng lại các phần có giá trị của mã, thì họ có thể cung cấp cùng một dịch vụ hoặc giá trị. Điều này sẽ làm tổn thương lợi ích cạnh tranh của tổ chức doanh nghiệp và có thể khiến họ mất tiền.


1
Không hẳn vậy. Amazon đã chi hàng triệu tiền đầu tư mạo hiểm trước khi nó mang lại lợi nhuận. Đây là một thị trường mà họ ít nhiều tạo ra với rất ít sự cạnh tranh. Bạn có thể đánh cắp cơ sở mã Amazons nhưng không tốn hàng triệu đô la cho việc quảng bá và xây dựng thương hiệu, bạn sẽ chẳng đi đến đâu.
James Anderson

8
@JamesAnderson: Phần mềm là phương tiện để chấm dứt Amazon, chứ không phải cách nó kiếm tiền. Nếu bạn là Microsoft hoặc Autodesk, giá trị nếu phần mềm của bạn là một phần lớn hơn nhiều của hình ảnh.
Blrfl

@JamesAnderson Tôi đã chỉnh sửa phản hồi của mình để làm rõ rằng tôi chỉ nói về một tập hợp con nhất định của các công ty. Như Blrfl chỉ ra, Microsoft, Autodesk, Wolfram Research và có lẽ nhiều công ty khác đang ở trong tình huống này.
arbn

2
Nhưng [Libra | Open] Office làm mọi thứ mà Office làm miễn phí. Xây dựng thương hiệu, tiếp thị, liên hệ với khách hàng có giá trị hơn nhiều so với chính phần mềm.
James Anderson

4
@JamesAnderson, bạn vừa đưa ra một sản phẩm (LibreOffice), được rẽ nhánh từ một sản phẩm nguồn mở và lấy một phần cơ sở người dùng của nó, đồng thời khẳng định rằng không có giá trị nào trong việc bảo vệ mã. Thành thật mà nói bạn có vẻ như bạn đang thờ ơ.
MikeFHay

2

Tiền đã được sử dụng để giải quyết một vấn đề, hoặc một bộ vấn đề cụ thể. Nếu cạnh tranh thì nhận được câu trả lời cho những vấn đề này là "miễn phí", điều đó khiến công ty giải quyết vấn đề gặp bất lợi về tài chính - đặc biệt là nếu một công ty lớn hơn có thể "tiếp thị" trước công ty tạo ra bởi vì họ có cơ sở hạ tầng tại chỗ, hoặc nếu một đối thủ cạnh tranh chi số tiền họ muốn chi cho phát triển tiếp thị.

Hơn nữa, đôi khi có thể có ý tưởng về các chính sách và quy trình của công ty bằng cách xem xét những điều này. Một lần nữa, thông tin này có thể được sử dụng như một lợi thế địa tầng. Đây thường là vấn đề lớn hơn ... mã cho thấy hoạt động bên trong của công ty.


1

Bạn nói đúng, hầu hết các công ty không cần phải đi đến bất kỳ thời gian dài nào để giữ bí mật mã của họ, bởi vì nó không có tác dụng với bất kỳ ai khác. Nhiều giải pháp nội bộ được liên kết chặt chẽ với các ứng dụng và hệ thống khác như một giải pháp ERP tùy chỉnh.

Đối với một số công ty, giá trị của phần mềm là một phần giá trị của công ty họ. Một cơ sở mã tào lao hoạt động cho mục đích của họ có giá trị và sẽ không phải là mối quan tâm đối với người mua phi kỹ thuật. Không ai muốn mua một công ty với các chuỗi đính kèm. Người mua muốn có một câu trả lời rõ ràng về người sở hữu mã và họ có thể tự do làm điều đó với những gì họ muốn không? Ai biết được, công ty mới có thể muốn lấy một ứng dụng nội bộ và bán nó cho những người khác trong ngành và tận dụng việc mua hàng của họ. Nhóm này sẽ không đánh giá cao một cơ sở mã xấu cao như một ứng dụng vững chắc. Biết mã được giữ bí mật (mặc dù điều này có thể là ảo ảnh) và không có giấy phép nguồn mở nào để làm việc xung quanh không làm tăng giá trị cho việc bán doanh nghiệp.


0

Bạn không đưa ra mã nguồn bởi vì sau đó khi khách hàng của bạn cần sửa đổi phần mềm bạn đã tạo, họ sẽ phải đi cùng bạn và bạn có thể tính phí bảo hiểm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.