Наскільки серйозно втрачає вихідний код? [зачинено]


9

Якщо програмна компанія втрачає вихідний код одного з продуктів, які вони продають, наскільки це серйозно, з точки зору ви можете пояснити мирянину? Чи був би термін "груба недбалість" занадто сильним? Або "груба некомпетентність"? Очевидно, нікого не вбили, але хіба це не так серйозно, як якась фінансова недбалість, за яку люди отримують в'язницю?

EDIT: Скажімо, це не випадок збою дискового диска, стихійного лиха чи чогось подібного. Просто вони це неправильно замінили.


37
За цим питанням стоїть історія, і я так хочу її почути. Я просто зачекаю, поки він з’явиться на Daily WTF.
BlairHippo

4
@Josh K - погана аналогія! Дитину неможливо замінити. Вихідний код може. (і я серйозно похитнувся, якщо ви вважаєте, що source_code == дитина). Але, я здогадуюсь, у вас його немає (поки).
Грак

6
@Rook: Чому це погана аналогія? Вихідний код неможливо точно замінити, він може бути реплікувати лише аналогічно. Зрозуміло, це не настільки екстремально, як втратити дитину, але подібність все одно звучить.
Джош К

6
@Rook: Ви пропускаєте пункт про те, що хоча один (діти), очевидно, набагато важливіший за вихідний код, володіння обома все ще дуже цінується. Ви відхиляєте мою аналогію, оскільки дітям важливіше, ніж вихідний код, це було б як звільнення Yahoo! як пошукова компанія, тому що Google набагато більший. Моя думка полягає в тому, що обидва є величезними, той факт, що одне ~ 10x є значимим / важливим, ніж інший, не має значення. Скажіть що, звільніть сховище (та всі копії коду) для основного додатку ваших компаній та поверніться до мене через 5-10.
Джош К

5
Я не розумію, як може бути в першу чергу лише одна копія, яку потрібно "помістити"? Я , як правило, по крайней мере , два або три копії себе в різних стадіях виправлень, оновлень і виправлень , які я працюю. Мої колеги мали б свої копії. У гіршому випадку ви можете втратити історію у своєму сховищі джерел (якщо ви використовуєте центральне сховище без резервного копіювання) ... Я просто не бачу, як це можливо ...
Дін Хардінг,

Відповіді:


27

Скажімо, MS втрачає джерело для Windows Phone 7 ... люди були вбиті за waaaaay менше, ніж приблизно 400 мільйонів доларів, що коштувало на його розробку.

Залежно від продукту, не існує терміна, який я можу вважати, що він "занадто сильний".


1
Якщо вони продають програмне забезпечення і не мають вихідного коду для цього, так, це некомпетентно. Однак, як власний розробник програмного забезпечення, дивно, як часто я натрапляю на невеликі компанії, якими керують непрограмісти, які передали в оренду свої розробки, і навіть не мали збірних копій вихідного коду для програмного забезпечення, яке продавали.
Боб Мерфі

1
І це роблять не лише невеликі компанії. Моя консалтингова фірма робила багато роботи для Informix, який ще в той час був життєздатним конкурентом для Oracle. Вони вирішили перенести один із наших проектів в індійську аутсорсингову фірму, і одного разу менеджер зателефонував нам: "Ви не надіслали нам джерело!" "Так, ми це зробили, це було на даті X (приблизно рік тому), і ось номер відстеження FedEx. Ви втратили його?" "Ні, звичайно, ні". "Це нормально, якщо ви це зробили, тому що ми можемо отримати його з наших архівів, але плата буде заплачена". "Ні, не турбуй". Ми дізналися пізніше, що вони справді її втратили.
Боб Мерфі

18

Для компанії це як втрата коронних коштовностей. Якщо це продукт із вбудованим процесором, вони можуть продовжувати робити продукт "таким, як є", але вони втрачають можливість вдосконалити його або виправити будь-які проблеми.

На сучасних ринках компанія IS це IP. Втрачайте це, і воно виходить з бізнесу.


13

Як зазначають інші, це, ймовірно, підпадає під заголовок "все залежить", тому пара сенаріїв:

Джерело для дискової консольної відеоігри - це, мабуть, мало вплине на компанію, оскільки вони, як правило, не вносять жодних змін у гру, як тільки вона буде записана на диск. Зрозуміло, що вони можуть втратити деякий час, якщо є код бібліотеки, який вони повинні переробити, це було б не так вже й погано.

