Перейти к содержимому


Фотография
- - - - -

Хитрая передача исключительных прав на программный код


Сообщений в теме: 32

#1 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 12:59

Мы пишем компьютерные программы и большинство из них просто продаем по лицензии, но иногда попадаются крупные заказчики типа администрации города или какие-нибудь московские фпг, которые требуют исходники и исключительные права. С этим проблем нет, если надо продаем и исходники и исключительные права.

И тут возник один интересный вопрос. Преамбула этого вопроса изложена в этом посте http://forum.yurclub...50#entry4437601

Кратенький предметный ликбез

Если мы берем исходники любой программы, то там будут функции высокой абстрации, как бы на все случаи жизни и будут функции высокой конкретики, которые кроме как в этом продукте больше нигде и не нужны.

например функция, которая по ключу сначала проверяет есть ли в списке эта запись, если есть, то возвращает её, если нет, то возвращает пустую строку

string safeGet(stringHash list, string key)
{
return list.contains(key) ? list[key] : "";
}

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

и более того, если бы например даже мы продадим эту функцию в составе исходников, на которые мы продали исключительные права, то если мы захотим написать себе снова эту функцию, то иначе как вот так, мы больше её никак и не напишем

единственное, что тут можно менять - это сигнатуры, то есть имя функции и имена переменных

например

string safe_get_string(stringHash listString, string keyPosition)
{
return listString.contains(keyPosition) ? listString[keyPosition] : "";
}

эта функция будет делать 100% того, что и первая. по функционалу они абсолютно идентичны

при этом обратите внимание

string и stringHash - это тоже сигнатуры, то есть реально есть некие участки кода, которые задают и их, но мы не можем их менять, потому что они прописаны в библиотеках, которые мы используем

библиотеки - это тоже некий программный код, написанный кем-то

как правило он состоит сплошь из функций высокой абстракции, что собственно говоря и делает эти библиотеки пригодными для повторного использования в самых разных проектах

библиотеки бывают платные и бесплатные (опенсорсные от англ. open source)

сигнатуры string и stringHash расположены в опенсорсной библиотеке, то есть при использовании мы ничего платить не должны, но и вносить изменения мы не можем, причем тут даже дело не в юридическом аспекте, а тупо, если переименовать string например my_super_string, то могут вылезти какие-то скрытые ошибки, все упадет или будет работать криво, а копаться во внутренностях чужой библиотеки - это такая форма мазохизма с точки зрения трудозатрат)))

ну и в завершении предметного ликбеза приведу пример функции низкой абстракции

milkFarmCode getMilkFarmCode(string companyId)
{
return packMilkFarmCode(dataServer()->getCompanyName(companyId) + "_farm");
}

ну вот есть такая функция в конкретном проекте и эта функция никогда больше нигде кроме как в этом проекте использоваться не будет вообще не потому, что это технические невозможно, а потому что в программе для строителей или в программе для логистической компании функция получения кода молочной фермы не нужна)))

Варианты действий

Теперь собственно по ситуации.

Если мы передаем код вместе с исключительными правами (т.е. продаем все с потрохами), то на функции низкой абстракции нам наплевать, то есть про функцию getMilkFarmCode() мы можем смело забыть, но вот что касается функций высокой абстракции, то тут как бы наплевать не получается, потому что мы точно знаем, что нам без неё никак не жить.

Классика: выделение движков.

Есть у нас в отрасли такое действие под названием "выделение движка" или "создание двигателя"

О чем речь?

Да просто разработчик берет сгребает все эти функции высокой абстракции в отдельную кучу и называет её движком. По сути он создает свою отдельную библиотеку, предназначенную для повторного использования.

Как я уже приводил пример, мы используем сторонюю библиотеку в которой живут сигнатуры string и stringHash, так и тут мы можем выделить нашу функцию safeGet() и другие подобные функции высокой абстракции в отдельную папку и назвать их движком. А потом таскать этот движок из проекта в проект.

Некоторые команды разработчиков поступают даже так: они выкладывают полученный движок в открытый доступ под свободной лицензией, чтобы все могли ей пользоваться и соотв., когда продают исключительные права на программный код, то они пишут, что заказчик сам получает лицензию на движок, который распространяется бесплатно и лежит там-то, тыры пыры.

Кто-то движок не выкладывает, а его только лицензирует, то есть выписывает разрешение на использование двигателя, но права на двигатель сохраняет у себя.

Бездвижковый вариант.

Чисто практически провести границу, где заканчивается движок, а где начинается код высокой абстракции... провести такую границу очень сложно, она постоянно плавает. То, что сегодня было конкретным, уже завтра стало абстрактным, а то, что вчера было абстрактным, оказалось, что не такое оно и абстрактное, а использовалось всего один раз только в конкретном случае и больше нафиг никому не надо. То есть выделение двигателя - это всегда такая чисто условная процедура.

Мне кажется, что юристам должно быть это очень понятно, потому что составление договоров - это тоже чем-то похоже на программирование. Бывают некоторые формулировки, которые кочуют из договора в договор, а бывают чисто только под конкретный случай.

Но в нашем случае, выделение движков, мучения с лицензиями и вся сопутствующая этому организация - это слишком затратная процедура, чреватая высоким риском ошибок. Поэтому сейчас мы размышляем на тему как можно с одной стороны передать заказчику проект с потрохами, а с другой стороны, не лишать себя возможности пользоваться очевидными паттернами типа функции safeGet(), пример которой я привел выше.

Тело этой функции настолько очевидно, что по другому как-то реализовать просто не получится. Если запись есть, то возвращаем запись, если нет, то возвращаем пустую запись. Это банально, это просто, это очевидно.

Более того, это насколько очевидно, что я убежден, что во многих проектах разных команд разработчиков по всему миру, не связанных друг с другом и не знающих о существовании друг друга в их проектах есть вот эта самая функция, только у каждого она называется по-разному, но я не исключаю, что названия могут при этом повторяться, потому что названия safeGet(), list, key это тоже очевидные названия.

Да если копнуть историю вопроса, то мы их и не придумывали, а просто их каждый программист собирает за свою карьеру, а где он их увидел, в каком из тысяч листингов, которые ему пришлось изучить за всю свою жизнь, то это уже и не вспомнить.

В итоге пока напрашивается один очень некрасивый вариант...
Мы можем автоматически (технические такая возможность есть) заменить все сигнатуры на случайные хеши.

например, мы можем превратить функцию safeGet() вот в это

string f54f65f4654f(stringHash f54f65f4, string g546g54g65)
{
return f54f65f4.contains(g546g54g65) ? f54f65f4[g546g54g65] : "";
}

и знаете, что самое веселое?
то что эта функция будет отлично работать, потому что компьютеру глубоко пофиг на красоту сигнатур, это только нам людям важно чтобы были понятные сигнатуры list, key, а компьютеру пофиг

единственное, что в этом случае будет моральное препятствие, потому что заказчику, которому мы продаем этот код вместе с исключительными правами, они скоро разместят у нас ещё один крупный заказ и если мы передадим им вот такой код, то в наших отношениях может возникнуть некая напряженность)))

Итого

Если мы не придумаем ничего лучше до 15 ноября, то запасной вариант, по которому мы собрались действовать такой:

мы проведем сигнатурные подмены на более читаемые варианты, например safeGet() можно заменить на что-то типа get_safe_position_in_list()

но

1) придумывать новые имена для всех сигнатур в проекте - это будет нехилое вскипание мозга для тех, кто это будет делать)))

2) если этот код попадет в руки специалистов компании заказчика, которые эти исходники покупает, то те обязательно почуют, что же именно было сделано с кодом, потому что и ежу понятно, что ни один программист в здравом уме и трезвой памяти не станет называть функцию высокой абстракции, которая в проекте используется сотни раз, не станет он называть её так длинно get_safe_position_in_list() и если они об этом доложат начальству, то блин опять могут возникнуть напряженности в отношениях...

поэтому может у кого-нибудь есть варианты как можно поступить в нашем случае проще?
  • 1

#2 pavelser

pavelser

    Ты настоящий Дарт Вейдер (с) Foma

  • Модераторы
  • 13576 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 14:07

Давайте попробуем рассмотреть аналогичный вариант относительно стихов.

У нас есть строчка: "наступила осень" и следующие стихи

Наступила осень. Отцвело алоэ.
У меня пропало... да не то - другое!
Выйду я на крышу, плюну-ка по ветру...
далеко асфальт-то - целых двадцать метров!

Ветки голые
стучат.
Галки чёрные
кричат.
В тучах редка
просинь.
Наступила осень.

Наступила осень. И ларек закрыли...
Я хожу без пива, как орел без крыльев.
С крыши что-то смачно плюхнулось на куртку,

Щас как поднимусь я и влеплю придурку.


То есть везде в них присутствует одна и та же строчка "наступила осень", но можно ли исходя из присутствия этой строчки сделать вывод, что 2 последних приведенных стихотворения, нарушают исключительное право автора первого стихотворения?

Сообщение отредактировал pavelser: 21 October 2012 - 14:08

  • 2

#3 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 18:30

То есть везде в них присутствует одна и та же строчка "наступила осень", но можно ли исходя из присутствия этой строчки сделать вывод, что 2 последних приведенных стихотворения, нарушают исключительное право автора первого стихотворения?


Ваша идея понятна.

Но в русском языке нет больше вариантов как ещё можно выразить этот факт реальности - "наступила осень". Разве что "пришла осень", "началась осень" - вот собственно и все варианты. Ну можно ещё наскрести "подкралась", "грохнулась", "подползла"... ну наскребем 10-15 вариантов. Если кто-то попробует придраться к автору за использование "наступила осень", то он в ответ может возразить: а как ещё я мог бы назвать этот факт, чтобы при этом быть понятным читателю? Это первый аргумент + второй метод защиты такой: наступила осень использовал ещё Пушкин. Срок охраны авторского права день смерти + 70 лет. Он умер 1837 году + 70 лет = 1907 год дата перехода этой речевой формы в публичное использование.

В мире программирования аналогом таких сигнатур, про которые можно сказать "нет больше вариантов", например, целое число, строка, массив, список - все эти сигнатуры они уже давно прописаны в библиотеках, за которые ничего не надо платить. Они все открытые и доступные.

Аналогом сборника таких стандартных библиотек в мире программирования является обычный толковый словарь.

В речи есть всего несколько вариантов как выразить, чтобы быть понятным: началась, пришла, наступила. А вот в программном коде этих вариантов как можно назвать эту функцию, чтобы быть понятным компьютеру таких вариантов миллиарды. Как я и приводил пример выше, функцию safeGet() можно назвать хоть fd564f65df46d5f() и она все равно будет работать, а глядя на её код, любой программист сможет тут же понять что именно она делает.

Более того, даже если вам кажется, что сигнатура safeGet() понятнее чем сигнатура fd564f65df46d5f(), то вы ошибаетесь. Спросите у любого программиста что делает функция safeGet() и он не сможет вам ответить. Он скажет, надо посмотреть на её внутренности. Но зато если он один раз посмотрит на внутренности и запомнит, тогда safeGet() становится намного удобнее использовать, чем fd564f65df46d5f().

Я сам не знаю насколько этот пример походит, но в моем посте речь идет о таком стихе


Воркалось. Хливкие сорьки, пыряли по нове.
И глюкотали зелюки, как мумзики в мове.

Теперь если кто-то напишет где-то "глюкотали зелюки" или "воркалось", то все сразу же поймут откуда это взялось. А вот если кто-то напишет наступила осень, то источник будет тупо не найти.
  • 0

#4 pavelser

pavelser

    Ты настоящий Дарт Вейдер (с) Foma

  • Модераторы
  • 13576 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 19:01

Сами по себе источники не будут объектом АП, объектом АП будет то, как эти источники расположены и связаны.

К объектам авторских прав также относятся программы для ЭВМ, которые охраняются как литературные произведения.

Программой для ЭВМ является представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств в целях получения определенного результата, включая подготовительные материалы, полученные в ходе разработки
То есть, охраняться будет последовательность данных и команд составляющих ПО.
  • 1

#5 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 20:24

Сами по себе источники не будут объектом АП.


ого, что-то новенькое )))

объектом АП будет то, как эти источники расположены и связаны.


переименование сигнатур (имен) переменных и функций не меняет связи. связи остаются прежними


К объектам авторских прав также относятся программы для ЭВМ, которые охраняются как литературные произведения.


вот от этого переименование сигнатур поможет

То есть, охраняться будет последовательность данных и команд составляющих ПО.


Кстати, есть интересная фишка. Компьютерная программа, написанная на языке программирования, перед выполнением подлежит компиляции или интерпретации (это как бы компиляция на лету), так вот изменение сигнатур (имен функций и переменных) не влияет на результирующий объектный код: вне зависимости от имен переменных и функций объектный код после компиляции или интерпретации будет идентичным.

например string get() { return "привет"; } после компиляции породит абсолютно тот же самый машинный код (последовательность команд процессора), что и string f789f7098f7098() { return "привет"; }

Поэтому до меня только сейчас дошло, что переименование имен функций - это полумера, снимающая риски только по аспекту "по как литературное произведение". Объектный код программы при этом остается неизменным, а значит передача кода с потрохами - это опасная процедура и придется что-то мутить с выделением движка и его лицензированием, иначе на чем мы тогда будем вести разработку других программных продуктов???... ))).
  • 0

