Повторное использование кода
От: Kore Sar  
Дата: 23.07.09 13:37
Оценка:
Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.

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

Ваши мнения?
Re: Повторное использование кода
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 23.07.09 13:42
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>А ведь это золотая жила.


Золотая-то она золотая. Только вектор потока золота не всегда очевиден и может быть расположен как к разрабатывающему, так и от него

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: Повторное использование кода
От: Kore Sar  
Дата: 23.07.09 13:43
Оценка:
Здравствуйте, kochetkov.vladimir, Вы писали:

KV>Здравствуйте, Kore Sar, Вы писали:


KS>>А ведь это золотая жила.


KV>Золотая-то она золотая. Только вектор потока золота не всегда очевиден и может быть расположен как к разрабатывающему, так и от него


Считаю что хороший программист отличется от плохого тем, что всегда выбирает "к", а не "от".
Re: Повторное использование кода
От: CreatorCray  
Дата: 23.07.09 14:43
Оценка: +3
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.

Переиспользованию кода мешают например разного рода лицензии (GPL в том числе) а также качество этого самого кода.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Повторное использование кода
От: Kore Sar  
Дата: 23.07.09 14:56
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Kore Sar, Вы писали:


KS>>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.

CC>Переиспользованию кода мешают например разного рода лицензии (GPL в том числе) а также качество этого самого кода.
Я специально написал в исходном сообщении не "открытого кода", а "кода свободного использования". Т.е. давайте не рассматривать код, который хоть и открыт, но запрещен к использованию.

А вот про качество — здесь давайте по-подробнее. У Вас много опыта использования чужого кода? Какой процент из кода свободного использования написан так, что его нельзя будет нормально юзать?
Re[3]: Повторное использование кода
От: MozgC США http://nightcoder.livejournal.com
Дата: 23.07.09 14:57
Оценка: +1
Здравствуйте, Kore Sar, Вы писали:

KS>А вот про качество — здесь давайте по-подробнее. У Вас много опыта использования чужого кода? Какой процент из кода свободного использования написан так, что его нельзя будет нормально юзать?


Большой процент. Мне почти всегда приходится исправлять косяки и допиливать.
Re[3]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 23.07.09 15:10
Оценка: +1
Здравствуйте, Kore Sar, Вы писали:

CC>>Переиспользованию кода мешают например разного рода лицензии (GPL в том числе) а также качество этого самого кода.

KS>Я специально написал в исходном сообщении не "открытого кода", а "кода свободного использования". Т.е. давайте не рассматривать код, который хоть и открыт, но запрещен к использованию.

Не сочтите за придирку, но GPL очень сложно назвать "запрещенным к использованию". Поэтому термин "запрещен к использованию" следовало бы уточнить.

KS>А вот про качество — здесь давайте по-подробнее. У Вас много опыта использования чужого кода? Какой процент из кода свободного использования написан так, что его нельзя будет нормально юзать?


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Повторное использование кода
От: Kore Sar  
Дата: 23.07.09 15:13
Оценка: +1
Здравствуйте, MozgC, Вы писали:

MC>Здравствуйте, Kore Sar, Вы писали:


KS>>А вот про качество — здесь давайте по-подробнее. У Вас много опыта использования чужого кода? Какой процент из кода свободного использования написан так, что его нельзя будет нормально юзать?


MC>Большой процент. Мне почти всегда приходится исправлять косяки и допиливать.


Я бы даже сказал всегда приходится это делать.
Но ведь при определённом опыте можно быть гораздо эффективнее используя чужие велосипеды, чем свои. Т.е. использовать чужой код в больших количествах — это залог успеха, имхо.
Re[3]: Повторное использование кода
От: CreatorCray  
Дата: 23.07.09 15:25
Оценка: 16 (2)
Здравствуйте, Kore Sar, Вы писали:

KS>Я специально написал в исходном сообщении не "открытого кода", а "кода свободного использования". Т.е. давайте не рассматривать код, который хоть и открыт, но запрещен к использованию.

Пардон, был невнимателен.
Далее буду про public domain код, хотя его мне попадалось совсем немного. Народ больше любит GPL, LGPL, BSD и проч. лицензии.

KS>У Вас много опыта использования чужого кода?

Ну, относительно. Как узнать это у меня много или не много.

KS> Какой процент из кода свободного использования написан так, что его нельзя будет нормально юзать?

Из того что я использовал из небольших объемов кода как минимум отрефакторить пришлось почти всё.
Причины:
Или написан в суровом С стиле — куча глобальных переменных, все на сырых указателях и т.п. В таком виде накрывается использование в многопоточном приложении, поэтому переделка неминуема.
Или же написан как кура лапой c совершенно невменяемыми именами функций, переменных и т.п. — причесывание, rename и переделка критических мест.
Или просто плохо читаем — тогда просто проход с "причесыванием" и refactor rename для непонятных имён.

