Devconf 2016: Интервью с разработчиком SphinxSearch

image
Мы любим делать интервью с нашими докладчиками. На этот раз — интервью с Андреем shodan Аксеновым, создателем поискового движка SphinxSearch (не знаю как сейчас, но раньше хабр использовал именно этот движок для поиска по сайту) и, как оказалось, еще пары движков. На нашей конференции он будет рассуждать на извечную тему: Devs vs CTO vs CEO. Само интервью вышло довольно интересным. Андрей честно и откровенно ответил на вопросы, за что ему большой респект :)

Я тебя знаю как разработчика Sphinxsearch, но, как показывает твоя краткая биография, которую ты дал в описании доклада, похоже компьютерная графика — твоя главная страсть?

Все одновременно проще и сложнее, какой-то главной мегастрасти нету :) Есть сколько-то интересные области, есть безразличные. Делать всякий низкий уровень, типа поискового движка, 3D игры, обработки видеозахвата, крохотного недогипервизора (V8086), патчить MySQL или ядро операционки, писать спецмодули к Апачику, улучшать известный алгоритм сжатия или даже просто ковыряться с особо толстыми и тормозными SQL запросами — все это бывает довольно интересно (а бывает нет!, но чаще интересно). А вот рисовать формочки для GUI, неважно, на моднейшем Node.js или дохлом Delphi, или там править унылые отчеты в 1C — таки не очень. Говорю по личному опыту, тк. в какой-то мере занимался всем вышеперечисленным и еще всяким.

Вообще, я погуглил твою биографию и ничего не нашел. Даже статьи в википедии про тебя нет!

И это очень хорошо, я скрытный и нелюдимый человек. Да и достижения на статью (pun intended) еще пока, надеюсь, не тянут, муахаха.

Заполни пробел. Расскажи с чего все и как? Про TheEngine. Расскажи почему закончился TheEngine и с чего начался Sphinx.

Все нехитро. Борис Баткин, с которым мы познакомились в FIDO, затеял свою геймдев-компанию и внезапно меня туда позвал, ну, а я не менее внезапно согласился и поехал. Компания Skyfallen сумела построить 3D движок, инструментарий и несколько игр на нем, плюс лицензировать технологию еще в несколько игр. Я поначалу был ответственный за собственно графику, анимации и прочий низкий уровень, потом помаленьку захватил общее руководство командой разработчиков. А потом как бы заскучал и ооочень мееедленно уволился. (Fun fact: первый раз с Борей лично повидались где-то на 7 м, что ли, году знакомства и 4 м году моей работы. И так бывает!)

Sphinx начался еще до этого всего, самая первая версия датирована чем-то вроде сентября 2001 года. Есть формальная дата рождения, то есть день, когда для 30 кб исходников в папочке с названием dbindex придумалось именно название Sphinx. Только я ее ни разу не праздновал и забываю постоянно. Потом оно полежало в столе годиков так 5, потом, под влиянием Петра Зайцева, было выложено в интернеты, нашло свою небольшую базу пользователей и совсем крохотную, но ненулевую, готовых платить за всякое клиентов. Посовмещав это дело некоторое время я понял, что далее внятно работать в геймдеве днем и над поиском вечерами и выходными более не могу, надо что-то выбирать. Мучительно выбрал Sphinx, это было где-то в 2007 году.

Что со сфинксом сейчас? Последняя версия 2.2.10 (2015–09–09).

Это последний официально собранный пакет, а не последняя версия. Есть версия 2.3, посвежее, живет в мастере, вполне себе поддерживается. Есть багфиксы в 2.2, тоже вкатываются при случае. Мы сколько-то поддерживаем ветки 2.x и ведем разработку большой переделки 3.0 по мере сил, первое сразу видно в коммитах на гитхабе, второе пока не видно никак, но тоже будет выкачено на гитхаб рано или поздно. Однако сил у нас последнее время по разным причинам немного, поэтому на сегодня, увы, получается вот так, медленно и печально. В частности вот на пакеты подзабили. Как обычно в опенсорсе, умеете лучше — приходите к нам в гости, сделайте хорошо, будем только рады :)

Ну и, наконец, Unigine. Чем там занимаешься?

Помогаю существующей команде разработчиков с проектом и расти над собой. Это включает в себя все подряд от написания кода до прочтения лекций.