#6 pavelser

pavelser

    Ты настоящий Дарт Вейдер (с) Foma

  • Модераторы
  • 13576 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 20:38

Вот думается мне, что вам просто нужен хороший юрист...
Настоятельно рекомендую рассмотреть вопрос с юристом если не в штате, то хотя бы на удаленке.
И тогда многие ваши вопросы отпадут сами по себе.
  • 0

#7 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 20:58

Вот думается мне, что вам просто нужен хороший юрист...
Настоятельно рекомендую рассмотреть вопрос с юристом если не в штате, то хотя бы на удаленке.
И тогда многие ваши вопросы отпадут сами по себе.


Нормальный юрист по ИС в IT стоит 50 тыс. руб. за проект. А у нас сумма сделки 240 тыс. руб.

Кроме того, юрист не заинтересован в том, чтобы у нас все было хорошо. Чем у нас больше проблем, тем для юриста лучше. Точно так же как врач не заинтересован в том, чтобы вылечить больного. Врач заинтересован в том, чтобы постоянно лечить, лечить, лечить. Точно так же как тренеры не заинтересованы в том, чтобы научить клиента. Они заинтересованы в том, что его учить, учить, учить и учить.

Я как бы не против. Я понимаю все хотят вкусно кушать и мягко спать.))) Просто по опыту прошлых лет платного сотрудничества с юристом я заметил, что при наличии юриста проблем меньше не становится.

Во всех случаях, которые у нас возникают на юридическом фронте работает пословица: если простуду лечить, то она проходит за 7 дней, если её не лечить, то она проходит за неделю.))))
  • 0

#8 pavelser

pavelser

    Ты настоящий Дарт Вейдер (с) Foma

  • Модераторы
  • 13576 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 21:05

при наличии юриста проблем меньше не становится.


При наличии хорошего юриста они просто быстрее выявляются и тогда на лечение проблемы не нужно будет тратить много денег, так как профилактика всегда стоит дешевле лечения.

А относительно вашей проблемы, то раз заплатив, вы получаете лекарство и на будущий период :)
  • 0

#9 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 21:13

При наличии хорошего юриста они просто быстрее выявляются и тогда на лечение проблемы не нужно будет тратить много денег, так как профилактика всегда стоит дешевле лечения.

А относительно вашей проблемы, то раз заплатив, вы получаете лекарство и на будущий период :)


понятно)))

Завтра позвоню заказчику, скажу, что мы не можем продать ему функции общего назначения, потому что у нас их используют вообще все проекты и что мы можем продать только часть, которая касается только конкретно их программы и попрошу заказчика спросить их юристов что те по этому поводу думают.
  • 0

#10 pavelser

pavelser

    Ты настоящий Дарт Вейдер (с) Foma

  • Модераторы
  • 13576 сообщений
Обратиться Публикации

Отправлено 21 October 2012 - 21:15

:))))))))
Ну тогда если юристы заказчика что надумают :)))) то можете отписаться тут.
Хотя думается мне проблема может решиться не очень сложно с учетом изложенного мной выше ;)
  • 0

#11 kisych

kisych
  • продвинутый
  • 971 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 03:10

daorus, Я все же думаю, что лучше четко отделить мух от котлет и передавать их отдельно. Ф-ции общего назначения должны по любому храниться отдельно (в отдельном файле/папке/etc), а в код заказчика инклюдится/импортироваться. Хорошим тоном является изоляция программных компонентов друг от друга, чтобы изменения в одном компоненте не влияли на остальной код, и вы знаете это лучше меня. А если все свалено в кучу, то с кодом что-то не то. А заниматься переименованием ф-ций и переменных как то неправильно (ошибки разные могут появиться, поддерживать неудобно будет), может проще тогда уж просто список таких общих ф-ций составить и представить их типа как API (см. обсуждение API в соседней теме)?

Сообщение отредактировал kisych: 22 October 2012 - 03:11

  • 0

#12 Concrescere

Concrescere

    A live

  • Partner
  • 13498 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 03:17

daorus, Может, Вам стоит задуматься над содержанием п. 5 ст. 1259 ГК?


5. Авторские права не распространяются на идеи, концепции, принципы, методы, процессы, системы, способы, решения технических, организационных или иных задач, открытия, факты, языки программирования.
  • 0

#13 fkaF

fkaF
  • Старожил
  • -6481 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 11:33


Вот думается мне, что вам просто нужен хороший юрист...
Настоятельно рекомендую рассмотреть вопрос с юристом если не в штате, то хотя бы на удаленке.
И тогда многие ваши вопросы отпадут сами по себе.


Нормальный юрист по ИС в IT стоит 50 тыс. руб. за проект. А у нас сумма сделки 240 тыс. руб.

очередной халявщик.

проблема решена одной фразой

Сами по себе источники не будут объектом АП, объектом АП будет то, как эти источники расположены и связаны.


. Хотя, собственно, и проблема надумана.

размазано на рубль, суть - на копейку.
  • 0

#14 korn

korn

    копираст

  • Модераторы
  • 8818 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 12:14

Foma,

очередной халявщик.

Не, это не просто халявщик.

Кроме того, юрист не заинтересован в том, чтобы у нас все было хорошо. Чем у нас больше проблем, тем для юриста лучше. Точно так же как врач не заинтересован в том, чтобы вылечить больного. Врач заинтересован в том, чтобы постоянно лечить, лечить, лечить. Точно так же как тренеры не заинтересованы в том, чтобы научить клиента. Они заинтересованы в том, что его учить, учить, учить и учить. Я как бы не против. Я понимаю все хотят вкусно кушать и мягко спать.)))
Просто по опыту прошлых лет платного сотрудничества с юристом я заметил, что при наличии юриста проблем меньше не становится.

Это агрессивный, а с учетом этого:

Во всех случаях, которые у нас возникают на юридическом фронте работает пословица: если простуду лечить, то она проходит за 7 дней, если её не лечить, то она проходит за неделю.))))

еще и неумный халявщик.
  • 0

#15 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 15:58

:))))))))
Ну тогда если юристы заказчика что надумают :)))) то можете отписаться тут.
Хотя думается мне проблема может решиться не очень сложно с учетом изложенного мной выше :wink:


Мне интересно чисто на будущее, а что имеется ввиду под халявщик??)))

Просто у нас в IT есть специализированные форумы, например, старейший и уважаемый http://www.sql.ru/forum/, где каждый может обратится с вопросом и ему как правило подскажут. Бесплатно и никто его халявщиком при этом не считает. Я и сам, если есть возможность всегда подсказываю. Да бесплатно, но ведь для этого форумы и были созданы...

А с просьбами выполнить какие-то работы бесплатно я тут не обращался...

Да, 50 тыс. руб. за сопровождение такого проекта по нашей оценке - это слишком дорого. И у нас такое бывает, что клиенты обращаются, мы выкатываем ценник, они говорят "дорого" и отказываются. Потом идут на форумы и спрашивают, может существует бесплатное решение под их задачу. И им отвечают. Да, то, что вы хотите, в принципе можно сделать в Excel, потому что у него богатые возможности. Что их теперь халявщиками называть?)))

Насчет агрессивности... опыт прошлого сотрудничества с юристами показал, что когда называется ценник 50 тыс., то это оказывается только "входной билет", а реально проект выходит существенно дороже и самое главное, такого, что заплатил и забыл - такого не бывало ещё ни разу. Нервы те же самые, точно так же приходится вникать в суть вопроса и т.д.

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

Кстати, если кому интересно чем все закончилось в реале.

Час назад юристы клиента согласились на вариант исключительные права на конкеретику + лицензия на абстракцию. Причем они даже согласились скидать это в один договор и ещё они согласились в этот же договор скидать будущие доработки конкретики и автоматическое расширение лицензии на абстракцию, которая будет поставляться вместе с доработанной конкретикой.

Сейчас наши ребята пилят проект на две части: конкретная и абстрактная, преобразуют их в два проекта, один из которых подчиненный (тот, что абстрактный) и уже к вечеру у нас программный продукт будет жить в новой форме: *.exe файл с конкретикой + *.dll к нему с абстракцией.

Вот!!

:rolleyes:
  • 0

#16 pavelser

pavelser

    Ты настоящий Дарт Вейдер (с) Foma

  • Модераторы
  • 13576 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 16:01

Ну если согласились, то это хорошо, хотя можно было обойтись и без пиления :))))
  • 0

#17 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 16:41

Ну если согласились, то это хорошо, хотя можно было обойтись и без пиления :))))


Если честно, то я не понял как это было возможно...

Я видел в теме, что ключом к этому решению является ваша магическая фраза
Сами по себе источники не будут объектом АП, объектом АП будет то, как эти источники расположены и связаны.

но что она конкретно значит и как её преобразовать в конкретные действия я так и не понял
пока что я верю, что передача исключительных прав на функцию safeGet() создаст для нас страшные риски, потому что нам без этой функции будет очень трудно работать. За долгие годы ребята привыкли к набору этих функций и если я лишу свою команду возможности ей пользоваться, то меня закопают в саду))))
  • 0

