суббота, 28 июля 2018 г.

[prog.memories] Хороший текст был написан почти три года назад. Есть на что оглянуться

В процессе подготовки к митапу в Питере пересматриваю свои старые материалы в поисках того, что можно переиспользовать в докладе. Дошел вот до этой заметки, написанной в августе 2015-го года, т.е. без малого три года назад: It's all about in-process message dispatching или...

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

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

Например, когда я в 2015-ом году писал заметку, в "Интервэйл"-е еще оставались остатки собранной мной команды. К середине 2016-го там уже никого не осталось. А вот сделанные нашей командой на SObjectizer-е системы, насколько мне известно, все еще работают.

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

Время показало, прежде всего мне самому, что одним из основных стимулов для меня в работе над SObjectizer-ом после ухода из "Интервэйл"-а было желание сделать из SObjectizer-а нормальный продукт. Поскольку ранее SObjectizer всегда развивался на фоне прикладных проектов и для работ над SObjectizer-ом приходилось выкраивать и время, и ресурсы. В 2014-2016 годах у меня появилась возможность полностью погрузиться в развитие SObjectizer-а. Как по мне, так это дало свои плоды.

Сегодня, в 2018-ом, SObjectizer -- это зрелый, протестированный и задокументированный продукт. Путь, который мы проделали, например, в документировании за эти три года, может быть, и не впечатляет, но и отмахнуться от него нельзя. Если кому-то интересна ретроспектива, то вот, скажем, заметка от сентября 2015-го с показательными скриншотами. Со временем этот раздел Wiki пополнился новыми страницами, появилась серия презентаций по различным аспектам SObjectizer-а, несколько десятков статей на Habr-е, доклады на конференциях...

Более того, где-то в прошлом году SObjectizer достиг той точки, в которой его дальнейшее развитие имеет смысл только за счет пожеланий пользователей. То, что мы сами хотели в него вложить, мы уже вложили. Дальше новые фичи будут добавляться только по результатам использования SObjectizer в реальных проектах (что и происходит последний год, наверное).

Ну и еще одна мелочь, которая, может и не мелочь вовсе. Мы все еще находимся в рамках версии 5.5. Осенью 2014-го вышла версия 5.5.0 и до сих пор, т.е. до версии 5.5.22.1, нам удавалось избегать серьезных ломающих изменений. Т.е. если кто-то выбрал SO-5.5 для своего проекта, скажем, три или три с половиной года назад, то он мог без особых проблем обновлять SObjectizer в своих зависимостях. Не факт, что многие поймут, что это означает, но для меня лично -- это отдельный повод для гордости.

В 2015-ом меня лично напрягало сравнение SObjectizer и CAF-а (т.е. C++ Actor Framework). Не смотря на то, что CAF является более молодым проектом, известен он был гораздо больше, чем SObjectizer. Да еще заявлял о себе, как о супер-мега быстром. Что оказалось не совсем так ;) Но речь о другом. Время шло и "противостояние" с CAF-ом перестало вообще интересовать. C++ разный, C++ фреймворки разные, кому-то нравится/подходит одно, кому-то другое. Нравится кому-то CAF -- нет проблем, пользуйтесь на здоровье. Мы даже не будем пытаться отговаривать вас от этого. Хорошо, что C++ники интересуются CAF-ом, было бы хуже, если бы интересовались Go, Erlang или Akka.

Потребовалось время, чтобы перестать волноваться о том, что там у "конкурентов" и научиться концентрироваться на том, что пользователям нужно в SObjectizer-е. Раньше следил за CAF-ом и тратил время на то, чтобы объяснить чем CAF отличается от SO-5. А сейчас на это вообще не заморачиваюсь. В сторону CAF-а приходится смотреть только когда нужно в какой-то статье или презентации дать ссылку на актуальную версию CAF-а.

Прошедшие три года так же показали, что маятник OpenSource пока еще не качнулся в нужную нам сторону. Т.е. народ как любил халяву, так и любит. SObjectizer, будучи OpenSource-продуктом, денег напрямую не приносит. В принципе, это было ожидаемо, так что здесь никаких крушений надежд не произошло. Но осадочек остался :). Тем интереснее вот что: доживу ли я до того момента, когда станет понятно, что сам по себе OpenSource -- это помойка и бардак, и что нужно нехило вложиться для того, чтобы из этого появлялось что-то нужное вам и имело бы достаточный уровень качества и стабильности? ;)

Вот о чем можно пожалеть, так это о том, что за прошедшее время не сформировался публично доступный список т.н. success stories. Получается, что мы знаем о применениях SObjectizer-а больше, чем можем рассказать. Прям как "У нас есть ТАКИЕ приборы! Но мы вам о них не расскажем". Остается надеяться, что ситуация будет меняться к лучшему.

В завершении хочу поблагодарить всех, кто помогал и поддерживал нашу небольшую The SObjectizer Team. Без вас сложно было бы достичь того, чего мы достигли за те пять лет, как SObjectizer-5 начал жить своей собственной жизнью. Большое человеческое спасибо!

Комментариев нет: