Здравствуйте, eao197, Вы писали:
E>Не думаю. Еще раз сошлюсь на пример с Enterprise Linux. Он часто используется, например, в банках. В том числе и для поддержки internet-сервисов банка. Но банки не распространяют его исходники.
Но могут (разве что придется убрать торговые марки).
Здравствуйте, eao197, Вы писали:
X>>вот например такой интересный момент: заказчик решил установить это ПО на свой сервер, вывел его в инет и предоставляет некий сервис за плату X>>должен он тогда раскрыть код ? E>Не думаю. Еще раз сошлюсь на пример с Enterprise Linux. Он часто используется, например, в банках. В том числе и для поддержки internet-сервисов банка. Но банки не распространяют его исходники.
такой пример не пойдет:
1. банки и не должны распространять исходники — это потребители
2. исходный код RHEL открыт — из него и собирается CENTOS
насколько я сам понял, если код под GPLv2, то исходный код сервиса можно не открывать
насчет GPLv3 неразобрался
Здравствуйте, Kore Sar, Вы писали:
KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.
KS>Сейчас понаписано миллионы строк одинакового кода различными людьми и довольно много кода открыто для свободного использования. И самый эффективный программист это тот, который ипользует чужой код по максимуму и не пишет больших велосипедов.
KS>Ваши мнения?
Как опытный велосипедостроитель не могу не.
Всегда есть цена, которую надо платить за адаптацию чужого кода. Это время, которое нужно затратить и на то чтобы понять основную функцию, которую чужой код выполняет, и время, затрачиваемое на то, чтобы раскопать(наткнуться на, удариться об) неявные предположения, которые сделаны в таком коде, и время, которое может потребоваться на развязку куска нужного кода с кусками ненужного. И так далее.
Все зависит от кода, который собираются переиспользовать. Если речь идет о больших библиотеках, то цена адаптации часто бывает ниже выгоды переиспользования. Если речь идет именно о велосипедах, причем небольших велосипедах, то часто цена адаптации выше выигрыша. И так далее.
Как человек, трудолюбиво пишущий маленькие и средненькие велосипеды, я могу сказать что стоимость написания даже маленького велосипеда неожиданно выше чем кажется с первого взгляда. Для маленьких велосипедов абсолютно недостаточно написания только кода. Если в некоторых других местах я могу позволить отсутствие тестов, в маленьких велосипедиках нужна всеобъемлющая тестовая поддержка, начиная от простых юнит-тестов и заканчивая "грязными" тестами, так как велосипедики на то и велосипеды чтобы быть использованы в проекте повсеместно. В противном случае их написание нерационально — часто код тестов для маленьких велосипедов в несколько раз превышает размерами сам велосипед. И вместе с тем применение маленьких велосипедов оправдано и рационально, потому что оно верно (шутка юмора).
Очень часто даже библиотечные велосипеды имеют колеса несовместимые с нашими педалями (например функция String.split из java). Что уж говорить о сторонних и плохо обкатанных велосипедах! Многие известные деятели (тов. Кнут, тов. Дейкстра, тов. Чарльз Мур) вообще скажут что сторонний код им нужен для извлечения основной идеи. А уж код после этого они напишут сугубо свой, доморощенный.
Здравствуйте, borisman3, Вы писали:
B>Как опытный велосипедостроитель не могу не.
B>Всегда есть цена, которую надо платить за адаптацию чужого кода. Это время, которое нужно затратить и на то чтобы понять основную функцию, которую чужой код выполняет, и время, затрачиваемое на то, чтобы раскопать(наткнуться на, удариться об) неявные предположения, которые сделаны в таком коде, и время, которое может потребоваться на развязку куска нужного кода с кусками ненужного. И так далее.
Лично я неаблюдаю картину что написание своего кода занимает не много времени. бОльшую часть времени занимает отладка и обдумывание интерфейса и т.п. Но в основном отладка и тестирование.
Здравствуйте, minorlogic, Вы писали:
M>Здравствуйте, borisman3, Вы писали:
B>>Как опытный велосипедостроитель не могу не.
B>>Всегда есть цена, которую надо платить за адаптацию чужого кода. Это время, которое нужно затратить и на то чтобы понять основную функцию, которую чужой код выполняет, и время, затрачиваемое на то, чтобы раскопать(наткнуться на, удариться об) неявные предположения, которые сделаны в таком коде, и время, которое может потребоваться на развязку куска нужного кода с кусками ненужного. И так далее.
M>Лично я неаблюдаю картину что написание своего кода занимает не много времени. бОльшую часть времени занимает отладка и обдумывание интерфейса и т.п. Но в основном отладка и тестирование.
В принципе так, иначе мы не писали бы своих велосипедов. Но вместе с тем зачастую бывает так что в маленьком велосипедике кроется (как правило некритичный) баг который будет понят и исправлен только спустя очень длительного времени. Так что часто разработка велосипедика оказывается в несколько раз дороже чем кажется (но все равно на порядок проще чем адаптация чужого).
Здравствуйте, Kore Sar, Вы писали:
KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.
KS>Сейчас понаписано миллионы строк одинакового кода различными людьми и довольно много кода открыто для свободного использования. И самый эффективный программист это тот, который ипользует чужой код по максимуму и не пишет больших велосипедов.
KS>Ваши мнения?
Мое мнение — самый эффективный программист это тот, который решает задачи быстро, просто и надежно. А использует ли он чужой код или пишет все с нуля никакого значения не имеет.
Теперь о вопросе:
Повторному использованию кода мешают:
1. Неосведомленность программиста о том, что есть код который можно использовать повторно.
2. Наличие особенностей в текущей задаче не позволяющих использовать чужой код без изменений.
3. Плохая обобщенность чужого кода и невозможность менять отдельные детали поведения без изменения кода.
4. Сложность поддержания измененного чужого кода, если только изменение позволяет использовать код повторно.
5. Боязнь чужого кода: боязнь багов, боязнь непонимания его внутреннего устройства.
Повторное использование зависит от массы факторов:
1. Уровня программиста пытающегося повторно использовать код.
2. Уровня программистов написавшего общий код.
3. От языка программирования и средств разработки. Например, в С++ повторное использование кода применяется крайне редко, в то время как в Яве и дотнете значительно чаще.
Повторное использование не всегда дает выгоду. Можно протрахаться с чужим кодом неограниченное количество времени и не получить нужного результата. В прочем, обратное тоже случается.
Итого, мой вердикт таков... Нужно смотреть на каждый конкретный случай. Где-то повторное использование даст преимущество, где-то нет.
Вот что нужно делать всегда и без каких-либо оговорок — это повторно использовать знания! Велосипед не долго создать с нуля если ты знаешь как это сделать. А если ты не знаешь как это сделать, то и использовать чужой велосипед будет крайне сложно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Теперь о вопросе: VD>Повторному использованию кода мешают: VD>1. Неосведомленность программиста о том, что есть код который можно использовать повторно. VD>2. Наличие особенностей в текущей задаче не позволяющих использовать чужой код без изменений. VD>3. Плохая обобщенность чужого кода и невозможность менять отдельные детали поведения без изменения кода. VD>4. Сложность поддержания измененного чужого кода, если только изменение позволяет использовать код повторно. VD>5. Боязнь чужого кода: боязнь багов, боязнь непонимания его внутреннего устройства.
Существует по крайней мере еще один момент, на который часто нарываешься — лицензия.
Здравствуйте, VladD2, Вы писали:
ВВ>>Существует по крайней мере еще один момент, на который часто нарываешься — лицензия. VD>Естественно. Но это не технический вопрос, а форум технический.
Да ладно, форум "философский"
Да и почему-то мне кажется, что причины, по которым код в опен сорсе повторно не используются, в основном как раз не технические.
Здравствуйте, Kore Sar, Вы писали:
KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила. KS>Сейчас понаписано миллионы строк одинакового кода различными людьми и довольно много кода открыто для свободного использования. И самый эффективный программист это тот, который ипользует чужой код по максимуму и не пишет больших велосипедов. KS>Ваши мнения?
На самом деле все зависит от того, что мы имеем в виду под кодом. Идет ли речь о решении какой-то конкретной задачи, которая обычно занимает два-три часа времени? В этом случае использовать чужой код действительно приходится редко. Хотя бы потому что быстрее написать самому, чем искать подходящее решение. Если даже задача довольно сложная и нетривиальная, то от готовой реализации нужен прежде всего не сам код, а именно решение, которое и представляет основную ценность и которое я могу уже переписать сам, в соответствии со стилем и архитектурой своего проекта. (Причем в этом ИМХО основной смысл опен-сурса, а не в возможности повторного использования путем cut && paste).
Если же речь идет, скажем так, о больших "подсистемах", то повторное использование живет и процветает. Если вам нужен в проекте встраиваемый движок SQL-БД, то надо быть откровенно двинутым на голову, чтобы писать его самому, когда есть прекрасный sqlite — даже если вам придется модифицировать и затачивать его под свои нужды. Или если я пишу, скажем, навигатор для того же sqlite и мне нужен редактор кода — разработать собственный редактор в таком случае тоже довольно странное решение, когда есть уже готовые, с открытым кодом, в кол-ве больше одного.
Здравствуйте, Kore Sar, Вы писали:
KS>Сорсфорж меня, как админа одного из проектов, попросил заполнить анкету. Анкета касалась повторного использования кода в оперсонрсных программах. В связи с чем у меня возникло подозрение, что мало людей использует чужой код. А ведь это золотая жила.
KS>Сейчас понаписано миллионы строк одинакового кода различными людьми и довольно много кода открыто для свободного использования. И самый эффективный программист это тот, который ипользует чужой код по максимуму и не пишет больших велосипедов.
KS>Ваши мнения?
На мой взгляд в использование чужого кода достаточно много трудностей, которые уже не раз были озвучены в данной ветке. Это: и необходимость поиска этого самого чужого кода, и разбор чужого кода, для понимания сути его работы, и доделка этого кода под твою конкретную задачу, и поиск ошибок в чужом коде.
На мой взгляд самое правильное решение — это потратить время на то чтобы разобраться, как работает чужая программа с открытом кодом. И как уже кто-то сказал здесь, понять для себя идею её работы. А как только ты узнал идею, тебе уже будет не так сложно написать свой код, который ты будешь детально знать и понимать, что избавит тебя от многих трудностей.
W_M>На мой взгляд в использование чужого кода достаточно много трудностей, которые уже не раз были озвучены в данной ветке. Это: и необходимость поиска этого самого чужого кода, и разбор чужого кода, для понимания сути его работы, и доделка этого кода под твою конкретную задачу, и поиск ошибок в чужом коде.
W_M>На мой взгляд самое правильное решение — это потратить время на то чтобы разобраться, как работает чужая программа с открытом кодом. И как уже кто-то сказал здесь, понять для себя идею её работы. А как только ты узнал идею, тебе уже будет не так сложно написать свой код, который ты будешь детально знать и понимать, что избавит тебя от многих трудностей.
Имхо именно с этим спорит топикстартер. И я с ним согласен.
Может быть пора уже заканчивать с "тысячами складов"?
Здравствуйте, VGn, Вы писали:
VGn>Имхо именно с этим спорит топикстартер. И я с ним согласен. VGn>Может быть пора уже заканчивать с "тысячами складов"?
А как заканчивать с этими самыми "тысячами складов"? Чтобы с ними закончить нужно как раз и ответить на вопросы, которые я перечислил.
1) Как найти готовый код для решения конкретной задачи?.
2) Как максимально упростить разбор чужого кода?
3) Как максимально быстро найти ошибки в чужом кода (если они там имеются)?
А так как многие у нас пишут код "своими методами" и никто не учит писать код так, чтобы потом всем было легко разобраться в нем, то решение перечисленных трех задач представляется довольно трудоемким процессом.
На мой взгляд нужно выделить некие обобщенные задачи, которые часто решаются, и в которых действительно необходимо использование чужого кода. И вот на основе таких частей строить репозиторий, откуда любые желающие смогут взять требуемый им кусок кода или библиотеку. Но это делается и так, и многие программисты (в том числе и ваш скромный слуга) активно этим пользуются. Последний пример, который мне сразу приходит в голову, это использование библиотеки NHibernate для решения задачи ORM маппинга.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Kore Sar, Вы писали:
CC>>>Переиспользованию кода мешают например разного рода лицензии (GPL в том числе) а также качество этого самого кода. KS>>Я специально написал в исходном сообщении не "открытого кода", а "кода свободного использования". Т.е. давайте не рассматривать код, который хоть и открыт, но запрещен к использованию.
E>Не сочтите за придирку, но GPL очень сложно назвать "запрещенным к использованию". Поэтому термин "запрещен к использованию" следовало бы уточнить.
GPL легко может оказаться "запрещенным к использованию", если ваша лицензия не совместима с GPL.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, x905, Вы писали:
E>>>В последние годы я работаю над проектами двух типов -- первые предназначены для использования нашей компанией и распространять их исходники мы не хотим и заказные проекты, в которых исходники передаются заказчику. В первых, очевидно, GPL не применим. Во вторых -- для нас нет никаких препятствий в использовании GPL кода.
X>>а не наоборот?
E>Нет.
X>>если используеш для себя(внутри компании) — то показывать исходники ненужно
E>Насколько мне известно, сейчас FSF пытается наезжать на компании, которые используют GPL в своих внутренних продуктах, но код этих продуктов не открывают. Так что использование GPL-ных кусков во внутренних продуктах черевато.
А на каких основаниях они наезжают? Код же нужно отдавать только тому, кому отдаёшь то, что из этого кода собрано?