#18 Xoxol

Xoxol
  • ЮрКлубовец
  • 298 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 16:53


Ну если согласились, то это хорошо, хотя можно было обойтись и без пиления :))))


Если честно, то я не понял как это было возможно...

Я видел в теме, что ключом к этому решению является ваша магическая фраза
Сами по себе источники не будут объектом АП, объектом АП будет то, как эти источники расположены и связаны.

но что она конкретно значит и как её преобразовать в конкретные действия я так и не понял
пока что я верю, что передача исключительных прав на функцию safeGet() создаст для нас страшные риски, потому что нам без этой функции будет очень трудно работать. За долгие годы ребята привыкли к набору этих функций и если я лишу свою команду возможности ей пользоваться, то меня закопают в саду))))


Зачем изобретать велосипед, на котором уже катается весь мир? Выделение движка - самый простой и эффективный способ, спасающий Вас от головных болей. И не надо вводить людей в заблуждение, что это очень сложно технически реализовывать ))
  • 0

#19 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 20:38

И не надо вводить людей в заблуждение, что это очень сложно технически реализовывать ))


А где именно я ввел в заблуждение общественность по поводу сложности технической реализации??

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

Например, команда научилась работать с окружностью. Продала этот код как недвижковый. Потом научилась работать с прямоугольниками. Продала этот код как недвижковый. Научилась работать с треугольниками. Продала этот код как недвижковый. И только потом после опыта этих трех конкретных проектов, команду вдруг осенило, что при работе с этими фигурами, 85% кода пересекается и можно его выделить в т.н. движок и получится набор функций для работы с любыми геометрическими фигурами и когда вы захотите это сделать разумеется как все и делают - путем копирования из реального конкретного проекта, то вы вдруг вспомните, что всю конкретику вы уже продали как исключительные права, потому что в тот момент вы не знали, что внутри этого кода существует некая абстрактная часть, которую можно было выделить в движок. Вам это стало известно только после реализации трех конкретных проектов. Вот об этих рисках я и говорил, а не том, что типа нам сложно разложить файлы с кодом по разным папочкам. Я говорил о том, что потом переложить код из папки "программа" в папку "движок" вы уже не сможете, потому что вы уже продали на этот код исключительные права.
  • 0

#20 Джермук

Джермук

    Крепкий семьянин из бывших бабников

  • Старожил
  • 19225 сообщений
Обратиться Публикации

Отправлено 22 October 2012 - 22:41

Я говорил о том, что потом переложить код из папки "программа" в папку "движок" вы уже не сможете, потому что вы уже продали на этот код исключительные права.


Чтобы не попасть в эту ситуацию достаточно четко прописывать в договоре, ЧЕГО касаются проданные исключительные права. Прописывайте и прямо оговаривайте тот ОБЪЕМ прав, который Вы продаете, с его привязкой к той конкретной задаче, за разработку которой Вам заплатили. И никто не мешает в этом же договоре прямо указывать на те части, которые не передаются в отдельности как отдельные результаты, и заказчик может их использовать только в купе с той прогой, которую Вы ему исполнили. Подумайте на эту тему.

Сообщение отредактировал Джермук: 22 October 2012 - 22:41

  • 0

#21 FreeCat

FreeCat

    Админ Тёмных веков ЮК Ушел от нас навсегда

  • Ушел навсегда
  • 5396 сообщений
Обратиться Публикации

Отправлено 23 October 2012 - 04:25

Foma,

очередной халявщик.

Не, это не просто халявщик.

Кроме того, юрист не заинтересован в том, чтобы у нас все было хорошо. Чем у нас больше проблем, тем для юриста лучше. Точно так же как врач не заинтересован в том, чтобы вылечить больного. Врач заинтересован в том, чтобы постоянно лечить, лечить, лечить. Точно так же как тренеры не заинтересованы в том, чтобы научить клиента. Они заинтересованы в том, что его учить, учить, учить и учить. Я как бы не против. Я понимаю все хотят вкусно кушать и мягко спать.)))
Просто по опыту прошлых лет платного сотрудничества с юристом я заметил, что при наличии юриста проблем меньше не становится.

Угу Изображение .. а сисадмины заинтересованы чтобы компьютеры постоянно висли - и было б больше работы Изображение ... а программеры в ошибках в коде - чтобы в них была постоянно необходимость Изображение.
  • 0

#22 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 23 October 2012 - 12:27

