avva: (Default)
[personal profile] avva
О ценности исходников вне конкретного проекта:
Is your code worthless?

...There is extraordinarily little code theft in this industry (even though we’re in the era of burnable DVDs and USB keys) because most code - above and beyond the industry-wide frameworks and libraries - has no value at all outside of a specific project with a specific group of developers. Trying to use it for other projects is often worse than starting with nothing at all.


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

Вот взять например код ЖЖ, над которым я работал почти три года. Все это время он был open-source. Любой мог взять его, построить свой клон ЖЖ, причем LiveJournal.com это не просто приветствовал, а еще и помогал советами, подсказывал, где что починить, если не работало, итд.

Казалось бы, готовая система для блог-сайта, с комментариями, с френдлентами, весь код уже написан, все работает. Бери и делай что хочешь: вставляй в свой сайт, меняй на свой вкус, добавляй новые возможности. И какое-то время многие пытались! Где-то в конце 2001 и на протяжении 2002 было довольно много сайтов и проектов, основанных на коде ЖЖ, судя по тому, сколько людей к нам обращались за советами и предложениями. Довольно много - больше десятка, скажем. И это те, о которых мы знали, ведь никто не обязан доложиться, а если сайт внутрикорпоративный, так его снаружи и не видно.

Но постепенно количество таких сайтов уменьшилось и почти сошло на нет. Почему? Потому что трудно оказалось на основе кода ЖЖ построить что-то, что не является идентичной копией ЖЖ (плюс-минус оформление). Для того, чтобы какие-то мелочи заменить, можно немного покопаться в исходниках, и все. Но предположим, вам захотелось бы сделать, чтобы комментарии шли не деревом, а линейным списком, как во многих других системах. Или ввести новую систему стилей для пользователей, чтобы у них было столь же много контроля над видом дневника, как в MySpace. Или еще что-то относительно глубокое. Для этого надо долго, долго сидеть над исходниками, разбираться; сделаться специалистом в MySQL и его репликации; изучить memcached и perlbal; перелопатить тонны перловского кода. Но для этого всего нужно столько вложить усилий, что за то же время, ну или не за то же, но за тот же порядок времени, можно было бы свою систему с нуля написать. А свою, ясно, с многих точек зрения привлекательней получается.

И это ведь не следствие, скажем, того, что мы плохо код писали. Код ЖЖ очень хорошо разбит на модули, библиотеки, итд. Хорошему программисту его легко читать и изучать. Это хороший код. Но ничего не поделаешь - его много. И ничего не поделаешь - он заточен под тот набор возможностей, которые LJ хотел дать своим пользователям. И вместе - выходит большая сложная система, которую тебе дают бесплатно, а все равно брать ее оказывается невыгодно. В результате что осталось из всех сайтов, основанных на ЖЖ? Deadjournal, GreatestJournal, и Lj.Rossia.org. Кажется, больше никого заметного и нет.

И это не какой-то особый случай, редкий. Нет, с почти любой сложной системой так обстоят дела.

Есть, наверное, исключения. Пожалуй, важность исходников больших проектов чаще заключается не в том, чтобы их использовать в другом месте, а в том, чтобы изучить их и выяснить какие-то подробности имплементации. Скажем, исходники Windows полезны тем, кто хочет найти дырки в Windows и написать вирусы; или тем, кто хочет написать эмуляцию Windows под Линуксом; но вряд ли они полезны тем, кто пишет само ядро Линукса. Исходники поисковой системы Гугла, над которыми я работаю сейчас, если бы их украли, вряд ли пригодилось кому-то для создания конкурентной поисковой системы; но тщательное их изучение могло бы принести многомиллионные прибыли какому-нибудь веб-спаммеру или SEO (Search Engine Optimizer - люди, которые за деньги стараются поднять посещения на вашем сайте из поисковых систем; я был совершенно поражен, узнав, насколько это большой бизнес). И так далее.

Но настоящее использование большой и сложной системы в другом месте, без команды, которая ее создала и поддерживает - редкое и почти невозможное явление.
Page 1 of 4 << [1] [2] [3] [4] >>

Date: 2007-07-15 12:52 am (UTC)
From: [identity profile] breqwas.livejournal.com
Контрпример - Mac OS X на ядре FreeBSD
Хотя это всё же чуть другое

Date: 2007-07-15 12:54 am (UTC)
From: [identity profile] avva.livejournal.com
OSX основана на BSD, не на FreeBSD.

Date: 2007-07-15 01:01 am (UTC)
From: [identity profile] breqwas.livejournal.com
"Apple Inc.'s Darwin, the core of Mac OS X; built on the XNU kernel (part Mach, part FreeBSD, part Apple-derived code) and a userland much of which comes from FreeBSD" - (с) википедия, BSD

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

Date: 2007-07-15 01:04 am (UTC)
From: [identity profile] ygam.livejournal.com
Меня когда-то поразили исходники ядра Майкрософт Оффиса (Оффис не использует mvscXX.dll). Если я когда-нибудь буду заниматься интернационализацией, то я не премяну воспользоваться Тайным Знанием того, как по-настоящему переводить строку в верхний реестр и т. д.

(например, верхний реестр "istanbul" будет "ISTANBUL" везде, кроме Турции и Азербайджана, где он будет "İSTANBUL")

Date: 2007-07-15 01:15 am (UTC)
From: [identity profile] itman.livejournal.com
Дык, это известная фишка, что перевод в верхний регистр является языкозависимым. И турецкое i тоже очень известный пример :-)
По теме: дело в том, что любой коммерческий продукт - это не только и не столько исходники, сколько пользователи + инфраструктура.
Вот сейчас Гугл бьется в Китае и России за долю рынка. И практически бестолку. Поможет ему знание исходников Яндекса? А ни фига. В принципе, он и сам ищет не хуже.
Кроме того, любой продукт нужно держать "в тонусе". Это требует не только рабочей команды, но и больших финансовых затрат.

Date: 2007-07-15 01:18 am (UTC)
From: [identity profile] a7sharp9.livejournal.com
Это не беспрецедентное положение вещей. Даже авторессы женского ироничного детектива гонят собственный код вместо того, чтобы рефакторить имеющийся, хотя, казалось бы, в этом жанре вполне сошло бы и прямое копирование целыми классами и иерархиями.

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

Date: 2007-07-15 01:35 am (UTC)
From: [identity profile] breqwas.livejournal.com
Ну почему сразу от незнания? Скажем, если в коде приходится постоянно работать, например, с датой формата YYYYMMDD в виде числа, то вполне логично написать парочку обёрток вокруг библиотечных функций работы с датами. Хотя - да, велосипеды.

Date: 2007-07-15 01:44 am (UTC)
From: [identity profile] a7sharp9.livejournal.com
О, это конечно. Я имел в виду strcpy.

Date: 2007-07-15 01:58 am (UTC)
From: [identity profile] bazarny.livejournal.com
На мой взгляд, все зависит от масштаба и цели. Да, практически нет смысла брать готовый продукт и пытаться из него сделать что-то сильно от него отличающееся. С другой стороны, часто можно найти полезные идеи, которые сделают жизнь легче. Но это далеко не весь код. Возвращаясь к гугловскому коду--на самом деле весь код поиска оптимизатору не к чему, достаточно алгоритма рассчета рейтинга.

Date: 2007-07-15 02:07 am (UTC)
From: [identity profile] msh.livejournal.com
Низкий уровень воровства кода связан с двумя факторами

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

2. Воровство кода очень опасно и если вскроется - то убытки перекроют прибыль многократно. Просто не стоит риска

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

Date: 2007-07-15 02:54 am (UTC)
From: [identity profile] itman.livejournal.com
А что есть страны, где люди с университетским образованием часто воруют?

Date: 2007-07-15 02:57 am (UTC)
From: [identity profile] nhura.livejournal.com
Ну теперь понятно, кто виноват в появлении вот таких скриптов
http://lj.setia.ru/threader
AVThreader
Скрипт для разворачивания комментариев в длинных тредах в ЖЖ.
From: [identity profile] dm-lihachev.livejournal.com
ну в смысле это к этому - "Хорошему программисту его легко читать и изучать. Это хороший код. Но ничего не поделаешь - его много."

ну вобщем код ЖЖ я читал. ну не целиком, целиком ни асилил - и как-то он мне не понравился..

ну м.б. я не являюсь Хорошим программистом? ;)


ну вобщем, судя по динамике жизни клонов ЖЖ, кол-во Хороших программистов сокращается довольно быстро (ну это понятно почему - "они не очень активны, по ряду причин, в ДЕМОГРАФИЧЕСКОМ ВОСПРОИЗВОДСТВЕ,..." - http://encyclopedia.dekanat.ru/?a=a&b=2401 ;)


м.б. там все-таки какие-то свои, архитектурные были ошибки? т.е. какие-то здоровенные конгломераты очень хорошо разбитые на модули, библиотеки, итд. - ну типа даже ЦПАНа - живут себе и не вымирают

а ЖЖ, оно да, несколько раз, когда приспичило блоги сочинять - все-таки останавливался на других вариантах, конкурирующих или самопальных
From: [identity profile] avva.livejournal.com
Ну не знаю, какие ошибки? Как-то это туманно весьма. Насчет качества кода - о вкусах итд.

цпан и проч. подтверждают именно мой point. Самые процветающие модули цпана - небольшие, делающие какую-то конкретную работу хорошо. А огромные системы из кучи модулей вымирают, потому что оказывается слишком неудобно под них подстраиваться. Например, Mail::Box - это ж просто удавиться можно. Почитайте readme Email::Simple и зачем он вообще существует.

итого

Date: 2007-07-15 04:46 am (UTC)
From: [identity profile] dm-lihachev.livejournal.com
итого

ЛЕММА1: хороший программист пишет такой код, который может читать, использовать и править и нехороший программист.

обратное тоже верно:

ЛЕММА2: нехороший программист пишет такой код, который может читать, использовать и править только хороший программист.


таким образом -  "Это хороший код. Хорошему программисту его легко читать и изучать" (http://avva.livejournal.com/1784185.html) - содержит внутреннее противоречие в самой своей формулировке, о! ;)
Image

Плагины

Date: 2007-07-15 05:13 am (UTC)
From: [identity profile] mikkim08.livejournal.com
Эклипс -- система большая и сложная и писать плагины для нее непросто, однако люди все же добавляют к ней свои плагины, расширяя ее функции, но не переписывая весь Эклипс заново.

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

Date: 2007-07-15 05:20 am (UTC)
From: [identity profile] kot-ivanovich.livejournal.com
Это всё правильно, но некоторое воровство кода все же происходит, только в другой плоскости. Очень многие программисты, хранят (иногда зашифрованные) исходники всех проектов, над которыми они когда-либо работали, аккуратно попёртые при увольнении. Зачем? А жизнь программистская полна déjà vu. Мне дают задачу, и я вспоминаю, что N лет назад я (мой приятель Вася) делал что-то ну очень похожее... Лезем в старый код, находим, и, ну не то что прём – это обычно невозможно – но идеи используем.

ne po teme

Date: 2007-07-15 05:22 am (UTC)
From: (Anonymous)
Izvinite ne po teme
menia muchaet vopros i net otveta.
Otkuda berutsa fruit flies ( ne znaiu kak po russki- vrode muxi drozofilli)
Ya prigotovil kvas - ostavil na 2 chasa otkrytim - i uzhe vezde mushki melkie eti letaiut. To zhe samoe esli ostavit' ochistki apel'sina - mushki tam budut nezamedlitel'no- dazhe zimoi.
Otkuda oni berutsa?

Re: Плагины

Date: 2007-07-15 05:25 am (UTC)
From: [identity profile] cmm.livejournal.com
есть, упрощённо говоря, три уровня сложности программистского дизайна:

- написать работающую программу

- написать пригодную для использования другими людьми библиотеку

- написать пригодный для использования другими людьми язык программирования/"фреймворк"/операционную систему

скачки сложности и цены при переходе между этими тремя уровнями нелинейные.

freebsd!

Date: 2007-07-15 05:28 am (UTC)
From: [identity profile] jerom.livejournal.com
darwin - солянка из netbsd, freebsd 3.2 и bsd
Mac OS X 10.2 на freebsd 4.4
10.3 на freebsd 5.1


Date: 2007-07-15 05:43 am (UTC)
From: [identity profile] msh.livejournal.com
Но настоящее использование большой и сложной системы в другом месте, без команды, которая ее создала и поддерживает - редкое и почти невозможное явление.

Советский CS, например ЕС ЭВМ

Re: Плагины

Date: 2007-07-15 05:47 am (UTC)
From: [identity profile] mikkim08.livejournal.com
Но ведь программы 3-го уровня сложности есть ? А Авва говорит, что "настоящее использование большой и сложной системы в другом месте, без команды, которая ее создала и поддерживает - редкое и почти невозможное явление".

Date: 2007-07-15 06:56 am (UTC)
From: [identity profile] egorfine.livejournal.com
Боже упаси, ядра фряхи нет в дарвине.

Date: 2007-07-15 06:57 am (UTC)
From: [identity profile] sleeping-death.livejournal.com
имхо, вопрос немного в другом: насколько изначально проект ориентируется на то, что будет использован кем-то на стороне.
Ну и потом, самое очевидное - это вопрос инвестиций и интеллекта. Какие деньги надо заплатить специалистам какого уровня (минимум - не ниже уровня тех, кто систему писал), чтобы они смогли полностью в ней разобраться за короткий промежуток (допустим, половину времени, потраченного на создание своей аналогичной системы).

Date: 2007-07-15 07:19 am (UTC)
From: [identity profile] ex-simanyay.livejournal.com
Согласен.

Не далее, чем вчера, смотря техтолк «How to design a good API and why it's matters» как раз думал над тем, что гораздо полезнее выпускать с исходниками библиотеки и фреймворки, чем большие, готовые проекты (особенно веб-бейзд).

Мне когда-то очень пригодился исходник libgaim, но мне абсолютно до фонаря код Adium X. Также, как код Ruby on Rails гораздо полезнее исходника, скажем, Basecamp (если вдруг его откроют). И т. д.
Page 1 of 4 << [1] [2] [3] [4] >>

January 2026

S M T W T F S
    1 2 3
4 5 6 7 8 910
11 121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 12th, 2026 11:04 am
Powered by Dreamwidth Studios