Кардинально переписывать, вникая в алгоритм, и по сути постепенно реализуя его заново пришлось наверное только в 30-40% случаев.
Остальное свелось к причёсыванию кода, покрытию его тестами и приведению к coding standard.

В случае использования стороннего public domain кода больших объемов и также к поставляемому в виде .lib/.dll + .h (т.е. без сурсов) — при необходимости "очеловечить" интерфейс писался враппер, иначе использовалось как есть.
Вообще использование чужого, неподконтрольного тестам кода стараюсь сводить к минимуму — только там, где без него совсем никак.


Где то вот так.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Повторное использование кода
От: CreatorCray  
Дата: 23.07.09 15:28
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>Но ведь при определённом опыте можно быть гораздо эффективнее используя чужие велосипеды, чем свои. Т.е. использовать чужой код в больших количествах — это залог успеха, имхо.

Все равно, чужой велосипед нужно проанализировать и понять, хотя бы потому чтоб найти возможные ошибки в коде.
Гораздо эффективнее оказывается построить свой велосипед, с блэкджеком и hookers, на основе чужого и заточенный именно под свою задачу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Повторное использование кода
От: CreatorCray  
Дата: 23.07.09 15:28
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Не сочтите за придирку, но GPL очень сложно назвать "запрещенным к использованию". Поэтому термин "запрещен к использованию" следовало бы уточнить.

GPL это вирусная лицензия, заставляющая выпускать свой продукт тоже только под GPL.
Поэтому она закрывает легальное использование кода не в GPL проектах. Что есть сакс.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Повторное использование кода
От: Kore Sar  
Дата: 23.07.09 15:31
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Kore Sar, Вы писали:


KS>>Но ведь при определённом опыте можно быть гораздо эффективнее используя чужие велосипеды, чем свои. Т.е. использовать чужой код в больших количествах — это залог успеха, имхо.

CC>Все равно, чужой велосипед нужно проанализировать и понять, хотя бы потому чтоб найти возможные ошибки в коде.
CC>Гораздо эффективнее оказывается построить свой велосипед, с блэкджеком и hookers, на основе чужого и заточенный именно под свою задачу.
Да, это я и имел в виду.
Re[5]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 23.07.09 15:34
Оценка:
Здравствуйте, CreatorCray, Вы писали:

E>>Не сочтите за придирку, но GPL очень сложно назвать "запрещенным к использованию". Поэтому термин "запрещен к использованию" следовало бы уточнить.

CC>GPL это вирусная лицензия, заставляющая выпускать свой продукт тоже только под GPL.
CC>Поэтому она закрывает легальное использование кода не в GPL проектах. Что есть сакс.

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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Повторное использование кода
От: Pzz Россия https://github.com/alexpevzner
Дата: 23.07.09 15:40
Оценка: +2
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


Ну да, действительно, тот, кто научится воспроизводимо делать золото из дерьма, сказочно разбогатеет
Re: Повторное использование кода
От: IT Россия linq2db.com
Дата: 23.07.09 15:44
Оценка: +3
Здравствуйте, Kore Sar, Вы писали:

KS>Ваши мнения?


Возможность повторного использования имеет больше отношения не к программисту, а прежде всего к самому коду. Код, который легко повторно использовать используют на всю катушку. Но проблема в том, что такого кода не так много.
Если нам не помогут, то мы тоже никого не пощадим.
Re: Повторное использование кода
От: Стэн http://stanonwork.blogspot.com/
Дата: 23.07.09 19:55
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах.


Небольшое уточнение. Это не собственно sourceforge, а

In this academic research project we are curious to learn about your view on the importance of code reuse in the development of open source software as well as the experiences you have made with code reuse.

This study is a joint research project by Joachim Henkel and Manuel Sojer, Munich University of Technology.


Ещё они обещали прислать сводные результаты анкетирования, так что если кому здесь интересно, то можно будет их опубликовать. Секретными они не являются.
Re[6]: Повторное использование кода
От: x905  
Дата: 24.07.09 04:23
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>В последние годы я работаю над проектами двух типов -- первые предназначены для использования нашей компанией и распространять их исходники мы не хотим и заказные проекты, в которых исходники передаются заказчику. В первых, очевидно, GPL не применим. Во вторых -- для нас нет никаких препятствий в использовании GPL кода.


а не наоборот?
если используеш для себя(внутри компании) — то показывать исходники ненужно
если пишеш на заказ, то используя gpl библиотеки (например qt) — необходимо показать исходники не только заказчику, но и остальному миру
Re[7]: Повторное использование кода
От: WFrag США  
Дата: 24.07.09 05:06
Оценка: +2
Здравствуйте, x905, Вы писали:

X>если пишеш на заказ, то используя gpl библиотеки (например qt) — необходимо показать исходники не только заказчику, но и остальному миру