Прописывайте и прямо оговаривайте тот ОБЪЕМ прав, который Вы продаете, с его привязкой к той конкретной задаче, за разработку которой Вам заплатили.


Знаете, есть такой анекдот.
Сидят два гаишника в машине.
Один другому:
- Саня, выйди, посмотри, мигалка работает?
Тот выходит:
- Работает, не работает, работает, не работает...

Чтобы не попасть в эту ситуацию достаточно четко прописывать в договоре, ЧЕГО касаются проданные исключительные права.


Уже прописали. Что исключительные права касаются всего кода, который не входит в двигатель. Я же вам пытаюсь сказать, что изначально сказать какой код может стать частью двигателя, а какой так навсегда и останется в конкретной программе. Изначально этого не скажешь. Точно так же как невозможно изначально узнать какой человек будет преданным надежным сотрудником команды, а какой наоборот станет головной болью. Причем ошибки бывают в обе стороны. Все думали, что Виктор - будущий директор и дали ему беспроцентный кредит за счет компании, а Виктор оказался дерьмом и перебежчиком. Зато Оленька, которой даже премию не давали, наоборот стала лидером, которая вытащила на себе организацию всех крупных проектов.

И никто не мешает в этом же договоре прямо указывать на те части, которые не передаются в отдельности как отдельные результаты, и заказчик может их использовать только в купе с той прогой, которую Вы ему исполнили. Подумайте на эту тему.


Так это и есть решение с выделением двигателя. О чем тут думать, если уже так и была решена задача в реале.

Угу Изображение .. а сисадмины заинтересованы чтобы компьютеры постоянно висли - и было б больше работы Изображение ... а программеры в ошибках в коде - чтобы в них была постоянно необходимость Изображение.


Если какие-то сисадмины или какие-то кодеры этого ещё не поняли, то они просто не научились работать!!))) По кодерам отдельная песня, а вот по сисадминам решается все просто - абонентская плата. Если сисадмин получает 700 руб. за рабочее место в месяц и получает их сломалось что-либо или все работает без сбоев, тогда он настроит так, что потом годы может работать и не ломаться. А если сисадмин получает за каждый аварийный вызов, тогда... я сам по молодости много-много лет назад зарабатывал настройкой компов и знаю, что чем сильнее перепуган клиент, тем а) больше денег он готов заплатить и платит, б) чем от большего краха его спасаешь, тем больше у него наступает кайф. Как бы садишь его на эмоциональные качели. И к использованию этих качелей рано или поздно приходит любой профессионал, у которого выручка зависит от конкретного случая.

Кстати, я где-то слышал, что уже бывает юридическое обслуживание на основе абонентской платы. Ну что-то типа медстраховки. Платишь некую фиксу и тогда юрист становится заинтересованным в том, чтобы тупо у тебя не было проблем, чтобы платил эту фиксу, а он ничего не делал.

Если вы не в курсе, то абсолютно та же самая идеология действует в промышленности всего мира. Все производители товаров заинтересованы в том, чтобы у вас техника отработала некоторое время и благополучно сдохла, а в сервисном центре вам скажут, что замена платы будет стоить в 2 раза дороже, чем купить какую-нибудь новую модель. Сейчас даже автомобили уже стали этому правилу подчиняться. У нас в городе многие стараются слить куда-нибудь машину после трех лет использования, а то автосервис будет жрать все больше и больше.

Что касается кодеров, то насколько мне известно, многие кодерские команды исправляют ошибки бесплатно (речь идет о заказном софте, а не о тиражном). Наша команда исправляет ошибки бесплатно, поэтому мы в них не так уж и заинтересованы. И услуг по установке софта (сисадминские услуги) мы не оказываем вообще. Но тем не менее ошибки в нашем деле являются полезным инструментом, хотя я и не стану тут рассказывать в чем именно их польза с коммерческой точки зрения.))) тут все немножечко на грани морально / аморально))) но как говориться в старинной русской пословице: честь и торговля розно живут)))
  • 0

#23 FreeCat

FreeCat

    Админ Тёмных веков ЮК Ушел от нас навсегда

  • Ушел навсегда
  • 5396 сообщений
Обратиться Публикации

Отправлено 23 October 2012 - 14:50


Угу Изображение .. а сисадмины заинтересованы чтобы компьютеры постоянно висли - и было б больше работы Изображение ... а программеры в ошибках в коде - чтобы в них была постоянно необходимость Изображение.


Если какие-то сисадмины или какие-то кодеры этого ещё не поняли, то они просто не научились работать!!))) По кодерам отдельная песня, а вот по сисадминам решается все просто - абонентская плата. Если сисадмин получает 700 руб. за рабочее место в месяц и получает их сломалось что-либо или все работает без сбоев, тогда он настроит так, что потом годы может работать и не ломаться. А если сисадмин получает за каждый аварийный вызов, тогда... я сам по молодости много-много лет назад зарабатывал настройкой компов и знаю, что чем сильнее перепуган клиент, тем а) больше денег он готов заплатить и платит, б) чем от большего краха его спасаешь, тем больше у него наступает кайф. Как бы садишь его на эмоциональные качели. И к использованию этих качелей рано или поздно приходит любой профессионал, у которого выручка зависит от конкретного случая.

Куда уж нам Изображение .. лет так 25 учимся, учимся и всё не научимся Изображение.
P.S. Вам ещё повезло что не налетели на грамотного пользователя - после этого бы поняли что работа "с позиции силы" не всегда самая продуктивная в денежном плане в конечном итоге Изображение.
  • 0

#24 albar

albar
  • ЮрКлубовец
  • 199 сообщений
Обратиться Публикации

Отправлено 23 October 2012 - 17:18

daorus,

пока что я верю, что передача исключительных прав на функцию safeGet() создаст для нас страшные риски, потому что нам без этой функции будет очень трудно работать

- а передача исключительных прав на функцию невозможна.
То, что "программы для ЭВМ охраняются как литературные произведения" означает, что охраняется конкретная последовательность символов. От первого до последнего символа кода. Последовательность символов "safeGet()" не охраняется ни сама по себе (разве что как товарный знак ее зарегистрировать или использовать такую последовательность символов в качестве названия произведения), ни как часть "литературного произведения" (программы для ЭВМ). Примерно так же, как не охраняется последовательность символов "наступила осень".
Поэтому использовать в будущем в новых программах для ЭВМ последовательности символов из вашей нынешней программы правомерно.
  • 2

#25 daorus

daorus
  • ЮрКлубовец-кандидат
  • 16 сообщений
Обратиться Публикации

Отправлено 23 October 2012 - 19:00

P.S. Вам ещё повезло что не налетели на грамотного пользователя - после этого бы поняли что работа "с позиции силы" не всегда самая продуктивная в денежном плане в конечном итоге Изображение.


Я вроде про с позиции силы ничего не говорил... речь идет об абсолютно легальных действиях, но за пределами квалификации заказчика. Речь идет о ситуациях, в которых может разобраться только профессионал. Вирусами сознательно я компы не заражал и таймеры на сбой винчестера тоже, если вы об этом.))) И даже не потому, что это уголовкой попахивает, а тупо потому, что я верю в кармические законы вселенной и по собственному опыту знаю, что все это потом аукнется. Речь скорее о стиле работы как знаменитой пословице: я никогда не вру, но я до****я недоговариваю.))))

Налететь на грамотного пользователя - это не вопрос везения / не везения, а вопрос самой обычной глупости. Если исполнитель согласился работать с заказчиком, который обладает такой же квалификацией или выше, то этот исполнитель сам себе злой буратино.)))

У меня есть девушка знакомая, она арт-директор в рекламном агентстве. Делают начиная от плакатов и заканчивая рекламными видеороликами. Она говорит, что нет ничего страшнее, чем заказчик, который закончил художественную или музыкальную школу. Ещё и не дай бог с отличием.))) Работать с такими - сплошной кошмар.

Наверное для юристов выполнять заказ некого другого юриста - это тоже разновидность прострела ноги самому себе.))) хотя я не в курсе за вашу кухню...

В любом случае, стандартная защита от таких "умных заказчиков" является что-то типа: если вы такой умный, то может вы тогда сами все сделаете, зачем вы к нам-то обратились?)))

а передача исключительных прав на функцию невозможна.


Ага, если бы все было так замечательно, то мы давно бы уже натырили бы кусков из программных продуктов наших конкурентов.))) но что-то мне кажется, что мы за это получим по башке...)))

К тому же есть такой интересный момент. Перестановка в литературном произведении приводит к потере смысла: "раздался выстрел, он упал", это не то же самое, что "он упал, раздался выстрел", а в программировании часто перестановка функций местами не играет роли на конечную работу программы, влияет только перестановка использований этих функций, то есть внутри алгоритма. То есть, чтобы все работало, важно чтобы функция safeGet() просто была в пространстве программы, а где именно она будет размещена - это пофигу.

"наступила осень" сложно доказать авторство, а "наступила осень вышиво, я тебя назвал крапивой" - вот тут уже с авторством защита отличная.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных