О выборе базовых технологий и open source

Apr 25, 2010 02:20

Лог моей беседы с thesz.

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

Но беседа ИМХО стоит публикации, несмотря на особенность.


Сергей: Хеллоу, дир френд!
Можешь ли порекомендовать моему знакомому статью по Эрлангу на русском?

Vlad: Боюсь, что нет.
mammut мог писать. надо поискать.

Отправлено в 1:09 воскресенье
Сергей: Ща поищу.
Спасибо за наводку.

Отправлено в 1:10 воскресенье
Сергей: Знакомый собрал и запустил erlyvideo, не зная языка, исключительно по документации.
И оно заработало. ;)

Vlad: Охренеть :)

Сергей: Думает использовать в их продукте.
Неделю мучался, сейчас Эрланг изучает. ;)
Не мучался, а лениво пытался, как я понял.

Vlad: Молодец :). А это erlyvideo - оно реально круто?
Стоит того?

Сергей: Оно много, что умеет.

Vlad: Хм.

Сергей: Собирать видео со многих источников, хранить, показывать с произвольного места (насколько я понял).

Vlad: Блин.
И работает нормально при этом?

Сергей: У них какой-то проект с определением движения и отслеживанием людей, многие фичи им нужны.
Ну, как.
Работает до упора - либо железа, либо канала.

Vlad: Я с подозрением отношусь к опенсорс проектам. Особенно, ты удивишься - на языках типа Эрланга и Хаскеля.

Сергей: Что ещё интересно, возможность скользить по времени там достаточно хорошая.
А что так?

Vlad: Коммитеров обычно в них сильно меньше.

Сергей: "Главное не величина мускула, а куда ты его можешь засунуть!" (C) House MD
;)

Vlad: Соотсественно, выше риски что заглохнет, что баги не пофиксят, и что развиваться не будет.

Сергей: Качество коммитеров выше.
Проще разобраться.

Vlad: Выше риски что заглохнет, и баги не пофиксят.
Пусть их меньше, и пусть проще разобраться.
Смысл, когда ты берешь технологию - не в том, что тебе проще разобраться, а в том, что разбираться в ее кишках не надо.

Сергей: А вот смотри на darcs или pugs.

Vlad: Только в интерфейсе.

Сергей: Насчёт числа и качества коммитов.

Vlad: darcs чем-то по потребительским ттх лучше bazaar и mercurial?

Сергей: В момент старта он был лучше всего. ;)

Vlad: Не числа коммитов, а числа коммитЕРОВ.

Сергей: Разве, что по скорости проигрывал. ;)
А что тебе с числа коммиттеров?

Vlad: Читай выше.

Сергей: Ненененене.

Vlad: Риски меньше, что заглохнет.

Сергей: Вот, смотри.
Ты ориентируешься на число разобравшихся в кишках, при этом сам стремишься не разбираться.
Противоречия не видишь?

Vlad: Именно так.
Не вижу.

Сергей: Тогда ты не можешь выбирать Windows в качестве платформы.

Vlad: Могу.

Сергей: Разрешай противоречие.

Vlad: В чем оно?
Покажи - разрешу.

Сергей: Число коммиттеров в Windows мало. Ты не выбираешь технологию, число коммиттеров которой мало. Ты можешь выбрать Windows.

Vlad: У коммитеров в виндоуз строгий мотив туда коммитить - им зарплату платят. И, если кому надоест - на его место гарантированно найдут нового.
У опенсорс-проектов мотив гораздо слабее, и если надоест (что произойдет с большей вероятностью) - никто не гарантирует появление ему замены.
Это относится не к хаскелю и эрлангу, а к опенсорс проектам вообще.

Сергей: Тогда согласен.

Vlad: Кроме тех, которые спонсируются коммерческими компаниями.

Сергей: А что говорит твой живот насчёт стабильных на данный момент проектов?
Типа, протестировал на своих сценариях, всё работает.

Vlad: Если все устраивает, то можно брать.

Сергей: Будешь ли ты использовать стабильную версию?
Собственно, я так же отношусь.

Vlad: Да, если она стабильна, и устраивает.
Но вот тебе пример. Взял недавно шаблонный движок mustache.js.
Для генерации HTML в браузере.

Сергей: Это же только усы, бороды нет.

Vlad: Все устраивало.

Сергей: Брать нельзя, не взлетит. ;)

Vlad: С проблемами столкнулся только через три недели.
Это по меркам данного проекта довольно много.
И сама либа - всего 8 килобайт.
Пришлось выкинуть нахуй, и срочно переписывать.
К счастью, я справился за 6 часов.
Уложившись в килобайт.
Мне повезло. Половину килобайта я нашел в сети.
Сам бы хуй написал.
Мораль в том, что проблемы ты можешь найти сильно позже.

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