Джерело для завантажуваної відеоігри - Це, ймовірно, буде погано, оскільки клієнти, ймовірно, очікують, що помилки будуть виправлені, не в змозі зробити це може призвести до того, що клієнти втратять віру в компанію, що може негативно вплинути на майбутні випуски.

Джерело для гри в розробці - Більшість компаній, що займаються відеоіграми, не можуть дозволити собі втратити код для гри, яка зараз знаходиться в розробці, якщо це надзвичайно рано в циклі розробки (тобто дні, а може й тижні). Для невеликої компанії втрачаючи джерело оскільки їх флагманський випуск може змусити їх припинити свою діяльність.

Джерело для додатків для малого бізнесу з обмеженою аудиторією випуску - навряд чи це спричинить проблеми для компанії, хоча вони можуть втратити пару клієнтів.

Джерело для великого бізнес-додатку з обмеженою аудиторією випуску - Ще одна ситуація, коли це може призвести до припинення роботи компанії через втрату віри від своїх клієнтів. Навіть на більшості малих ринків, як правило, працює більше ніж одна компанія, і цього може бути достатньо, щоб бізнес перейшов до конкурента.

Джерело для великої програми від великої компанії - Ось, де це насправді все залежить і, швидше за все, це буде в дуже вузьких випадках. Флагманські продукти (наприклад, Microsoft Windows), як правило, пов’язані з ними контракти на підтримку, і неможливість підтримки продукту може призвести до порушення контрактних позовів. Якби мені довелося дати оцінку, я б сказав, що більшості людей, причетних до втрати кодексу, аж до вищого керівництва цих людей, можливо, потрібно буде шукати нову роботу.

Однак, напевно, я можу сказати, що особа, яка втратила код, шукатиме нову роботу (і, можливо, буде важко її знайти!), І вони також можуть зіткнутися з позовами від компанії.


Звичайне використання великих частин вихідного коду гри, що вийшов раніше, при розробці наступної гри, особливо при розробці її продовження. Однак, враховуючи відносно коротке життя ігрових студій, не рідко було чути про втрати джерел ігор протягом останніх десятиліть.
витер

3

Хоча, безумовно, є випадки, коли це може бути катаклізмом, я думаю, що є багато, де цього немає (принаймні, з точки зору програмної компанії).

Я думаю, що існує занадто багато змінних, щоб дати чітку відповідь щодо того, чи є якісь правові наслідки, однак кілька питань, які слід врахувати при визначенні, що включатиме:

  • Яка природа програми? Якщо це щось, що вони втратили, тому що таких програм, як це десяток, не важливо , і що? Якщо це флагманський комерційний продукт компанії, вони завдали шкоди лише собі. Якщо це власне програмне забезпечення, яке вони уклали за контрактом, саме там воно може стати цікавим, але у вас це потрібно запитати ...
  • Хто володів авторським правом на код? (Якщо замовник володіє авторським правом, то його майно, можливо, втрачено / знищено)
  • Чи активно клієнту шкодить зникнення коду?
  • Чи були укладені договори щодо майбутньої розробки, які будуть порушені внаслідок зникнення коду?
  • Наскільки важливо вміти відтворити наявне програмне забезпечення? Якщо це щось на зразок сценарію оболонки для виконання завдань з технічного обслуговування, компанія-виробник програмного забезпечення витрачає час, необхідний для створення нового, який робить те саме. Якщо це офісний набір, запиліть резюме.

І я впевнений, що є багато інших факторів, які варто враховувати. Не соромтеся додавати.

Тепер я сказав "з точки зору програмної компанії". Це все ще може бути катастрофічним для розуму замовника через плани, які вони мали для змін, удосконалень чи чогось іншого. Контракт на такі речі або право власності на авторські права, хоча це може серйозно розлютити замовника, але без будь-яких зобов'язань з боку розробника, окрім того, щоб зробити все можливе для підтримання хороших відносин із клієнтами.


А для подальшого розширення розрізу "точки зору клієнта", що я отримую, я не знаю, яка історія стоїть за цим питанням, але це було б не чутно, щоб клієнт думав, що у них є Право сподіватися на те, що вихідний код буде захищений як Fort Knox, тоді як розробник вважає його "викинутим", коли за три роки з моменту замовник не вимагав жодних модифікацій чи додаткових робіт.
Блюмер

Зауважте, що виконання речей, які серйозно гнівають клієнта, також може бути порушенням договору та юридично прийнятним. Це також може призвести до того, що замовник публічно скаржиться.
Девід Торнлі

