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


96

У мене є клієнт, який хотів би, щоб я доставляв вихідний код із розробленим бінарним додатком. Вони спочатку нічого не говорили про вихідний код, але нещодавно вони сказали, що це потрібно. Договір не завершений. Вони погодилися на роботу, не підписали, а потім повернулися з цією умовою.

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

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

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


18
Для чого вони потрібні? Цілком ймовірно, що вони хочуть бути впевненими лише у випадку, якщо ви припините свою діяльність. Можливо, ви можете додати ліцензування, яке обмежує використання Свого часу компанія, з якою я працювала, передала (правильне слово?) Вихідний код у юридичну компанію як захист для такої справи.
thorsten müller

33
Спеціальне програмне забезпечення повинно постачатися з вихідним кодом. Інакше це роздрібний товар. Я не думаю, що їм потрібен заморожений продукт на випадок, якщо з вами та вашим бізнесом щось станеться згодом. Але заробіть відповідно. Також розгляньте можливість ввести ваш бібліотечний код у зібрану бібліотеку (якщо вона підтримується вашою мовою), щоб вони могли змінювати програмне забезпечення, компілювати його, але не легко використовувати свою бібліотеку самостійно.
CodeAngry

14
@CodeAngry "повинен"? Ні. Тільки якщо вони заплатять потрібну суму грошей.
o0 '.

32
@CodeAngry nope. Це ваше, якщо інше не домовлено…
o0 '.

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

Відповіді:


137

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

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

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


17
Що робити, якщо Служба програмного забезпечення Escrow Service збанкрутує?
користувач11153

21
Тоді власник коду - сподіваємось - все ще є, і може доставити його код до іншої служби депонування. Послуга призначена для усунення єдиної точки відмови.
Олександр

17
Чи користуються програмним забезпеченням Escrow Services Software Code?
FreeAsInBeer

29
@FreeAsInBeer: Ні, вони використовують Програми програмного забезпечення Escrow Escrow Services. Очевидно.
nneonneo

@ Олександр, Тільки якщо повторне декретування - це договірне зобов'язання. В іншому випадку розробник знову стягне плату за другий ескроу.
Pacerier

67

"Ні" - це прекрасна відповідь, насправді це неймовірно корисна відповідь, яку я чомусь не можу зрозуміти, є дуже заниженою.

"Привіт, ми неодмінно вирішили, що хочемо також просто вихідний код, безкоштовно".
"Привіт, ні".

Насправді це не так складно.

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

Не ускладнюйте прості речі.


Чудова, лаконічна відповідь.
Морське узбережжя Тибету

26

Ваше запитання: "який найкращий спосіб обійти цю проблему?" Але в чому ви бачите проблему? Інші правильно вказали, що це питання переговорів: усе має цінність, і ви повинні дати клієнтові ціну за надання того, про що вимагається.

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

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


19

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

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


33
Але також вважають, що виявити неправильне використання вихідного коду надзвичайно складно, особливо якщо ви не шукаєте його. Не довіряйте сліпо ліцензії: для деяких людей це лише аркуш паперу.
o0 '.

1
@Lohoris, однак, якщо ви підозрюєте, що програма використовує ваш код, це зрозуміти дуже просто, незалежно від того, що це лише двійковий код. Основні навички зворотного проектування - все, що вам потрібно бути впевненим.
rev

6
-1 оскільки я не думаю, що є ваші докази для вашої претензії на "велику компанію ...", це лише здогадка.
djechlin

@Lohoris: Якщо це станеться, яка шкода вам? Кращий випадок: плакат пропонує свої послуги іншій компанії, і виявляє, що у них вже є бібліотека, якою він так пишається. Основна зарплата!
gnasher729

13

Раніше я зазвичай надавав клієнту вихідний код (бібліотеки та всі) під ліцензією MIT. Якщо ваші бібліотеки добре організовані, ви надаєте лише необхідні файли / ресурси для цього конкретного клієнта, але нічого більше. Я думаю, що це справедливо і для мене, і для клієнта. Однак завжди випускався новий код, написаний для цього конкретного клієнта за контрактом, який раніше не був частиною бібліотеки. Тому я почав обговорювати це питання з клієнтом ще до початку проекту. Деякі клієнти хотіли володіти цим кодом, інші - ні (я завжди надавав негативні стимули, як підвищення цін для тих, хто це робить). Але, дійсно, для деяких клієнтів ця дискусія була дуже заплутаною, і іноді я закінчував розмову для 3 або 5 різних людей (включаючи їх адвоката), щоб отримати проект затверджений.

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

Ключовим є: "ці компоненти - це інший товар", і все написано в договорі перед початком.

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


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

11

Спосіб вирішити це - домовитися.

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

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

Ласкаво просимо у світ бізнесу :-)


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


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


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

1
@djechlin - 1) Я не звинувачував ОП. Але якщо він не готовий вести переговори з цього питання ... тоді він >> повинен був << піднести це раніше. Очевидною і розумною вимогою для обізнаного клієнта для замовлення програмного забезпечення. 2) "Анафема" - це те, що робить ОП ... намагаючись утримати вихідний код. 3) Хоча немає жодних ознак того, що клієнт звернувся до відкритого коду (можливо, він насправді не розуміє його переваг), зрозуміло, що >> робити << хочу вихідний код, що є однією з його головних переваг OSS .
Стівен C

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

1
@dotancohen: Я сподіваюся, що вони отримають "неексклюзивну" ліцензію. Якщо у них є ексклюзивна ліцензія, ви не можете повторно використовувати код для наступного клієнта. Ви не можете мати двох клієнтів з "ексклюзивною" ліцензією на один і той же код.
gnasher729

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

5

Це може бути для вас занадто пізно, оскільки ви, можливо, вже домовились зробити це договірно, і ви могли погодитися на взаємно несумісні умови з різними клієнтами.

Є два способи, якими Ви можете надати своїм клієнтам вихідний код. Право власності на авторське право та ліцензію.

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

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

Однак ситуація в цьому питанні - це суперечка двох.

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

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

Пам'ятайте, існують різні типи бібліотек. Стандартна бібліотека шаблонів в C ++ - хороший приклад бібліотеки, яка включена на рівні вихідного коду і складена у виконуваний проект, який може бути досить схожим на те, як ви використовували ваш загальний код.


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

0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.