об исходниках
Jul. 14th, 2007 05:18 pmО ценности исходников вне конкретного проекта:
Верно подмечено, и мне приходилось об этом не раз задумываться.
Вот взять например код ЖЖ, над которым я работал почти три года. Все это время он был open-source. Любой мог взять его, построить свой клон ЖЖ, причем LiveJournal.com это не просто приветствовал, а еще и помогал советами, подсказывал, где что починить, если не работало, итд.
Казалось бы, готовая система для блог-сайта, с комментариями, с френдлентами, весь код уже написан, все работает. Бери и делай что хочешь: вставляй в свой сайт, меняй на свой вкус, добавляй новые возможности. И какое-то время многие пытались! Где-то в конце 2001 и на протяжении 2002 было довольно много сайтов и проектов, основанных на коде ЖЖ, судя по тому, сколько людей к нам обращались за советами и предложениями. Довольно много - больше десятка, скажем. И это те, о которых мы знали, ведь никто не обязан доложиться, а если сайт внутрикорпоративный, так его снаружи и не видно.
Но постепенно количество таких сайтов уменьшилось и почти сошло на нет. Почему? Потому что трудно оказалось на основе кода ЖЖ построить что-то, что не является идентичной копией ЖЖ (плюс-минус оформление). Для того, чтобы какие-то мелочи заменить, можно немного покопаться в исходниках, и все. Но предположим, вам захотелось бы сделать, чтобы комментарии шли не деревом, а линейным списком, как во многих других системах. Или ввести новую систему стилей для пользователей, чтобы у них было столь же много контроля над видом дневника, как в MySpace. Или еще что-то относительно глубокое. Для этого надо долго, долго сидеть над исходниками, разбираться; сделаться специалистом в MySQL и его репликации; изучить memcached и perlbal; перелопатить тонны перловского кода. Но для этого всего нужно столько вложить усилий, что за то же время, ну или не за то же, но за тот же порядок времени, можно было бы свою систему с нуля написать. А свою, ясно, с многих точек зрения привлекательней получается.
И это ведь не следствие, скажем, того, что мы плохо код писали. Код ЖЖ очень хорошо разбит на модули, библиотеки, итд. Хорошему программисту его легко читать и изучать. Это хороший код. Но ничего не поделаешь - его много. И ничего не поделаешь - он заточен под тот набор возможностей, которые LJ хотел дать своим пользователям. И вместе - выходит большая сложная система, которую тебе дают бесплатно, а все равно брать ее оказывается невыгодно. В результате что осталось из всех сайтов, основанных на ЖЖ? Deadjournal, GreatestJournal, и Lj.Rossia.org. Кажется, больше никого заметного и нет.
И это не какой-то особый случай, редкий. Нет, с почти любой сложной системой так обстоят дела.
Есть, наверное, исключения. Пожалуй, важность исходников больших проектов чаще заключается не в том, чтобы их использовать в другом месте, а в том, чтобы изучить их и выяснить какие-то подробности имплементации. Скажем, исходники Windows полезны тем, кто хочет найти дырки в Windows и написать вирусы; или тем, кто хочет написать эмуляцию Windows под Линуксом; но вряд ли они полезны тем, кто пишет само ядро Линукса. Исходники поисковой системы Гугла, над которыми я работаю сейчас, если бы их украли, вряд ли пригодилось кому-то для создания конкурентной поисковой системы; но тщательное их изучение могло бы принести многомиллионные прибыли какому-нибудь веб-спаммеру или SEO (Search Engine Optimizer - люди, которые за деньги стараются поднять посещения на вашем сайте из поисковых систем; я был совершенно поражен, узнав, насколько это большой бизнес). И так далее.
Но настоящее использование большой и сложной системы в другом месте, без команды, которая ее создала и поддерживает - редкое и почти невозможное явление.
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 - люди, которые за деньги стараются поднять посещения на вашем сайте из поисковых систем; я был совершенно поражен, узнав, насколько это большой бизнес). И так далее.
Но настоящее использование большой и сложной системы в другом месте, без команды, которая ее создала и поддерживает - редкое и почти невозможное явление.
no subject
Date: 2007-07-15 12:52 am (UTC)Хотя это всё же чуть другое
no subject
Date: 2007-07-15 12:54 am (UTC)no subject
Date: 2007-07-15 01:01 am (UTC)Anyway, это таки пример большой успешной системы, построенной на чём-то чужом, и являющейся при этом "другой".
no subject
Date: 2007-07-15 01:04 am (UTC)(например, верхний реестр "istanbul" будет "ISTANBUL" везде, кроме Турции и Азербайджана, где он будет "İSTANBUL")
no subject
Date: 2007-07-15 01:15 am (UTC)По теме: дело в том, что любой коммерческий продукт - это не только и не столько исходники, сколько пользователи + инфраструктура.
Вот сейчас Гугл бьется в Китае и России за долю рынка. И практически бестолку. Поможет ему знание исходников Яндекса? А ни фига. В принципе, он и сам ищет не хуже.
Кроме того, любой продукт нужно держать "в тонусе". Это требует не только рабочей команды, но и больших финансовых затрат.
no subject
Date: 2007-07-15 01:18 am (UTC)Собственно, о чем говорить, если в каждом более или менее развитом приложении, написанном на C, всегда имелось по меньшей мере с десяток собственных доморощенных версий функций работы со строками (аналогов strХХХ из стандартной библиотеки). Некоторые пишут их от незнания, некоторые - от недоверия, некоторые - из тщеславия, некоторые - потому что проще написать, чем смотреть в документацию, но результат тот же самый.
no subject
Date: 2007-07-15 01:35 am (UTC)no subject
Date: 2007-07-15 01:44 am (UTC)no subject
Date: 2007-07-15 01:58 am (UTC)no subject
Date: 2007-07-15 02:07 am (UTC)1. Подавляющее большинство кода пишут в странах, где люди с университетским образованием вообще очень редко воруют. В тех районах, где они живут можно оставлять открытые машины и посылки на крыльце. В крайнем случае они могут скачать фильм с торрента, но потому что искренне не считают это воровством
2. Воровство кода очень опасно и если вскроется - то убытки перекроют прибыль многократно. Просто не стоит риска
А так, в большинстве проектов, над которыми я работал, я бы с интересом почитал код конкурентов и партнеров. При том, что вряд ли стал его использовать
no subject
Date: 2007-07-15 02:54 am (UTC)no subject
Date: 2007-07-15 02:57 am (UTC)http://lj.setia.ru/threader
AVThreader
Скрипт для разворачивания комментариев в длинных тредах в ЖЖ.
хмм... а код которого МНОГО - может быть ХОРОШИМ?
Date: 2007-07-15 04:33 am (UTC)ну вобщем код ЖЖ я читал. ну не целиком, целиком ни асилил - и как-то он мне не понравился..
ну м.б. я не являюсь Хорошим программистом? ;)
ну вобщем, судя по динамике жизни клонов ЖЖ, кол-во Хороших программистов сокращается довольно быстро (ну это понятно почему - "они не очень активны, по ряду причин, в ДЕМОГРАФИЧЕСКОМ ВОСПРОИЗВОДСТВЕ,..." - http://encyclopedia.dekanat.ru/?a=a&b=2401 ;)
м.б. там все-таки какие-то свои, архитектурные были ошибки? т.е. какие-то здоровенные конгломераты очень хорошо разбитые на модули, библиотеки, итд. - ну типа даже ЦПАНа - живут себе и не вымирают
а ЖЖ, оно да, несколько раз, когда приспичило блоги сочинять - все-таки останавливался на других вариантах, конкурирующих или самопальных
Re: хмм... а код которого МНОГО - может быть ХОРОШИМ?
Date: 2007-07-15 04:41 am (UTC)цпан и проч. подтверждают именно мой point. Самые процветающие модули цпана - небольшие, делающие какую-то конкретную работу хорошо. А огромные системы из кучи модулей вымирают, потому что оказывается слишком неудобно под них подстраиваться. Например, Mail::Box - это ж просто удавиться можно. Почитайте readme Email::Simple и зачем он вообще существует.
итого
Date: 2007-07-15 04:46 am (UTC)ЛЕММА1: хороший программист пишет такой код, который может читать, использовать и править и нехороший программист.
обратное тоже верно:
ЛЕММА2: нехороший программист пишет такой код, который может читать, использовать и править только хороший программист.
таким образом - "Это хороший код. Хорошему программисту его легко читать и изучать" (http://avva.livejournal.com/1784185.html) - содержит внутреннее противоречие в самой своей формулировке, о! ;)
Плагины
Date: 2007-07-15 05:13 am (UTC)Видимо дело все-таки во входном барьере и в том, насколько хороша ил плоха встроенная в аппликацию система плагинов.
no subject
Date: 2007-07-15 05:20 am (UTC)ne po teme
Date: 2007-07-15 05:22 am (UTC)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)- написать работающую программу
- написать пригодную для использования другими людьми библиотеку
- написать пригодный для использования другими людьми язык программирования/"фреймворк"/операционную систему
скачки сложности и цены при переходе между этими тремя уровнями нелинейные.
freebsd!
Date: 2007-07-15 05:28 am (UTC)Mac OS X 10.2 на freebsd 4.4
10.3 на freebsd 5.1
no subject
Date: 2007-07-15 05:43 am (UTC)Советский CS, например ЕС ЭВМ
Re: Плагины
Date: 2007-07-15 05:47 am (UTC)no subject
Date: 2007-07-15 06:56 am (UTC)no subject
Date: 2007-07-15 06:57 am (UTC)Ну и потом, самое очевидное - это вопрос инвестиций и интеллекта. Какие деньги надо заплатить специалистам какого уровня (минимум - не ниже уровня тех, кто систему писал), чтобы они смогли полностью в ней разобраться за короткий промежуток (допустим, половину времени, потраченного на создание своей аналогичной системы).
no subject
Date: 2007-07-15 07:19 am (UTC)Не далее, чем вчера, смотря техтолк «How to design a good API and why it's matters» как раз думал над тем, что гораздо полезнее выпускать с исходниками библиотеки и фреймворки, чем большие, готовые проекты (особенно веб-бейзд).
Мне когда-то очень пригодился исходник libgaim, но мне абсолютно до фонаря код Adium X. Также, как код Ruby on Rails гораздо полезнее исходника, скажем, Basecamp (если вдруг его откроют). И т. д.