3

Ах, враховуючи це уточнення від вас (у коментарях):

Він був розроблений дуже давно, без контролю джерел, вони продавали його весь цей час і тепер раптом їм потрібно оновити його

У цій конкретній ситуації я б сказав, що це, мабуть, не кінець світу. Зважаючи на те, що вони продають програмне забезпечення протягом багатьох років, не потребуючи вихідного коду, ви можете просто сказати цьому клієнту, який вимагає оновлення: "Вибачте, що не можу зробити".

Тепер не зрозумійте мене, втратити код - це не добре. Вашій компанії буде дуже дорого переписати або реверсувати інженеру оригінальну версію (якщо це вони вирішили зробити). Але це ще не кінець світу. Вони, очевидно, вижили так довго, не потребуючи коду, тому, ймовірно, продовжують виживати без нього.

Це, звичайно, передбачає, що програмне забезпечення, яке вони продають, є лише невеликою частиною їхнього бізнесу. Я думаю, мабуть так ...


Так, це лише один із багатьох продуктів, які вони продають
JoelFan

Це не лише 1 клієнт ... він більше не працюватиме над останнім випуском ОС
JoelFan

1

Поки вони все ще можуть продати товар, я не думаю, що вони в біді. Тепер, якщо вони укладають договір з клієнтом про розширення продукту та надання певних нових функцій у наступній версії, це набагато серйозніше, оскільки він налаштовує їх на порушення договору. Але я не думаю, що існує проблема з втратою самого коду.

Це не означає, що це не є абсолютним лихом для компанії. Але це фінансова катастрофа; не є юридичним. Я, мабуть, почав би з терміна "груба некомпетентність" і працював звідти.


-1: "Я не думаю, що у них проблеми" Вони не можуть виправити помилки, виправити або змінити, коли Microsoft "оновить" операційну систему. Вони повністю приречені на швидко зменшується базу клієнтів, і єдиним новим продажем буде завершення ідіотів. (Ненульове населення, але без грошей, які потрібно витратити на sfotware.)
S.Lott

@ S.Lott: Що може бути важливіше, вони навіть не можуть перекомпілювати. Якщо в середовищі замовника щось зміниться, програмне забезпечення не працюватиме.
Девід Торнлі

1

Якщо чесно, я думаю, що це залежить від мови, що використовується. Якщо ви втратите кодову базу C #, її можна декомпілювати надзвичайно легко, але якщо ви втратите C ++, це набагато гірше.


Декомпілювались до того, де його можна було ще побудувати та запустити, але чи все-таки це було б реконструйованим?
Джей

3
Якщо ви дотримувались належної практики кодування, то, безумовно, так . Усі назви методів і полів збережені, навіть приватні. Якщо методи короткі, то призначення локальних змінних має бути очевидним. Прийоми компілятора, як анонімні методи та ітератори, можуть виглядати залякуючими, але їх можна змінити (якщо потрібно) з деякою роботою. І навіть якщо збірка була придушена, все одно десь повинна бути версія налагодження .
Зауважте, що самостійно - придумайте ім’я

Якщо єдиний у вас код не затьмарений, в такому випадку це буде більшим болем.
МВС

1

Якщо слово про це вийшло, ну будь-який постачальник, який міг втратити свій вихідний код будь-яким іншим способом, крім досить розповсюдженої катастрофи, очевидно, не дотримується нічого подібного до здорових практик розробки, і йому не можна довіряти. Я вважаю, що це дуже сильне підтвердження фактів грубої некомпетентності.

Як щодо "неймовірної дурості"?


0

Я б порівнював це з іншими роботами, які вимагають побудови предмета. Ймовірно, щось фізичне. Наприклад, якщо архітектор втратив плани будівлі, яка була побудована; Якщо автомобільна компанія втратила плани щодо моделі автомобіля; Якщо швачка втратила візерунок для зробленого ними вбрання; тощо.

Є багато завдань, які мають фізичні порівняння для порівняння зі створенням програмного забезпечення.


За винятком того, що плани зазвичай не такі важливі. Якщо архітектор втратить плани, інший все ще може наглядати за змінами в будівлі. Якщо автомобільна компанія втратить свої плани, її автомобілі все одно можуть їздити по дорогах з нещодавно розробленим тротуаром. Якщо я втрачу вихідний код, я не можу змінити програму жодним суттєвим чином і не можу перекомпілювати її для запуску в новій операційній системі або з новою версією бібліотеки.
Девід Торнлі