Вообще, у меня стандартный стереотип, графический движок — значит для игр, но, похоже, Unigine больше используется проектами с других индустрий (хотя и играми тоже). Там какая-то разница в подходах, или то, что «Движок Unigine признан экспертами как лучшая 3D технология под Linux»(взято из вики) сыграло свою роль?

В нише т.н. профессиональной симуляции (это тренажеры, архитектура, VR и все такое) есть свои спецтребования, которые с одной стороны кажутся вроде бы мелкими, но как только займешься плотно, меняют все. Классический пример: в большинстве игр типичная локация имеет размер, скажем, 1×1 км, или там целых 10×10 км, плюс накопленные ошибки не очень важны. Поэтому для хранения всяких координат в массе мест можно использовать 32-бит float и все нормально. А для тренажеров этого не хватает: например, на дистанции в 3000 км поезд поедет через всю Австралию, но приедет не туда. Или, эээ, изделие возьмет и мимо прилетит, что является неуставным поведением и поэтому решительно недопустимо. Упс, внезапно надо хранить координаты в 64-бит double, и выбор движков резко снижается. Или вот еще один пример: можно просто взять и загрузить детализированную модельку на 5 миллионов полигонов в движок и оно заживет, а можно вообще не суметь, тк. движок упадет. Опять небезынтересное отличие!!! Но в играх это никому не надо, так что особо и не делают. Так что да, Unigine в первую очередь про такое, а для целей постройки игр Unreal либо Unity, скорее всего, подойдут лучше.

Каково быть разработчиком open source движка, такого как Sphinx? Чем в основном приходится заниматься?

Каково — затрудняюсь ответить. Ну, эээ, ну есть вот такой проект в как бы достижениях, ну, эээ, что еще сказать. Ну да, ну Sphinx, ну что… Заниматься в нем в разные моменты времени приходилось совершенно всем подряд. Когда код пишешь ударно, когда с потенциальными клиентами созваниваешься в режиме марафона (и думаешь при этом: вот бы лучше кода пописать), когда лежишь и в потолок плюешь, все бывало.

«Пишешь движки за еду» говоришь… неужели все так плохо? Мало покупают саппорт? Может у тебя пара особняков в европах, а ты тут прибедняешься? :)

А поддержку Sphinx никогда в промышленных количествах не покупали, так и не научились мы ее ловко продавать. Исторически в разные моменты рулил либо голый Lucene, либо Solr, либо, сегодня, Elastic, мы всегда были эдаким альтернативным вариантом. Ну, примерно как FreeBSD, ее же до сих пор кто-то использует. Хотя мне лично, конечно, больше нравится аналогия Postgres, про который в года далекие вообще было особо не слышно, а поди ж ты, таки не умер и даже подращивает популярность последнее время.

Особняков нету нигде, увы.

Хочется новый движок? В какой области? Что тебе сейчас интересно?

Как и всегда, что-нибудь достаточно нетривиальное технически, с прикладной пользой, ну и того, доступное для понимания лично моему ограниченному мозгу. Вот прям сию секунду особо любопытно происходящее в области машинного обучения, например. Там и раньше было занятно, а за последние годы совсем интересные достижения — то объекты на картинках классифицировать чуть ли не лучше человека научатся, то чемпиона мира в Го обыграют — бодрячком!!! А я недостаточно хорошо знаком с областью, и считаю это недоработкой.

К докладу. Devs vs CTO vs CEO. Ну девелопером, ты, понятное дело, был. А CTO, CEO?(Не будет ли однобоким доклад? CTO и CEO SphinxSearch… наверно не подойдет, врядли у тебя там была постоянная команда. Или была?) И вообще, расскажи про свой экспириенс по должностям.

Из упомянутых компаний Skyfallen — от программиста до CTO, Sphinx — сразу все одновременно и в одном флаконе, Unigine — некая смесь из обязанностей программиста и CTO, так что, думаю, точка зрения у меня отросла достаточно многосторонняя.

Что за доклад? Тренинг для менеджеров? Курс управления гневом для разработчиков? Примирительные мантры?

Что за доклад — сам пока не знаю. Тема, так получилось, частично форсированная, но близкая :) Поэтому надеюсь, что-нибудь интересное да вызреет.

Спасибо shodan за интервью. Кстати, приходите на Devconf 2016. Программа уже сформирована. Уже скоро — 17 июня. Там можно будет с ним пообщаться и убедиться в том, что его «я скрытный и нелюдимый человек» — полнейшая чушь :)

© Habrahabr.ru