Только если бинарники распространяются на этот остальной мир. Просто так прийти и попросить исходники GPL проекта нельзя.
йт
Re[7]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.07.09 05:40
Оценка:
Здравствуйте, x905, Вы писали:

E>>В последние годы я работаю над проектами двух типов -- первые предназначены для использования нашей компанией и распространять их исходники мы не хотим и заказные проекты, в которых исходники передаются заказчику. В первых, очевидно, GPL не применим. Во вторых -- для нас нет никаких препятствий в использовании GPL кода.


X>а не наоборот?


Нет.

X>если используеш для себя(внутри компании) — то показывать исходники ненужно


Насколько мне известно, сейчас FSF пытается наезжать на компании, которые используют GPL в своих внутренних продуктах, но код этих продуктов не открывают. Так что использование GPL-ных кусков во внутренних продуктах черевато.

X>если пишеш на заказ, то используя gpl библиотеки (например qt) — необходимо показать исходники не только заказчику, но и остальному миру


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


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Повторное использование кода
От: x905  
Дата: 24.07.09 06:00
Оценка:
Здравствуйте, eao197, Вы писали:


X>>если используеш для себя(внутри компании) — то показывать исходники ненужно

E>Насколько мне известно, сейчас FSF пытается наезжать на компании, которые используют GPL в своих внутренних продуктах, но код этих продуктов не открывают. Так что использование GPL-ных кусков во внутренних продуктах черевато.

X>>если пишеш на заказ, то используя gpl библиотеки (например qt) — необходимо показать исходники не только заказчику, но и остальному миру

E>Это вряд ли. Мы передаем заказчику весь код, т.е. обеспечиваем ему все свободы, которые требует GPL. Т.е. соблюдаем лицензию. Дальше наступает ответственность заказчика. Имхо, если он не будет производить дальнейшей разработки, а только будет эксплуатировать продукт, то он ничего и никому показывать не должен.

но тогда FSF будет наезжать на вашего заказчика — он же использует GPL в своих внутренних продуктах, но код этих продуктов не открывает
заказчик это понимает ?

мне всетаки кажется что для себя, в том числе и внутри компании можно использовать GPL код без показа исходников
если продавать софт (или софт в составе железяки) — то исходники открыть надо
если же писать комуто под заказ — и заказчик будет один использовать эту программу, то тут незнаю
пусть знающие товарищи поправят
Re[9]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.07.09 06:33
Оценка: +1
Здравствуйте, x905, Вы писали:

X>но тогда FSF будет наезжать на вашего заказчика — он же использует GPL в своих внутренних продуктах, но код этих продуктов не открывает


Заказчик не ведет разработки. Соответственно, на него GPL не распространяется.

X>заказчик это понимает ?


Заказчику важно a) иметь работающий продукт и b) иметь возможность передать разработку продукта другому подрядчику.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Повторное использование кода
От: minorlogic Украина  
Дата: 24.07.09 06:55
Оценка: +2
Я считаю, что это один из признаков зрелого програмиста. Умение грамотно переиспользовать код.

В современном мире програмирования , не так много задач нерешенных, и не очень много задач не решенных качественно.

Особенно это относится к типовым задачам, такие как работа с БД, сериализация, RPC и т.п.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[4]: Повторное использование кода
От: minorlogic Украина  
Дата: 24.07.09 07:04
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Или же написан как кура лапой c совершенно невменяемыми именами функций, переменных и т.п. — причесывание, rename и переделка критических мест.

CC>Или просто плохо читаем — тогда просто проход с "причесыванием" и refactor rename для непонятных имён.


Как пример, используя ACE вы каждый раз с выпуском новой версии будете переименовывать код , чтобы он выглядил привычно ?
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[5]: Повторное использование кода
От: CreatorCray  
Дата: 24.07.09 07:46
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Как пример, используя ACE вы каждый раз с выпуском новой версии будете переименовывать код , чтобы он выглядил привычно ?

ACE подпадает под пункт "использования стороннего public domain кода больших объемов" — напишется враппер.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Повторное использование кода
От: x905  
Дата: 24.07.09 08:11
Оценка: +1
2 eao197

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

Вот непонятно почему FSF пытается наезжать на компании, которые используют GPL в своих внутренних продуктах, но коды этих продуктов не открывают? На основании чего? Какие есть примеры?
Re[4]: Повторное использование кода
От: DemAS http://demas.me
Дата: 24.07.09 09:01
Оценка:
> Кардинально переписывать, вникая в алгоритм, и по сути постепенно реализуя его заново пришлось наверное только в 30-40% случаев.
> Остальное свелось к причёсыванию кода, покрытию его тестами и приведению к coding standard.

А что потом делаешь с причесанным кодом? Отправляешь ли изменения
автору (ам)? Если нет, то как решаешь проблему, когда разработчики
выпускают новую версию кода и возникает необходимость использовать ее?
Подтягиваешь в свой код новые изменения? Заново рефакторишь?
Posted via RSDN NNTP Server 2.1 beta
Re[11]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.07.09 09:15
Оценка:
Здравствуйте, x905, Вы писали:

X>Так я наоборот хотел сказать, что для своих целей, внутри своей компании, можно использовать GPL код внутри своего и не показывая никому исходники всего проекта.


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

Еще есть вопрос с модификацией GPL-ного кода. Скажем, даже исправленный в GPL-ном коде баг должен быть опубликован.

X>Вот непонятно почему FSF пытается наезжать на компании, которые используют GPL в своих внутренних продуктах, но коды этих продуктов не открывают? На основании чего? Какие есть примеры?


Примеры сейчас я найти не могу, но некоторое время назад на LOR-е проскакивали темы о том, что у FSF есть претензии к ряду компаний, которые используют GPL-ные продукты у себя, но не раскрывают их код. Насколько я помню, среди прочих был и Google, который на своих серверах использует модифицированные варианты Linux-а.
Хотя, возможно я путаю претензии FSF и заявления Столлмана (которому такие вещи точно не нравятся)


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Повторное использование кода
От: BigBoss  
Дата: 24.07.09 09:24
Оценка:
Здравствуйте, eao197, Вы писали:

X>>но тогда FSF будет наезжать на вашего заказчика — он же использует GPL в своих внутренних продуктах, но код этих продуктов не открывает


E>Заказчик не ведет разработки. Соответственно, на него GPL не распространяется.


нельзя ли поподробнее? В оригинале всё же было:

6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions...

X>>заказчик это понимает ?
Re: Повторное использование кода
От: SV.  
Дата: 24.07.09 09:32
Оценка: +1
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


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


KS>Ваши мнения?


Да, если подходить абстрактно, это очень даже неплохо — взять чужой код, особенно, если бесплатно, и пр. А если конкретизировать? Я писал когда-то код трехмерной визуализации геологических пластов — откуда еще следовало брать код (помимо библиотек)? Я пересмотрел немало сэмплов, но все было не то. Либо движки были заточены под заранее готовые ресурсы (100% игрового кода), либо написаны каким-нибудь шведским врачом для отображения костей, и все прохардкожено. А мне надо было отображать raw-данные в реальном времени и вовсе даже не кости. Конечно, мой пример — это мой пример. Приведете свой, где использование готового кода было бы оправдано?
Re[11]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.07.09 09:41
Оценка: 1 (1)
Здравствуйте, BigBoss, Вы писали:

X>>>но тогда FSF будет наезжать на вашего заказчика — он же использует GPL в своих внутренних продуктах, но код этих продуктов не открывает


E>>Заказчик не ведет разработки. Соответственно, на него GPL не распространяется.


BB>нельзя ли поподробнее? В оригинале всё же было:


BB>6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions...


Это значит, что когда мы передали заказчику исходный код продукта (который уже попал под GPL), мы выполнили условия GPL. И теперь заказчик обладает всеми перечисленными правами. Но в GPL, насколько я помню, нет упоминания о том, что покупатель программы обязан публиковать ее код. Публиковать код обязан производитель (что мы и делаем, передавая исходники заказчику). И, поскольку покупатель не производит ничего с полученным кодом, то и открывать он его не обязан. Но имеет право делать с кодом все, что захочет в рамках GPL. Если захочет


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[12]: Повторное использование кода
От: swined Россия  
Дата: 24.07.09 09:54
Оценка:
Здравствуйте, eao197, Вы писали:

E>Это значит, что когда мы передали заказчику исходный код продукта (который уже попал под GPL), мы выполнили условия GPL. И теперь заказчик обладает всеми перечисленными правами. Но в GPL, насколько я помню, нет упоминания о том, что покупатель программы обязан публиковать ее код. Публиковать код обязан производитель (что мы и делаем, передавая исходники заказчику). И, поскольку покупатель не производит ничего с полученным кодом, то и открывать он его не обязан. Но имеет право делать с кодом все, что захочет в рамках GPL. Если захочет


дык опубликовать ты должен всем, а не только заказчику
Re[5]: Повторное использование кода
От: CreatorCray  
Дата: 24.07.09 10:00
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>А что потом делаешь с причесанным кодом? Отправляешь ли изменения

DAS>автору (ам)?
Нет.

DAS>Если нет, то как решаешь проблему, когда разработчики

DAS>выпускают новую версию кода и возникает необходимость использовать ее?
Новые версии берутся только в случае критических изменений.

DAS>Подтягиваешь в свой код новые изменения? Заново рефакторишь?

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

