Làm thế nào nghiêm trọng là mất mã nguồn? [đóng cửa]


9

Nếu một công ty phần mềm mất mã nguồn cho một trong những sản phẩm họ đang bán, thì điều đó nghiêm trọng đến mức nào, theo cách bạn có thể giải thích cho một giáo dân? Thuật ngữ "sơ suất thô" sẽ quá mạnh? Hay "sự bất tài thô thiển"? Rõ ràng không ai bị giết nhưng không nghiêm trọng như một số sơ suất tài chính mà mọi người phải ngồi tù?

EDIT: Hãy nói rằng đó không phải là một trường hợp ổ đĩa bị hỏng, thảm họa tự nhiên hoặc bất cứ điều gì tương tự. Chỉ cần họ đặt nhầm nó.


37
Có một câu chuyện đằng sau câu hỏi này, và tôi rất muốn nghe nó. Tôi sẽ đợi nó xuất hiện trên Daily WTF.
BlairHippo

4
@Josh K - Tương tự xấu! Một đứa trẻ không thể được thay thế. Mã nguồn có thể. (và tôi thực sự run rẩy nếu bạn nghĩ rằng source_code == kid). Nhưng, tôi đoán bạn chưa có (chưa).
Rook

6
@Rook: Tại sao nó là một tương tự xấu? Mã nguồn không thể được thay thế chính xác, nó chỉ có thể được sao chép tương tự. Cho rằng điều này không phải là cực đoan như mất một đứa trẻ, nhưng âm thanh vẫn còn âm thanh.
Josh K

6
@Rook: Bạn đang thiếu điểm rằng trong khi một (trẻ em) rõ ràng quan trọng hơn nhiều so với mã nguồn, thì việc sở hữu cả hai vẫn được trân trọng rất nhiều. Bạn gạt bỏ sự tương tự của tôi bởi vì trẻ em quan trọng hơn thì mã nguồn sẽ giống như loại bỏ Yahoo! là một công ty tìm kiếm vì Google lớn hơn nhiều. Quan điểm của tôi là cả hai đều rất lớn, thực tế là một cái có ý nghĩa / gấp 10 lần thì điều đó không quan trọng. Cho bạn biết những gì, mất kho lưu trữ (và tất cả các bản sao mã) cho ứng dụng chính của công ty bạn và lấy lại cho tôi sau 5-10.
Josh K

5
Tôi không hiểu làm thế nào chỉ có một bản sao bị "đặt nhầm chỗ" ngay từ đầu? Tôi thường có ít nhất hai hoặc ba bản sao bản thân mình trong các giai đoạn khác nhau của các bản sửa lỗi, cập nhật và bản vá lỗi mà tôi đang làm việc trên. Các đồng nghiệp của tôi sẽ có bản sao của riêng họ. Tệ nhất, bạn có thể mất lịch sử trong kho lưu trữ nguồn của mình (nếu bạn đang sử dụng kho lưu trữ trung tâm mà không có bản sao lưu) ... Tôi chỉ không thấy làm thế nào điều này có thể ...
Dean Harding

Câu trả lời:


27

Giả sử MS mất nguồn cho Windows Phone 7 ... mọi người đã bị giết vì waaaaay ít hơn 400 triệu đô la ước tính để phát triển nó.

Tùy thuộc vào sản phẩm, không có thuật ngữ nào tôi có thể nghĩ đó là 'quá mạnh'.


1
Nếu họ đang bán phần mềm và không có mã nguồn cho nó, vâng, nó không đủ năng lực. Tuy nhiên, là một nhà phát triển phần mềm tùy chỉnh, thật đáng ngạc nhiên khi tôi thường xuyên chạy qua các công ty nhỏ do những người không phải lập trình viên điều hành phát triển và thậm chí không có bản sao mã nguồn có thể xây dựng cho phần mềm họ đang bán.
Bob Murphy

1
Và không chỉ các công ty nhỏ làm điều đó. Công ty tư vấn của tôi đã từng làm rất nhiều công việc cho Informix, mà hồi đó là một đối thủ cạnh tranh khả thi với Oracle. Họ quyết định chuyển một trong các dự án của chúng tôi sang một công ty gia công Ấn Độ và một ngày nọ, người quản lý gọi chúng tôi: "Bạn đã không gửi cho chúng tôi nguồn!" "Có, chúng tôi đã làm, đó là vào ngày X (khoảng một năm trước) và đây là số theo dõi của FedEx. Bạn có bị mất không?" "Tất nhiên là không rồi." "Không sao nếu bạn đã làm thế, bởi vì chúng tôi có thể lấy nó từ kho lưu trữ của chúng tôi, nhưng sẽ có một khoản phí." "Không, đừng bận tâm." Chúng tôi phát hiện ra sau đó họ đã thực sự mất nó.
Bob Murphy

18

Đối với một công ty, điều này giống như mất đi viên ngọc quý. Nếu đó là một sản phẩm có bộ xử lý nhúng thì họ có thể tiếp tục làm cho sản phẩm "như hiện tại" nhưng họ mất khả năng cải thiện sản phẩm hoặc khắc phục mọi sự cố.

Trong thị trường hiện nay một công ty nó chỉ IP. Mất điều đó và nó đi ra khỏi kinh doanh.


13

Như những người khác đã lưu ý, điều này có khả năng nằm trong tiêu đề "tất cả phụ thuộc", do đó, một vài kịch bản:

Nguồn cho một trò chơi video trên bàn điều khiển, dựa trên đĩa - Điều này có thể sẽ ít ảnh hưởng đến công ty vì họ có xu hướng không thực hiện bất kỳ thay đổi nào đối với trò chơi một khi nó đã bị ghi vào đĩa. Cứ cho là họ có thể mất một thời gian nếu có mã thư viện mà họ phải phát triển lại, nó sẽ không tệ đến thế.

Nguồn cho một trò chơi video có thể tải xuống - Điều này có thể sẽ tệ vì khách hàng có thể sẽ mong đợi rằng các lỗi sẽ được vá, không thể làm như vậy có thể khiến khách hàng mất niềm tin vào công ty có thể gây ảnh hưởng xấu đến các bản phát hành trong tương lai.

Nguồn cho một trò chơi đang phát triển - Hầu hết các công ty trò chơi video không thể để mất mã cho một trò chơi hiện đang phát triển trừ khi nó còn quá sớm trong chu kỳ phát triển (tức là vài ngày, có thể là vài tuần vào nó.) Đối với một công ty nhỏ, mất nguồn cho phát hành hàng đầu của họ có thể khiến họ ra khỏi kinh doanh.

Nguồn cho một ứng dụng doanh nghiệp nhỏ với đối tượng phát hành hạn chế - Không có khả năng gây ra bất kỳ vấn đề nào cho công ty, mặc dù họ có thể mất một vài khách hàng.

Nguồn cho một ứng dụng kinh doanh lớn với đối tượng phát hành hạn chế - Một tình huống khác có thể khiến công ty ngừng hoạt động do mất niềm tin từ khách hàng của họ. Ngay cả ở hầu hết các thị trường nhỏ cũng có xu hướng có nhiều hơn một công ty hoạt động và điều này có thể đủ để doanh nghiệp chuyển sang đối thủ cạnh tranh.

Nguồn cho một ứng dụng lớn từ một công ty lớn - Đây là nơi mà tất cả thực sự phụ thuộc và có thể sẽ dựa trên cơ sở từng trường hợp rất hẹp. Các sản phẩm hàng đầu (ví dụ: Microsoft Windows) thường có hợp đồng hỗ trợ liên quan đến chúng và không thể hỗ trợ sản phẩm có thể dẫn đến vi phạm các vụ kiện hợp đồng. Nếu tôi phải đưa ra một ước tính, tôi sẽ nói rằng hầu hết những người liên quan đến việc mất mã lên đến sự lãnh đạo cấp cao của những người đó có thể cần phải tìm kiếm việc làm mới.

Tuy nhiên, trên khắp hội đồng quản trị, tôi có khả năng nói rằng người mất mã sẽ tìm kiếm một công việc mới (và có thể khó tìm được việc đó!) Và họ cũng có thể phải đối mặt với các vụ kiện từ công ty.


Thông thường sử dụng lại phần lớn mã nguồn của trò chơi đã phát hành trước đó khi phát triển trò chơi tiếp theo - đặc biệt là khi phát triển phần tiếp theo của nó. Tuy nhiên, với cuộc sống tương đối ngắn của các studio trò chơi, không hiếm khi nghe về những mất mát nguồn trò chơi trong những thập kỷ qua.
lau

3

Mặc dù chắc chắn có những trường hợp có thể là thảm họa, tôi nghĩ có rất nhiều trường hợp không phải như vậy (ít nhất là từ quan điểm của công ty phần mềm).

Tôi nghĩ rằng có quá nhiều biến số để đưa ra câu trả lời về việc liệu có bất kỳ hậu quả pháp lý nào không, nhưng một số câu hỏi cần xem xét để xác định điều đó sẽ bao gồm:

  • Bản chất của chương trình là gì? Nếu đó là thứ họ mất vì các ứng dụng như nó là một tá và nó không quan trọng , vậy thì sao? Nếu đó là sản phẩm thương mại hàng đầu của công ty, họ chỉ thực sự làm hại chính mình. Nếu đó là phần mềm tùy chỉnh mà họ đã được ký hợp đồng xây dựng, đó là nơi có thể trở nên thú vị, nhưng họ phải hỏi ...
  • Ai sở hữu bản quyền của mã? (Nếu khách hàng giữ bản quyền, thì tài sản của họ đã bị mất / bị phá hủy)
  • Là khách hàng đang bị tổn hại tích cực bởi sự biến mất của mã?
  • Có hợp đồng nào được thực hiện liên quan đến sự phát triển trong tương lai sẽ bị vi phạm do sự biến mất của mã không?
  • Làm thế nào quan trọng là nó có thể tạo lại phần mềm hiện có? Nếu đó là một cái gì đó giống như một kịch bản shell để thực hiện các nhiệm vụ bảo trì, thì công ty phần mềm dành thời gian để tạo ra một kịch bản mới thực hiện những điều tương tự. Nếu đó là một bộ văn phòng, phủi bụi sơ yếu lý lịch.

Và tôi chắc chắn có rất nhiều yếu tố khác cần được xem xét. Hãy thêm vào.

Bây giờ, tôi đã nói "từ quan điểm của công ty phần mềm." Nó có thể vẫn là thảm họa trong tâm trí khách hàng vì những kế hoạch họ đã có cho những thay đổi, cải tiến hoặc không có gì. Mặc dù vậy, một hợp đồng cho những thứ đó hoặc quyền sở hữu bản quyền, tuy nhiên, nó có thể khiến khách hàng tức giận nghiêm trọng, nhưng không có nghĩa vụ nào đối với nhà phát triển ngoài việc làm những gì họ có thể để duy trì quan hệ khách hàng tốt.


Và để mở rộng hơn nữa về "quan điểm của khách hàng", những gì tôi nhận được là, tôi không biết câu chuyện đằng sau câu hỏi là gì, nhưng sẽ không có gì lạ khi khách hàng nghĩ rằng họ đã hiểu có quyền mong đợi mã nguồn được bảo vệ như Fort Knox trong khi nhà phát triển coi đó là "vứt đi" khi khách hàng không yêu cầu bất kỳ sửa đổi hoặc công việc bổ sung nào trong ba năm kể từ khi triển khai.
Blumer

Lưu ý rằng làm những việc khiến khách hàng tức giận nghiêm trọng cũng có thể vi phạm hợp đồng và có thể hành động hợp pháp. Nó cũng có thể dẫn đến việc khách hàng phàn nàn công khai.
David Thornley

3

Ah, đưa ra sự làm rõ này từ bạn (trong các ý kiến):

Nó đã được phát triển từ lâu, không có kiểm soát nguồn, họ đã bán nó suốt thời gian này và bây giờ đột nhiên họ cần cập nhật nó

Trong tình huống cụ thể này , tôi có thể nói đó có lẽ không phải là ngày tận thế. Cho rằng họ đã bán phần mềm trong nhiều năm mà không cần mã nguồn, sau đó bạn chỉ cần nói với một khách hàng này đang yêu cầu cập nhật, "xin lỗi không thể làm được".

Bây giờ đừng hiểu lầm tôi, mất mã là không tốt. Sẽ rất tốn kém cho công ty của bạn để viết lại hoặc thiết kế ngược phiên bản gốc (nếu đó là những gì họ quyết định làm). Nhưng đó không phải là ngày tận thế. Họ rõ ràng đã sống sót lâu như vậy mà không cần mã, vì vậy họ có thể tiếp tục tồn tại mà không cần nó.

Tất nhiên, điều này là giả sử rằng phần mềm họ đang bán chỉ là một phần nhỏ trong hoạt động kinh doanh của họ. Mà tôi đoán phải là trường hợp ...


Vâng, đó chỉ là một trong nhiều sản phẩm họ bán
JoelFan

Đó không chỉ là 1 khách hàng ... nó sẽ không còn hoạt động trên phiên bản mới nhất của HĐH
JoelFan

1

Miễn là họ vẫn có thể bán sản phẩm, tôi không nghĩ họ gặp rắc rối. Bây giờ, nếu họ theo hợp đồng với khách hàng để gia hạn sản phẩm và cung cấp một số tính năng mới nhất định trong phiên bản tiếp theo, điều đó nghiêm trọng hơn nhiều vì điều đó khiến họ vi phạm các hình phạt hợp đồng. Nhưng tôi không nghĩ rằng có một vấn đề pháp lý với việc mất mã.

Điều này không có nghĩa là nó không phải là một thảm họa tuyệt đối cho công ty. Nhưng đó là một thảm họa tài chính; không phải là một pháp lý. Có lẽ tôi sẽ bắt đầu với thuật ngữ "không đủ năng lực" và làm việc theo cách của tôi từ đó.


-1: "Tôi không nghĩ họ gặp rắc rối" Họ không thể sửa lỗi, vá lỗi hoặc thay đổi khi Microsoft "nâng cấp" hệ điều hành. Họ hoàn toàn cam chịu với một cơ sở khách hàng đang suy giảm nhanh chóng và doanh số mới duy nhất sẽ là hoàn thành những kẻ ngốc. (Một dân số khác không, nhưng một người không có nhiều tiền để chi cho sfotware.)
S.Lott

@ S.Lott: Điều gì có thể quan trọng hơn, họ thậm chí không thể biên dịch lại. Nếu bất cứ điều gì thay đổi trong môi trường của khách hàng, phần mềm sẽ không hoạt động.
David Thornley

1

Thành thật mà nói, tôi nghĩ rằng nó phụ thuộc vào ngôn ngữ được sử dụng. Nếu bạn mất một cơ sở mã C #, nó có thể bị dịch ngược cực kỳ dễ dàng, nhưng nếu bạn mất một cơ sở mã C ++, điều đó còn tồi tệ hơn nhiều.


Được dịch ngược đến mức nó vẫn có thể được xây dựng và chạy, nhưng liệu nó có còn được duy trì?
Jay

3
Nếu bạn tuân theo thực hành mã hóa tốt, thì bằng mọi cách, . Tất cả các tên phương thức và trường được bảo tồn, ngay cả tên riêng. Nếu các phương thức ngắn, thì mục đích của các biến cục bộ nên rõ ràng. Các thủ thuật trình biên dịch như các phương thức ẩn danh và các trình vòng lặp có thể trông đáng sợ, nhưng có thể được đảo ngược (nếu cần) với một số công việc. Và ngay cả khi lắp ráp bị xáo trộn, vẫn nên có một phiên bản gỡ lỗi được đặt ở đâu đó .
Lưu ý đến bản thân - nghĩ về một cái tên

Trừ khi mã duy nhất bạn có bị xáo trộn, trong trường hợp đó, nó sẽ là một chút đau đớn.
MIA

1

Nếu từ đó được đưa ra, thì, bất kỳ nhà cung cấp nào có thể mất mã nguồn bằng bất kỳ phương tiện nào khác ngoài thảm họa khá phổ biến rõ ràng là không tuân theo bất cứ điều gì như thực tiễn phát triển âm thanh và không đáng tin cậy. Tôi coi đó là bằng chứng prima facie rất mạnh về sự bất tài của công ty.

Làm thế nào về "sự ngu ngốc đáng kinh ngạc"?


0

Tôi muốn so sánh nó với các công việc khác yêu cầu xây dựng một hạng mục. Có khả năng một cái gì đó vật lý. ví dụ: Nếu một kiến ​​trúc sư bị mất các kế hoạch cho một tòa nhà được xây dựng; Nếu một công ty ô tô bị mất các kế hoạch cho một mô hình xe hơi; Nếu một thợ may bị mất mẫu cho một bộ trang phục họ đã làm; Vân vân.

Có nhiều công việc có sự so sánh vật lý giống như việc tạo ra phần mềm.


Ngoại trừ việc các kế hoạch thường không quan trọng. Nếu kiến ​​trúc sư mất các kế hoạch, một người khác vẫn có thể giám sát các thay đổi đối với tòa nhà. Nếu một công ty ô tô mất kế hoạch, những chiếc xe của họ vẫn có thể lái xe trên những con đường có mặt đường mới được phát triển. Nếu tôi mất mã nguồn, tôi không thể thay đổi chương trình theo bất kỳ cách quan trọng nào và tôi không thể biên dịch lại để chạy trên hệ điều hành mới hoặc với phiên bản mới hơn của thư viện.
David Thornley

@David: Tôi không nghĩ bạn hiểu sự tương tự của tôi. Nếu một kiến ​​trúc sư mất các kế hoạch cho một tòa nhà, anh ta phải thực hiện lại các kế hoạch để xây dựng một kế hoạch mới. Tôi cũng không thấy làm thế nào một kiến ​​trúc sư khác có thể giám sát các thay đổi đối với một tòa nhà nếu họ không có kế hoạch đi ra. Bạn, hoàn toàn áp dụng tương tự ô tô. Mặc dù, bạn đã chỉ ra rằng đó là một chút song song yếu.
ếchstarr78

@ Frogstarr78: Việc thay đổi tòa nhà mà không có kế hoạch ban đầu là khả thi. Có một tòa nhà ở đó có thể được quan sát. Xây dựng một tòa nhà mới có thể sẽ cần các kế hoạch mới, mặc dù chúng có thể dựa trên những cái cũ. Các kế hoạch cho một mô hình xe hơi sẽ chỉ cần thiết cho một năm mô hình; Sau đó, có thể kiểm tra chiếc xe để biết thông tin cần thiết. Mất kế hoạch cho các đối tượng vật lý là không tốt, nhưng nó không ảnh hưởng đến khả năng sử dụng gần như mất mã nguồn.
David Thornley

@David: Tôi không đồng ý.
ếchstarr78

@David: Nghe có vẻ như bạn so sánh việc bạn vẽ lại các kế hoạch cho một ngôi nhà, hoặc một chiếc ô tô, đơn giản như xem một chương trình đang chạy và có thể thay đổi nó. Nếu chương trình được biên dịch (và có hợp lý đa nền tảng phù hợp), hoặc một chiếc xe đã được xây dựng, hoặc một ngôi nhà đã được xây dựng, bạn có thể sử dụng tất cả. Tuy nhiên, khi bạn cần thay đổi bất kỳ điều nào trong số này (như tôi đã nói chiếc xe là ví dụ hàng tuần ở đây), bạn sẽ cần có kế hoạch để làm điều đó. Tôi không nói những ví dụ này là hoàn hảo, nhưng họ đưa khái niệm này vào một lĩnh vực vật lý và quen thuộc với hầu hết mọi người.
ếchstarr78

0

Tôi nghĩ ngoài việc tùy chọn dịch ngược mã, đây sẽ là một vấn đề khá lớn khi cho rằng công ty dự định tiếp tục tiếp thị sản phẩm phần mềm. Nếu đó là một ứng dụng nội bộ thì điều tương tự sẽ đúng ở mức độ thấp hơn.

Nếu bạn không thể khôi phục mã nguồn thì việc bảo trì (sửa lỗi) và các cải tiến không thể được thực hiện để ứng dụng hiện ở trạng thái tĩnh. Nếu Microsoft hoặc Apple hoặc Apache hoặc bất cứ ai nền tảng điều hành của bạn thay đổi hoặc nâng cấp mã của họ thì mã được biên dịch cũ của bạn có thể không hoạt động và bạn không thể sửa nó. Nếu bạn đang bán ứng dụng này cho các khách hàng bên ngoài, bạn không thể kiểm soát khi họ sẽ nâng cấp Windows, MAC OSX, iPhone, Trình duyệt web của bạn để bạn có một rủi ro khá lớn ở đây đối với danh tiếng của công ty và có thể là rủi ro pháp lý nếu bạn có hợp đồng bảo trì với khách hàng

Thứ hai, mã nguồn đại diện cho một tài sản cho công ty. Vì vậy, đối với một công ty phần mềm, nó là một tài sản trên sổ sách. Đó là thứ bạn có thể bán dưới dạng sản phẩm hoặc bán mã nguồn và tất cả các quyền cho một công ty phần mềm khác. Tôi sẽ không tiếp tục bán một sản phẩm phần mềm cho khách hàng mà tôi biết rằng tôi không thể duy trì vì tôi đã mất mã nguồn. Hơn nữa tôi nghi ngờ một công ty phần mềm khác sẽ mua ứng dụng và tất cả các quyền nếu họ không thể phát triển thêm sản phẩm. Vì vậy, giá trị tài sản của ứng dụng này phải được giảm.

Đối với một ứng dụng nội bộ, bạn có thể có nhiều quyền kiểm soát hơn đối với nền tảng vận hành cho ứng dụng của mình nhưng tôi vẫn sẽ tìm cách thay thế ứng dụng này nếu mã nguồn không thể được dịch ngược thành cơ sở mã có thể sử dụng để bảo trì.

Chúc mừng

Kevin

PS tôi hy vọng đây chỉ là một câu hỏi lý thuyết ... :)


-1

Nếu họ không phải sửa bất kỳ lỗi nào, thì đó có lẽ không phải là vấn đề lớn. Ví dụ: nếu công ty thực hiện các điều khiển ActiveX tùy chỉnh và họ mất nguồn vào một trong những sản phẩm kế thừa của họ, thì ai thực sự quan tâm? Sản phẩm có thể không được bảo trì tích cực và có khả năng cũng không được quảng cáo rầm rộ. Họ sẽ bán nó miễn là mọi người vẫn sử dụng ActiveX 32 bit và sau đó quên nó đi.

Điều đó nói rằng, tôi vẫn phân loại nó là sơ suất thô. Rõ ràng là không có hệ thống quản lý mã nguồn tại chỗ, đó là sự bất tài chuyên nghiệp cho một nhà phần mềm.


-1: "Nếu họ không phải sửa bất kỳ lỗi nào" Thật là một mức độ hoàn hảo tuyệt vời. Ai có phần mềm tốt? Bất kỳ ai?
S.Lott

1
"Không phải sửa lỗi"! = "Không có lỗi". Rất nhiều công ty tiếp tục bán phần mềm EOL với một danh sách các lỗi đã biết mà họ không có ý định sửa. Giống như trình điều khiển USB cho Win98 - chúng ở ngoài đó, có lẽ chúng không hoàn hảo, nhưng tôi nghi ngờ bất kỳ ai đang áp dụng sửa lỗi.
TMN
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.