@David: Я не думаю, що ти зрозумів мою аналогію. Якщо архітектор втрачає плани будівлі, він повинен повторно скласти плани, щоб побудувати новий. Я також не бачу, як інший архітектор може наглядати за змінами будівлі, якщо вони не планують виїжджати. Ви абсолютно не застосовували автомобільну аналогію. Хоча, ти все-таки зазначив, що це все одно була слабка паралель.
frogstarr78

@ frogstarr78: Змінити будівлю можливо без оригінальних планів. Там є будівля, яку можна спостерігати. Будівництво нової будівлі, ймовірно, вимагатиме нових планів, хоча вони можуть базуватися на старих. Плани на модель автомобіля знадобляться лише на один модельний рік; після цього можна оглянути автомобіль на предмет необхідної інформації. Втрата планів фізичних об’єктів не є доброю, але це не впливає на зручність використання майже настільки ж, як і втрата вихідного коду.
Девід Торнлі

@David: Я не згоден.
frogstarr78

@David: Мені це здається, що ти порівнюєш повторне складання планів на будинок або автомобіль настільки ж просто, як бачити запущену програму і вміти її змінити. Якщо програма складена (і так розумно сумісні з платформами), або машина вже побудована, або будинок вже побудований, ви можете використовувати їх усі. Однак, коли вам потрібно змінити будь-яку з цих речей (як я вже сказав, автомобіль - це найбідніший приклад тут), вам знадобляться плани. Я не кажу, що ці приклади є ідеальними, але вони вкладають концепцію у сферу чогось фізичного і звичного більшості людей.
frogstarr78

0

Я думаю, що крім можливості декомпілювати код, це було б досить великою проблемою, якщо компанія мала намір продовжувати продавати програмний продукт. Якби це була внутрішня програма, те саме було б правдою в меншій мірі.

Якщо ви не можете відновити вихідний код, тоді технічне обслуговування (виправлення помилок) та вдосконалення неможливо виконати, тому програма тепер статична. Якщо Microsoft або Apple або Apache або хтось із вашої операційної платформи змінить або оновить свій код, то ваш старий складений код може не працювати, і ви не можете його виправити. Якщо ви продаєте цю програму зовнішнім клієнтам, ви не можете контролювати, коли вони оновлять свої Windows, MAC OSX, iPhone, веб-браузер, тому ви маєте тут досить великий ризик для репутації вашої компанії та, можливо, юридичного ризику також, якщо у вас є контракт на технічне обслуговування з клієнтами.

По-друге, вихідний код є активом для компанії. Тож для програмної компанії це користь у книгах. Це щось, що ви можете продати як продукт або продати вихідний код та всі права іншій програмі. Я б не продовжував продавати програмний продукт клієнтам, я знав, що не можу підтримувати, оскільки втратив вихідний код. Далі я сумніваюся, що інша програмна компанія придбала б додаток та всі права, якби не змогла надалі розвивати продукт. Тож вартість активів цієї програми повинна бути зменшена.

Для внутрішнього внутрішнього додатка у вас може бути більше контролю над операційною платформою для вашої програми, але я все одно прагну замінити цю програму, якщо вихідний код не вдасться декомпілювати в корисну базу коду для обслуговування.

Ура,

Кевін

PS Сподіваюся, це лише теоретичне питання ... :)


-1

Якщо їм не доведеться виправляти жодних помилок, можливо, це не так вже й велика угода. Наприклад, якщо компанія робить користувальницькі елементи керування ActiveX, і вони втрачають джерело одного зі своїх застарілих продуктів, то хто насправді дбає? Цей продукт, ймовірно, не підтримується активно, і, ймовірно, також не продається агресивно. Вони продаватимуться до тих пір, поки люди все ще використовуватимуть 32-бітний ActiveX, а потім забудуть про нього.

Це сказало, що я все одно класифікую це як грубу недбалість. Очевидно, що не існує системи управління вихідним кодом, що є професійною некомпетентністю для програмного будинку.


-1: "Якщо їм не доведеться виправляти жодних помилок" Який завидний рівень досконалості. У кого таке програмне забезпечення? Хтось?
S.Lott

1
"Не потрібно виправляти помилки"! = "Немає помилок". Багато компаній продовжують продавати програмне забезпечення EOL'd зі списком відомих помилок, які вони не мають наміру виправляти. Як і USB-драйвер для Win98 - вони там, ймовірно, не ідеальні, але я сумніваюся, хто застосовує виправлення помилок.
TMN
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.