Фрагментация открытого кода


18 0

Вчера я написал заметку о том, что фрагментация в Linux не является проблемой и наоборот является преимуществом. И вы знаете, сейчас прошли уже целые сутки, но ни одного комментария. Стоит мне только сказать хоть слово против Linux, как на меня обрушивается шквал сообщений. Это только о трупах либо хорошо, либо ничего, а Linux и OpenSource вроде бы еще живы. Сегодня я хочу продолжить обсуждение OpenSource и сегодня я укажу на случай, когда фрагментация является откровенным злом и вы узнаете, почему OpenSource развивается плохо и будет развиваться очень плохо. Сейчас мы поговорим именно о фрагментации кода, а не сообщества в целом.

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

Итак, попробую описать все по порядку. Труд программиста в США – удовольствие дорогое, поэтому даже крупные компании не всегда готовы содержать собственный штат программистов и даже администраторов. Дешевле и проще платить посредникам, которые будут предоставлять готовые решения не только в программных продуктах, но и в ИТ решениях. В северной Америке очень развиты компании, которые предоставляют хостинг ИТ решений. Например, у вас есть компания Х. Вы заключаете контракт с хостингом и все ваши компьютеры будут работать с софтом, который установлен на серверах хостера. Вам не нужны администраторы, чтобы следить на своим парком машин и систем, все работает удаленно и там умные дяди за всем следят.

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

Так в чем же проблема фрагментации? Допустим, что вы внедрили открытый проект YYY 1.0 и решили его расширить под свои нужды. Вы изменили десяток файлов с исходным кодом и проект стал работать так, как вам это нужно. Здорово? Конечно!!! Но тут выходит YYY 2.0, в котором исходные коды изменены производителем. ИТ отделу компании приходится выбирать – работать на старой версии с возможными дырами или внедрить версию 2.0, но нужно бросить все текущие работы и на этот раз доработать программу YYY 2.0 под нужды компании.

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

Я сам встречался с этим в компании Интерстеп. В ней мы использовали OLAP систему с открытым кодом Pentaho. Чтобы без внедрить систему в нашу компанию, мне пришлось дописать на Java свой модуль авторизации. На это я потратил неделю, чтобы разобраться в исходных кодах и в файлах конфигурации. Помимо этого был изменен внешний вид (переписыванием кучи java файлов) и переведено все на русский язык, и на это ушло еще несколько дней.

Проходит два месяца и выходит новая версия системы (для открытых проектов это норма, выпускать новые версии каждые пару месяцев) и в нем изменен протокол авторизации и конфигурационные файлы. Внедрить новую версию с ходу не удалось, потому что копирование измененных мной файлов поверх новой версии просто убило систему. Писать все заново – я повешусь, а фирма обанкротится, если я буду каждые пару месяцев бросать все, и заниматься дописыванием Pentaho. Это уже не экономия денег, а затраты, ведь зарплата у меня тогда была 2,5 тыс. долларов. Если посадить меня на поддержку одной только Pentaho, то поддержка обойдется компании в 30 тыс. долларов в год. И это маленький проект.

Зарплаты программеров в США около 100 тыс. долларов в год, поэтому выбрасывать такие деньги на постоянную доработку решаются не многие, особенно, когда не видно выгоды. Такая фрагментация является злом и серьезным препятствием развития открытого кода.

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

На этом можно было бы закончить, но я же сказал, что кто-то считает наличие исходных кодов злом, поэтому нужно объяснить кто и почему. Это некоторые программисты, к которым отношу себя и я. Наличие исходных кодов для программиста это как валерьянка для кота. В них хочется поковыряться и улучшить что-то. Если бы Pentaho в внедряли бы администраторы, а не программисты, то они никогда не стали бы ничего дописывать и вклеивать без швов в корпоративную систему новую систему отчетности. Да, они сделали бы хуже и не так удобно, как я, но тогда не нужно было бы получать вагон проблем при переходе на новую версию.

Чтобы не было соблазна изменять исходные коды, не давайте их программистам просто так. Незачем лезть туда, где должен властвовать разработчик, а не вы. А кому еще могут понадобиться исходные коды, как не программисту? Никому, поэтому они не нужны вовсе. Единственное, когда могут пригодится исходники – когда вы хотите перекомпилировать код, чтобы он выполнялся эффективно на вашем железе, но эту проблему можно решить и без исходников.

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

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


Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым


Комментарии

Евгений

08 Июля 2009

Так разве открытость кодов виновата? На нее же можно просто не обращать внимания!
Да, очень часто разработчики открытых кодов совершенно не думают о совместимости версий. В этом случае получается что продукты хоть и под одним именем, но они разные. Т.е. неизбежно придется чем-то жертвовать: либо оставаться на старых решениях, либо переписывать по новой и даже с нуля. И задачу по решению этой проблемы придется на кого-то возложить. Будь то собственные программисты или какая-то отдельная контора. Получается, что неважно кто именно будет этим заниматься, важно сколько это будет стоить. И на основе этих расчетов и принимать решения.
Так что я не вижу прямой вины опенсорса. Скорее это отличительная черта (и не лучшая) тех кто такие проекты разрабатывает и не задумывается о конечных потребителях. Их решения усредненные, универсальные, удовлетворить каждого невозможно.
Взять ту же 1С:Бухгалтерия. С коробочной версией смогут работать не в каждом учреждении. Все зависти от способа ведения. Я, к примеру, работаю в бюджетном учреждении, поэтому нам нужен соответствующий бухучет. Фирма-представитель имеет конфигурации для хозрасчетных-организаций, поэтому ей придется переделывать конфигурации под нас. Или была раньше ЕТС (единая тарифная сетка), а теперь ввели НСОТ (новая система оплаты труда) и в каждом учреждении могут выдумывать все, что в голову взбредет, но в рамках этой системы. Так что тут совершенно неважно, опенсорс будет или закрытое решение. Для нас оно будет свое, и кому-то придется этим в любом случае заниматься. Я этим заниматься не стану, как не станет и фирма "1С", а будут люди из франшизы, специально выделенные для обслуживания именно нашей организации.

Так что, резюмируя, не вижу никакой разницы.


Максимов Алексей

08 Июля 2009

Михаил, так вы всё таки написали заново модуль авторизации для новой версии Pentaho?


olegmaster

08 Июля 2009

все правильно: если не  ворачиваешь в источник то, что добавил сам, то сам же и решаешь проблемы с выходом новой версии. RedHat, Novell, Google, IBM, Intel, Oracle и др. это уже давно поняли, поэтому они синхронизируют свой код (та часть, которая opensource) с кодом полученным из сообщества. остальные сами себе злые буратины.
не фрагментируй там, где этого можно избежать.
тот же принцип и в науке - взял из копилки до тебя произведенных знаний, добавил свое и положил обратно, чтобы потом вернулось к тебе с частичкой твоего, а не девственно новым. как бы принцип опенсурц это и подразумевает - код в первую очередь для всех, и только потом для каждого в частности разве не так?


Михаил Фленов

08 Июля 2009

2Максимов Алексей

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

2olegmaster

Мой код никто не будет синхронизировать в Pentaho. Кстати Google тоже не синхронизирует. А если учесть, что ты перечислил поставщиков, а не потребителей, то опять же пример не очень хороший. Это поставщики и они конкурируют на рынке и их врагментация - это плюс. А вот код, написанный компанией Рога и Копыта для своих нужд никому не нужен будет, и писать его нужно только в крайнем случае и нужно отдавать себе отчет, что это приведет к проблемам.

Так разве открытость кодов виновата?


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

Эта проблема придумана не мной, она существует уже очень давно.


olegmaster

08 Июля 2009

Мой код никто не будет синхронизировать в Pentaho.

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

ну как же не синхронизирует? на табличке http://www.linuxfoundation.org/publications/images/table4-companies.gif видно, что Google вносит 1.1% изменеий кода в ванильное ядро, что лишь в 10 раз меньше, чем RedHat.
Не думаю. что после создания ChromeOS гугл перестанит отдавать свои наработки сообществу, из которого он черпает. это по крайней мере, не выгодно ему.


Михаил Фленов

08 Июля 2009

Я не знаю, что написано на табличке, а в LinuxWorld какой-то архитектор Google говорил, что они используют сильно модифицированное и оптимизированное ядро. Некоторые участки кода они открывают, но основные части закрыты. Точно номер не помню, но если найду, то дам ссылку.


Notez

08 Июля 2009

И вы знаете, сейчас прошли уже целые сутки, но ни одного комментария.  


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

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


pat

09 Июля 2009

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

Вроде бы GPL обязывает открывать все свои доработки тоже под GPL.


olegmaster

09 Июля 2009

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


olegmaster

09 Июля 2009

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


Михаил Фленов

09 Июля 2009

Гугл поставщик и они могут содержать и три линукса.

Вроде бы GPL обязывает открывать все свои доработки тоже под GPL


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


Notez

09 Июля 2009

Единственный вывод это тот что сделал Notez. Хотя это не проблема открытого кода, а проблема тех кто его дорабатывает.


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


olegmaster

09 Июля 2009

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


Михаил Фленов

09 Июля 2009

Качественные коммерческие продукты предоставляют интерфейсы, через которые можно изменять проекты под себя и эти интерфейсы не должны изменятся от версии к версии. Если открытый код предоставляет что-то подобное, то ОБЯЗАТЕЛЬНО нужно использовать этот метод, а не лезть в исходные коды. Поэтому я считаю, что для программистов коды - это зло, потому что они в них лезут, а большинство (по моему опыту) открытых проектов не заботятся о предоставлении интерфейсов для настройки, а надеются на исходные коды.


olegmaster

09 Июля 2009

дык наличие интерфейса. имхо, зависит не от открытости/закрытости, а от центральных разработчиков программы. возьмем два браузера: открытый FireFox и закрытый Opera. В обоих есть механизмы интерфейсов:в первом случае - плагины, во втором - виджеты. или там два плеера - Audacious (открытый) и Windows Media Player (закрытый). в открытом есть возможность добавления плагинов, во втором вроде нет. или даже ядро системы -  у Linux - 300 системных вызовов, у Windows - бесичисленные необъятные API . глаыная мысль: открытый код может тоже предоставлять интерфейсы, так что это не аргумент.


Михаил Фленов

09 Июля 2009

У Windows Media Player интерфейсов для доработки намного больше, чем у любого другого плеера.


olegmaster

09 Июля 2009

что-то я не слышал, чтобы через WMP можно было смотреть DVB-видео, а вот через плагинный Kaffeine и vlc без проблем, но не в этом суть. одна возможность не решает. важно чтобы эта возможность реализовывалась массово и многогранно, тогда можно говорить,что интерфейс к такой-то программе работает и востребован.


Михаил Фленов

09 Июля 2009

Ты просто не нашел кодек. Для добавления новых функций видео тебе нужно всего лишь написать кодек.


Добавить Комментарий

Еще что-нибудь

Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.

О блоге

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

Обратная связь

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

Пишите мне