Vlad: И, если проект мертвый, и ты целиком на него положился - ты попал.

Сергей: Поэтому стараюсь абстрагироваться.
Поэтому я могу использовать и мёртвые проекты. ;)

Vlad: Просто дело в том, что довольно дорого устраивать действительно полное тестирование в начале.

Сергей: У меня на iMac ghc 6.8. ;)

Vlad: Знаешь, в чем был косяк mustache?
Эта херь нормально жует функции, но не видит функции определенные в прототипе.
Это почти невозможно определить сразу при тестировании.

Сергей: Не полное, а по требуемым сценариям.

Vlad: И это охренеть как важно.
А ты не все сценарии сначала знаешь.
В этом и жопа.

Сергей: Нененене.

Vlad: Найдется мелочь, которая станет принципиальной.
Да-да.

Сергей: Я знаю ровно столько, чтобы абстрагироваться.

Vlad: Я сначала попробовал поправить mustache. Этпесдец.
Переписать оказалось дешевле.

Сергей: Например, я знаю, что у меня будет SQL, не менее 92.
Я пишу с расчётом на это.

Vlad: А потом найдется мелочь, из-за которой все станет раком.

Сергей: Если я обнаружу ошибку в MySQL, я возьму Sqlite. И тп.

Vlad: Так - можно.
Когда у тебя интерфейс стандартен.
А когда нет?

Сергей: С другой стороны.
Когда я писал всякую секрутню фигню для UC, я заложился на разные IPC.
Сделал абстракцию и вперёд.
Поулчилось.

Vlad: Только язык хранимы процедур сильно различается в MySQL и PostgreSQL. Тебе придется реально много переписать, если ты в проекте увяз.

Сергей: Язык хранимых процедур я буду генерировать.

Vlad: Сделал абстракцию? Знал бы где упал - сена бы подложил.
Я не буду.
Я предпочитаю SQL.

Сергей: Ещё раз.
Перед использованием сторонней либы я определяю границы использования её и её замены.

Vlad: И абстракцию у тебя сделать не выйдет - если ты сразу не будешь рассматривать и MySQL и PostegreSQL.

Сергей: После чего пишу уровень абстракции, куда можно подтыкать нужное или работающее.

Vlad: Возможности у ни разные.
А ты не будешь их рассматривать сразу.

Сергей: Я достаточно опытен, чтобы понимать, что мне надо рассматривать. ;)
Возможности разные.
Но что делать?..
Придётся уравнивать. ;)

Vlad: Как только ты утверждаешь "Я достаточно опытен, чтобы понимать, что мне надо рассматривать" - ты попал :)
Я тебе говорю о рисках.

Сергей: А я тебе говорю, как бы я стал их уменьшать. ;)
С тем же mustache.

Vlad: Уравнивать вазоможности А и Б нельзя, если ты не знаешь о Б в момент написания абстракции для А.

Сергей: Тебе был нужен весь HTML?

Vlad: А знать все в принципе невозможно.
И жутко дорого.
Причем тут весь или не весь HTML?

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

Vlad: Косяк усов был не в нем, а в том, как дебильно mustache работал с данными.
То, что нужен именно шаблонный движок - это принципиальное требование.

Сергей: Шаблоны можно делать многими способами.

Vlad: Хотя, по честному, я был не сильно завязан на mustache,

Сергей: Ну, не знаю, в общем.
;)

Vlad: Все что угодно можно сделать многими способами.
:)
Все - это ничего.
Я вообще под впечатлением от Хрюшки.
Он сцуко натурально гуру.
У меня временное просветление. :)

Сергей: Вот смотри. Ты взял моё высказывание о шаблонах. Переписал его, заменив "шаблоны" на "всё". И, таким образом, опроверг мой тезис.
Но я его разовью.
Я не большой спец в шаблонах.

Vlad: Шаблоны можно делать многими способами. Все что угодно можно сделать разными способами - и что?
Ну - можно.

Сергей: То, что mustache здесь ни при чём.

Vlad: Как ты считаешь, для иллустрации чего именно я его привел?

Сергей: И твой косяк с обнаружением косяка в нём - тоже не причём.
Это нормальная рабочая ситуация.

Vlad: Повторяю вопрос.

Сергей: Повторяй.

Vlad: Для иллюстрации чего именно я по твоему привел усы?
Повторил :)

Сергей: Да хрен знает.

Vlad: Ага. Объясняю.

Сергей: Погоди.
Я допишу,

Vlad: Ок.

Сергей: Ты на основе одного косяка делаешь далеко идущие выводы про проекты в целом.
Сам знаешь, что JS не лучший язык для серьёзной разработки, но приводишь проект на нём в роли манифеста общих для всех проектов свойств.
Собственно, я всё. ;)

Vlad: Отвечаю. Те свойства, для иллюстрации которы я привел в пример усы, никак не зависят от языка.
Объясняю.
Я иллюстрировал простую вещь
Что сразу ты не сможешь протестить все тонкости.
И может так выйти, что какая-нибудт из ни станет принципиальной.
И тогда, еси проект мертвый - пиздец.
Ты даже вопроса по нему в форуме задать не сможешь.
Нахуй нужно.
Риск небольшой - но чрезвычайно дорогой.
И я не уверен насчет "небольшой".

Сергей: Тогда я.
Смотрим на твой пример.
Действительно, ты не смог понять проблем.
Действительно, получилось плохо.
Но смотрим же на твои же затраты... ;)
Так и здесь.
Тот же Sqlite.

Vlad: Мне просто повезло.

Сергей: Сколько у него коммиттеров?

Vlad: хз.

Сергей: Натурально, один человек.

Vlad: У него пользователей много.
Да ладно?!

Сергей: Практически.

Vlad: Ок, насчет предыдущего - мне просто повезло, и я, как разумный человек, это осознаю.
Насчет SQLite - я в шоке.
Но у него очень много юзеров.
И это понижает риск критичных багов.
Потому, что его в разныз позах юзают.
И следовательно, - качество приличное.
Это нивелирует фактор одного коммитера.
Можно использовать stable, даже если проект мертв.
Главное - я не первый.

Сергей: Э, наврал насчёт одного.
Я наврал, конечно же.

Vlad: Да это неважно.
Он многократно использовался в продакшне, и это известно.
Что, кстати, не скажешь про erlyvideo.
Поэтому и говорю - отважный человек твой знакомый.
Рискует.
Может повезти.
а может и нет.

Сергей: А что, если подходящей функциональности нет вообще?

Vlad: Тогда я бы рискнул точно так же, как он.
Ибо - риск уравновешивается величиной выигрыша :)
Понятно, ради чего ты на него идешь.

Сергей: В общем, выбор следующий: "писать самому сейчас" против "возможно, писать самому в будущем". ;)

Vlad: Но риск надо осознавать.
Примерно так.

Сергей: Размен времени старта на риск.

Vlad: И если один хрен ты в ситуации, когда функциональности нужной нет - лучше взять пусть возможно глючное - но чужое.
Вдруг свезет.
Один хрен - писать придется. А так - прототип сделаешь быстрее.

Сергей: Опять же, "меньше писать сейчас". ;)

Vlad: Да.

Сергей: Ну, да. ;)

Vlad: Я всял мустаче только поэтому.
В общем, я правильно поступил.
:)

Сергей: Согласен. ;)

Vlad: Но мне повезло :)

Сергей: Оно у тебя заработало в общем и целом, а потом ты исправил по своему новоприобретённому пониманию. ;)

Vlad: Да.

Сергей: Так что усы тебя почти спасли. ;)

Vlad: Но я поимел ложные иллюзии.

Сергей: Но впредь бери бороду. ;)

Vlad: Я расслабился, и не закладывал время на переписывание.

Сергей: То, что ты поимел ложные иллюзии, это даже хорошо.

Vlad: Короче, риски - натурально тонкая штука. :)
Чем хорошо?

Сергей: Хуже было бы, если бы иллюзии поимели тебя. ;)

Vlad: :)))

Сергей: Насчёт рисков согласен. ;)

Vlad: Мне просто повезло, что я их поимел :)

Сергей: Хрен учтёшь.
Даже если /всё знаешь/. ;)

Vlad: Вот, самая основная ошибка в этом деле - это думать что все знаешь.
Я думаю, тут одна мораль :)

Сергей: Я стараюсь защититься кодогенерацией из спецификации.

Vlad: Надо, сцуко, давно понять: доверять нельзя никому. Даже себе :)

Сергей: Мне - можно. ;)

Vlad: Типа того :)
Короче, только отморозки ничего не бояццо. Реальные пацаны - всегда на измене! :)

Сергей: ;)

Vlad: Цитата из фильма какого-то нашего с Бодровым.
Зачотная.

Сергей: Я в магазин за хлебом и едой.
Потом спать. ;)
Спокойной ночи! :)

Vlad: давай
пока

open source, erlang, риски, haskell

Previous post Next post
Up