Вообще версия обычно фиксируется и постоянного обновления не делается. Ибо "зачем чинить то, что не сломано" и было пару моментов когда обновление стороннего кода приводило к несовместимостям или неправильной работе всего проекта вообще.
Впрочем новые версии периодически анализируются на предмет особо ценных добавлений.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Повторное использование кода
От: WFrag США  
Дата: 24.07.09 10:01
Оценка: +1
Здравствуйте, swined, Вы писали:

E>>Это значит, что когда мы передали заказчику исходный код продукта (который уже попал под GPL), мы выполнили условия GPL. И теперь заказчик обладает всеми перечисленными правами. Но в GPL, насколько я помню, нет упоминания о том, что покупатель программы обязан публиковать ее код. Публиковать код обязан производитель (что мы и делаем, передавая исходники заказчику). И, поскольку покупатель не производит ничего с полученным кодом, то и открывать он его не обязан. Но имеет право делать с кодом все, что захочет в рамках GPL. Если захочет


S>дык опубликовать ты должен всем, а не только заказчику


Не всем, а только тем, кому распространяешь бинарники. Если заказчик будет распространять конечным пользователям (например, в составе железки), то он и им будет обязан предоставлять исходники.

GPL v2:

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope.


Соответственно, кто не учавствует в указанных активностях претендовать ни на что и не может в рамках этой лицензии.
Re: Повторное использование кода
От: March_rabbit  
Дата: 24.07.09 10:01
Оценка:
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


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


KS>Ваши мнения?

идея красивая, нет слов.
Вот с реализацией проблемы.

Ну взяли мы за основу нашего продукта Mozilla Thunderbird. Так последний год больше половины времени уходит на починку всяческих багов в нем, на попытку заставить его работать так как надо нам и прочее..... Плюс к этому монстрообразность и внутреннюю кривизну. Результат — общее мнение, что решение взять тандербёрд за основу — было ошибкой.

Далеко не всякий код можно взять и использовать. Все-таки, чтобы код мог быть использовать повторно, он должен разрабатываться "на перспективу". Иначе, будет как в Qt: шаг в сторону от единственно верного пути — расстрел.

Добавить сюда логику разработчика и получится вообще нереалистичность повторного использования.
Re[12]: Повторное использование кода
От: BigBoss  
Дата: 24.07.09 10:30
Оценка:
Здравствуйте, eao197, Вы писали:

BB>>нельзя ли поподробнее? В оригинале всё же было:


BB>>6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions...


E>Это значит, что когда мы передали заказчику исходный код продукта (который уже попал под GPL), мы выполнили условия GPL. И теперь заказчик обладает всеми перечисленными правами. Но в GPL, насколько я помню, нет упоминания о том, что покупатель программы обязан публиковать ее код. Публиковать код обязан производитель (что мы и делаем, передавая исходники заказчику). И, поскольку покупатель не производит ничего с полученным кодом, то и открывать он его не обязан. Но имеет право делать с кодом все, что захочет в рамках GPL. Если захочет


Здорово получается, у всех одни права и никаких обязанностей По-вашему выходит, я могу зарегистрировать какое-нибудь ООО ФСФ, которое будет посредником, распространяющим лицензионно-проблемный код, и про ограничения GPL можно будет забыть?
Re[13]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.07.09 10:35
Оценка:
Здравствуйте, BigBoss, Вы писали:

BB>Здорово получается, у всех одни права и никаких обязанностей


Наша обязанность -- отдать потребителю продукта его исходный код.
У потребителя нет никаких обязанностей, пока он не берется распространять продукт.

BB>По-вашему выходит, я могу зарегистрировать какое-нибудь ООО ФСФ, которое будет посредником, распространяющим лицензионно-проблемный код, и про ограничения GPL можно будет забыть?


Насколько я понимаю, продавая Enterprise Linux компания RedHat именно так и поступает.
Покупатели EL не распространяют, почему-то, купленный ими EL.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[5]: Повторное использование кода
От: thesz Россия http://thesz.livejournal.com
Дата: 24.07.09 11:03
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, eao197, Вы писали:


E>>Не сочтите за придирку, но GPL очень сложно назвать "запрещенным к использованию". Поэтому термин "запрещен к использованию" следовало бы уточнить.

CC>GPL это вирусная лицензия, заставляющая выпускать свой продукт тоже только под GPL.

Nope. Через прокси (плагин) всё будет работать.

CC>Поэтому она закрывает легальное использование кода не в GPL проектах. Что есть сакс.


Ничего подобного.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[14]: Повторное использование кода
От: x905  
Дата: 24.07.09 11:37
Оценка:
Здравствуйте, eao197, Вы писали:

E>Наша обязанность -- отдать потребителю продукта его исходный код.

E>У потребителя нет никаких обязанностей, пока он не берется распространять продукт.

а ваш заказчик понимает это?
вот например такой интересный момент: заказчик решил установить это ПО на свой сервер, вывел его в инет и предоставляет некий сервис за плату
должен он тогда раскрыть код ?
Re[15]: Повторное использование кода
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.07.09 11:46
Оценка:
Здравствуйте, x905, Вы писали:

E>>Наша обязанность -- отдать потребителю продукта его исходный код.

E>>У потребителя нет никаких обязанностей, пока он не берется распространять продукт.

X>а ваш заказчик понимает это?



Наше дело предупредить

X>вот например такой интересный момент: заказчик решил установить это ПО на свой сервер, вывел его в инет и предоставляет некий сервис за плату

X>должен он тогда раскрыть код ?

Не думаю. Еще раз сошлюсь на пример с Enterprise Linux. Он часто используется, например, в банках. В том числе и для поддержки internet-сервисов банка. Но банки не распространяют его исходники.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[14]: Повторное использование кода
От: BigBoss  
Дата: 24.07.09 14:07
Оценка: :)
Здравствуйте, eao197, Вы писали:

BB>>По-вашему выходит, я могу зарегистрировать какое-нибудь ООО ФСФ, которое будет посредником, распространяющим лицензионно-проблемный код, и про ограничения GPL можно будет забыть?


E>Насколько я понимаю, продавая Enterprise Linux компания RedHat именно так и поступает.

E>Покупатели EL не распространяют, почему-то, купленный ими EL.

Всё, пошёл регистрировать. Напомните, с кем там сейчас FSF судится, чтоб мне первых клиентов долго не искать
Re[16]: Повторное использование кода
От: Roman Odaisky Украина  
Дата: 24.07.09 20:52
Оценка:
Здравствуйте, eao197, Вы писали:

E>Не думаю. Еще раз сошлюсь на пример с Enterprise Linux. Он часто используется, например, в банках. В том числе и для поддержки internet-сервисов банка. Но банки не распространяют его исходники.


Но могут (разве что придется убрать торговые марки).
До последнего не верил в пирамиду Лебедева.
Re[16]: Повторное использование кода
От: x905  
Дата: 27.07.09 04:45
Оценка:
Здравствуйте, eao197, Вы писали:

X>>вот например такой интересный момент: заказчик решил установить это ПО на свой сервер, вывел его в инет и предоставляет некий сервис за плату

X>>должен он тогда раскрыть код ?
E>Не думаю. Еще раз сошлюсь на пример с Enterprise Linux. Он часто используется, например, в банках. В том числе и для поддержки internet-сервисов банка. Но банки не распространяют его исходники.

такой пример не пойдет:
1. банки и не должны распространять исходники — это потребители
2. исходный код RHEL открыт — из него и собирается CENTOS

насколько я сам понял, если код под GPLv2, то исходный код сервиса можно не открывать
насчет GPLv3 неразобрался
Re: Повторное использование кода
От: borisman3 Канада http://paskoboris.blogspot.com/
Дата: 27.07.09 07:50
Оценка: 7 (2)
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


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


KS>Ваши мнения?


Как опытный велосипедостроитель не могу не.

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

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

Как человек, трудолюбиво пишущий маленькие и средненькие велосипеды, я могу сказать что стоимость написания даже маленького велосипеда неожиданно выше чем кажется с первого взгляда. Для маленьких велосипедов абсолютно недостаточно написания только кода. Если в некоторых других местах я могу позволить отсутствие тестов, в маленьких велосипедиках нужна всеобъемлющая тестовая поддержка, начиная от простых юнит-тестов и заканчивая "грязными" тестами, так как велосипедики на то и велосипеды чтобы быть использованы в проекте повсеместно. В противном случае их написание нерационально — часто код тестов для маленьких велосипедов в несколько раз превышает размерами сам велосипед. И вместе с тем применение маленьких велосипедов оправдано и рационально, потому что оно верно (шутка юмора).

Очень часто даже библиотечные велосипеды имеют колеса несовместимые с нашими педалями (например функция String.split из java). Что уж говорить о сторонних и плохо обкатанных велосипедах! Многие известные деятели (тов. Кнут, тов. Дейкстра, тов. Чарльз Мур) вообще скажут что сторонний код им нужен для извлечения основной идеи. А уж код после этого они напишут сугубо свой, доморощенный.
Re[2]: Повторное использование кода
От: minorlogic Украина  
Дата: 27.07.09 08:10
Оценка: +1
Здравствуйте, borisman3, Вы писали:

B>Как опытный велосипедостроитель не могу не.


B>Всегда есть цена, которую надо платить за адаптацию чужого кода. Это время, которое нужно затратить и на то чтобы понять основную функцию, которую чужой код выполняет, и время, затрачиваемое на то, чтобы раскопать(наткнуться на, удариться об) неявные предположения, которые сделаны в таком коде, и время, которое может потребоваться на развязку куска нужного кода с кусками ненужного. И так далее.


Лично я неаблюдаю картину что написание своего кода занимает не много времени. бОльшую часть времени занимает отладка и обдумывание интерфейса и т.п. Но в основном отладка и тестирование.
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[3]: Повторное использование кода
От: borisman3 Канада http://paskoboris.blogspot.com/
Дата: 27.07.09 11:24
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Здравствуйте, borisman3, Вы писали:


B>>Как опытный велосипедостроитель не могу не.


B>>Всегда есть цена, которую надо платить за адаптацию чужого кода. Это время, которое нужно затратить и на то чтобы понять основную функцию, которую чужой код выполняет, и время, затрачиваемое на то, чтобы раскопать(наткнуться на, удариться об) неявные предположения, которые сделаны в таком коде, и время, которое может потребоваться на развязку куска нужного кода с кусками ненужного. И так далее.


M>Лично я неаблюдаю картину что написание своего кода занимает не много времени. бОльшую часть времени занимает отладка и обдумывание интерфейса и т.п. Но в основном отладка и тестирование.


В принципе так, иначе мы не писали бы своих велосипедов. Но вместе с тем зачастую бывает так что в маленьком велосипедике кроется (как правило некритичный) баг который будет понят и исправлен только спустя очень длительного времени. Так что часто разработка велосипедика оказывается в несколько раз дороже чем кажется (но все равно на порядок проще чем адаптация чужого).
Re: Повторное использование кода
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.07.09 12:11
Оценка: +4
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


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


KS>Ваши мнения?


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

Теперь о вопросе:
Повторному использованию кода мешают:
1. Неосведомленность программиста о том, что есть код который можно использовать повторно.
2. Наличие особенностей в текущей задаче не позволяющих использовать чужой код без изменений.
3. Плохая обобщенность чужого кода и невозможность менять отдельные детали поведения без изменения кода.
4. Сложность поддержания измененного чужого кода, если только изменение позволяет использовать код повторно.
5. Боязнь чужого кода: боязнь багов, боязнь непонимания его внутреннего устройства.

Повторное использование зависит от массы факторов:
1. Уровня программиста пытающегося повторно использовать код.
2. Уровня программистов написавшего общий код.
3. От языка программирования и средств разработки. Например, в С++ повторное использование кода применяется крайне редко, в то время как в Яве и дотнете значительно чаще.

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

Итого, мой вердикт таков... Нужно смотреть на каждый конкретный случай. Где-то повторное использование даст преимущество, где-то нет.

Вот что нужно делать всегда и без каких-либо оговорок — это повторно использовать знания! Велосипед не долго создать с нуля если ты знаешь как это сделать. А если ты не знаешь как это сделать, то и использовать чужой велосипед будет крайне сложно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Повторное использование кода
От: Воронков Василий Россия  
Дата: 27.07.09 12:18
Оценка: 2 (1) +1
Здравствуйте, VladD2, Вы писали:

VD>Теперь о вопросе:

VD>Повторному использованию кода мешают:
VD>1. Неосведомленность программиста о том, что есть код который можно использовать повторно.
VD>2. Наличие особенностей в текущей задаче не позволяющих использовать чужой код без изменений.
VD>3. Плохая обобщенность чужого кода и невозможность менять отдельные детали поведения без изменения кода.
VD>4. Сложность поддержания измененного чужого кода, если только изменение позволяет использовать код повторно.
VD>5. Боязнь чужого кода: боязнь багов, боязнь непонимания его внутреннего устройства.

Существует по крайней мере еще один момент, на который часто нарываешься — лицензия.
Re[3]: Повторное использование кода
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.07.09 12:20
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Существует по крайней мере еще один момент, на который часто нарываешься — лицензия.


Естественно. Но это не технический вопрос, а форум технический.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Повторное использование кода
От: Воронков Василий Россия  
Дата: 27.07.09 12:28
Оценка: +1
Здравствуйте, VladD2, Вы писали:

ВВ>>Существует по крайней мере еще один момент, на который часто нарываешься — лицензия.

VD>Естественно. Но это не технический вопрос, а форум технический.

Да ладно, форум "философский"
Да и почему-то мне кажется, что причины, по которым код в опен сорсе повторно не используются, в основном как раз не технические.
Re: Повторное использование кода
От: Воронков Василий Россия  
Дата: 27.07.09 12:39
Оценка: +2
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.

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

На самом деле все зависит от того, что мы имеем в виду под кодом. Идет ли речь о решении какой-то конкретной задачи, которая обычно занимает два-три часа времени? В этом случае использовать чужой код действительно приходится редко. Хотя бы потому что быстрее написать самому, чем искать подходящее решение. Если даже задача довольно сложная и нетривиальная, то от готовой реализации нужен прежде всего не сам код, а именно решение, которое и представляет основную ценность и которое я могу уже переписать сам, в соответствии со стилем и архитектурой своего проекта. (Причем в этом ИМХО основной смысл опен-сурса, а не в возможности повторного использования путем cut && paste).

Если же речь идет, скажем так, о больших "подсистемах", то повторное использование живет и процветает. Если вам нужен в проекте встраиваемый движок SQL-БД, то надо быть откровенно двинутым на голову, чтобы писать его самому, когда есть прекрасный sqlite — даже если вам придется модифицировать и затачивать его под свои нужды. Или если я пишу, скажем, навигатор для того же sqlite и мне нужен редактор кода — разработать собственный редактор в таком случае тоже довольно странное решение, когда есть уже готовые, с открытым кодом, в кол-ве больше одного.
Re: Повторное использование кода
От: White_Mage  
Дата: 27.07.09 13:50
Оценка: -1
Здравствуйте, Kore Sar, Вы писали:

KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.


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


KS>Ваши мнения?


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

На мой взгляд самое правильное решение — это потратить время на то чтобы разобраться, как работает чужая программа с открытом кодом. И как уже кто-то сказал здесь, понять для себя идею её работы. А как только ты узнал идею, тебе уже будет не так сложно написать свой код, который ты будешь детально знать и понимать, что избавит тебя от многих трудностей.
Re[2]: Повторное использование кода
От: VGn Россия http://vassilsanych.livejournal.com
Дата: 27.07.09 14:28
Оценка: +1
W_M>На мой взгляд в использование чужого кода достаточно много трудностей, которые уже не раз были озвучены в данной ветке. Это: и необходимость поиска этого самого чужого кода, и разбор чужого кода, для понимания сути его работы, и доделка этого кода под твою конкретную задачу, и поиск ошибок в чужом коде.

W_M>На мой взгляд самое правильное решение — это потратить время на то чтобы разобраться, как работает чужая программа с открытом кодом. И как уже кто-то сказал здесь, понять для себя идею её работы. А как только ты узнал идею, тебе уже будет не так сложно написать свой код, который ты будешь детально знать и понимать, что избавит тебя от многих трудностей.


Имхо именно с этим спорит топикстартер. И я с ним согласен.
Может быть пора уже заканчивать с "тысячами складов"?
... << RSDN@Home 1.2.0 alpha 4 rev. 1233>>
Re[3]: Повторное использование кода
От: White_Mage  
Дата: 28.07.09 12:33
Оценка:
Здравствуйте, VGn, Вы писали:

VGn>Имхо именно с этим спорит топикстартер. И я с ним согласен.

VGn>Может быть пора уже заканчивать с "тысячами складов"?

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

1) Как найти готовый код для решения конкретной задачи?.
2) Как максимально упростить разбор чужого кода?
3) Как максимально быстро найти ошибки в чужом кода (если они там имеются)?

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

На мой взгляд нужно выделить некие обобщенные задачи, которые часто решаются, и в которых действительно необходимо использование чужого кода. И вот на основе таких частей строить репозиторий, откуда любые желающие смогут взять требуемый им кусок кода или библиотеку. Но это делается и так, и многие программисты (в том числе и ваш скромный слуга) активно этим пользуются. Последний пример, который мне сразу приходит в голову, это использование библиотеки NHibernate для решения задачи ORM маппинга.
Re[4]: Повторное использование кода
От: anton_t Россия  
Дата: 29.07.09 07:51
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Kore Sar, Вы писали:


CC>>>Переиспользованию кода мешают например разного рода лицензии (GPL в том числе) а также качество этого самого кода.

KS>>Я специально написал в исходном сообщении не "открытого кода", а "кода свободного использования". Т.е. давайте не рассматривать код, который хоть и открыт, но запрещен к использованию.

E>Не сочтите за придирку, но GPL очень сложно назвать "запрещенным к использованию". Поэтому термин "запрещен к использованию" следовало бы уточнить.


GPL легко может оказаться "запрещенным к использованию", если ваша лицензия не совместима с GPL.
Re[8]: Повторное использование кода
От: anton_t Россия  
Дата: 29.07.09 07:54
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, x905, Вы писали:


E>>>В последние годы я работаю над проектами двух типов -- первые предназначены для использования нашей компанией и распространять их исходники мы не хотим и заказные проекты, в которых исходники передаются заказчику. В первых, очевидно, GPL не применим. Во вторых -- для нас нет никаких препятствий в использовании GPL кода.


X>>а не наоборот?


E>Нет.


X>>если используеш для себя(внутри компании) — то показывать исходники ненужно


E>Насколько мне известно, сейчас FSF пытается наезжать на компании, которые используют GPL в своих внутренних продуктах, но код этих продуктов не открывают. Так что использование GPL-ных кусков во внутренних продуктах черевато.


А на каких основаниях они наезжают? Код же нужно отдавать только тому, кому отдаёшь то, что из этого кода собрано?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.