26 ноября в Инфопространстве пройдет ScalaConf 2019 — профессиональная конференция для Scala-разработчиков. Возможно, первая в России. Накануне события мы попросили Вадима Челышова (dos65), руководителя ПК ScalaConf 2019, рассказать о докладах и концепции конференции.



Вот, что мы узнали: на конференции нас ждет проповедник функционального программирования, четыре англоязычных доклада, новый инструмент, который решит проблемы дата-инженеров, доклад о том, почему Scala Plugin несовместим со Scala-компилятором, «Профессор Haskell» и много функционального программирования. Также мы поговорили о границах развития Scala-разработчика, почему среди них нет джунов, о «холиваре» между Scala и Haskell, и об информационном «пузыре» коммьюнити. Подробности под катом.

Концепция


Привет, Вадим! Нулевой вопрос — расскажи о концепции конференции?

Разочарую — общей концепции нет. Мы не пресыщены конференциями по Scala в России. Таких мероприятий проходит не так много, чтобы перед организацией думать о том, чем необычным удивить. Это конференция по Scala, и этого достаточно с избытком.

Это значит, что у сообщества, которое ходит на конференции, нет никаких ожиданий?

Ожидания есть. Это ожидания, что будут крутые доклады и спикеры, и именно по Scala. Это ожидания, что не нужно будет ходить на смежные доклады по Haskell или Java, чтобы побывать на двух с половиной выступлениях, ради которых пришел.

Это потому, что в России было мало конференций по Scala?

Можно сказать, что конференций было ноль. Когда я писал статьи-расследования о Scala-движении, то нашел информацию, что в Петербурге проходила пара ивентов. Люди называли это конференцией, но это был митап — один трек на 3-4 спикера. В сентябре проходил митап, на котором заявлялось 400 человек и это считалось конференцией. Больше ничего нет. Остальное — это митапы в Питере, Москве, что-то в Новосибирске и близко к нулю в других городах.

Конференция по Scala в России — уже событие.

Примечание. Первая и вторая часть расследования. Скоро выйдет заключительная — следите за публикациями.

Получается, что ScalaConf 2019 — первая профессиональная конференция по Scala?

Да, с некоторыми допущениями. Особенность в том, что до этого не было площадок именно для Scala. Обычно это были Java-конференции, где скалисты стояли белой вороной, смешанные мероприятия по ФП, и митапы. Если это не Москва или Питер, то митапы тоже смешанные.

ScalaConf 2019 — это первая площадка от скалистов для скалистов.

На митапах или смешанных конференциях Scala-спикерам приходится подстраиваться под аудиторию, отбрасывать много тем и снижать сложность доклада. Хардкорные доклады появляются на конференциях по ФП, но только о Scala там не расскажешь.

На ScalaConf 2019 ограничений не будет. Только Scala, только хардкор.

Scala.js


Scala доминирует в двух областях: Big Data и бэкенд. Поэтому не было принципиальной задачи подготовить N секций с определенным числом спикеров в каждой. Мы исходили из тех докладов, что были, отбирали классные и маркировали: что-то больше о бэкенд, что-то о ФП. Разделение по секциям номинально, и доклады из блока «Язык/тулинг» будут также понятны, как и из «Big Data». Докладчики будут говорить для всех.

Единственное исключение — Scala.js, на котором мало кто пишет, как и на фронтенд. Чаще это эксперимент, реже — осмысленное решение, чтобы добиться определенных преимуществ. Scala.js подходит для сложной кодовой базы на Scala, если хотите ее использовать внутри браузера. Я видел хороший пример компилятора для блокчейн-языка с использованием этого инструмента. Разработчики смогли интерактивно добавить его прямо в браузер: пишешь на языке, компилятор проверяет валидность и подсвечивает.

Мы добавили доклад «Scala.js — подходящий ли инструмент для вас?», чтобы люди увидели пример использования. Fullstack-разработчиков, которые пишут и бэкенд и фронтенд одинаково хорошо, не существует. Средний разработчик редко пишет фронтенд и ему не хочется брать JS или TypeScriprt. Он думает: «Может попробовать Scala.js? Да не, что это я, меня все равно никто не поймет».

Нет необходимости пользоваться Scala.js, когда есть инструменты и библиотеки из мира фронтенда. Поэтому редко кто экспериментирует со Scala.js, а тема крайне интересная. Александр Шарихин как раз расскажет о своем опыте применения Scala.js в eLama.

Scala.js нишевая технология — зрелая, рабочая и имеет определенное коммьюнити. Есть некоторые проблемы с интеграцией популярных JS-библиотек, но все, кто использовал Scala.js в реальных проектах отзываются положительно.
Евгений Токарев, член ПК ScalaConf 2019.

Backend


В этом блоке два доклада — о поиске и индексации и об Akka. Первый доклад Андрея Корзинева — будет нечто вроде «кейса» о методе работы с индексами в Авто.ру?

Исторически сначала они использовали Apache Lucene на Java, потом его выкинули и написали свой YoctoDB на Java. Теперь проводят третью итерацию на Scala для большего контроля над результатами запроса.

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

Проект Авто.ру один из тех, что сочетает и корректность, и производительность. Поэтому доклад Андрея уникален. Он будет рассказывать об индексах, для которых важна производительность: байт буферы, varhandless. Доклады такого формата у нас редкость. Поисковый движок — задача другого уровня и сильно отличается от средних.

Мало кто пишет свой поисковый движок, еще меньше тех, кто это делает на Scala.

Никита Мелкозерков расскажет «в целом» об одном из подходов для работы с Akka?

Он будет рассказывать об Akka Persistence и FoundationDB. Akka Persistence — это библиотека, которая настраивается на Акка и позволяет удобно хранить все события, сохранять, забирать и не беспокоиться об этом. Для нее пишутся дополнительные библиотеки, которые связывают Akka Persistеnce с какой-либо БД.

Akka Persistance может работать из коробки только с LevelDB. Все остальные бэкенды для хранения — это плагины из коммьюнити. Они не часто обновляются, и есть опасения брать их в серьезный проект. Поэтому сложно выбирать, с чем использовать Akka Persistance.

Год назад Apple открыл Open Source библиотека FoundationDB, и все были рады. Она крутая, распределенная, суперкорректная и надежная благодаря тому, что каждую ночь разработчики симулируют один триллион тестов. Все были воодушевлены событием, а Никита написал плагин Akka Persistance для FoundationDB.

За 40 минут Никита расскажет о FoundationDB и ее достоинствах, почему не устроила Cassandra, об Event Sourcing, об основных этапах и особенностях написания плагинов в Akka Persistance. Надеюсь, Никита сможет всех убедить, что поправить или написать плагин для необходимого хранилища не страшно и не сложно, и проблема опасений о стабильности исчезнет.

Развитие Scala-разработчика и функциональное программирование


Доклад Ольги Махасоевой — единственный по soft skills и он в блоке ФП. Как так получилось: soft skills не так важны, как технические навыки или сообщество не готово к подобным докладам?

На первой конференции по Scala мы не можем себе позволить пустить много докладов о soft skills. Это будет трата времени и ресурсов. Получится, что людей, которые нам могут рассказать о чем-то техническом и полезном, мы заменим на доклады, о которых можем послушать и на других конференция.

В то же время, в программу мы хотели добавить кейноут и нас выручила Оля. Ее доклад о soft skills — «Искусство задавать вопросы» идеально подошел. Он стоит вместе с докладами о ФП, потому что отдельного блока под него не сделать.

Я бы хотел предложить гипотезу, что Scala-разработчики более технически направлены.

В Scala много технических вещей, о которых нужно говорить и раскрыть. В мейнстримных языках можно быстро выучить язык, познакомиться с экосистемой и достичь технического предела. Дальше развиваться только в менеджменте, в soft skills или изучать работу на низком уровне. В Scala и ФП большой простор для углубления: как достичь больше гарантий от кода, как написать его корректнее, короче, быстрее и надежнее, выразить лаконичнее.

В Scala много техник и подходов, которые никогда не закончатся.

Можно изучать и смежные области, читать другие языки и добавлять лучшее в Scala. Мы расширяем кругозор, чтобы с большей вероятностью найти что-то полезное и интересное. В прошлом году не было конференции, где бы не говорили о Tagless Final. Год прошел, все остыли и смотрят на подход, который используется в ZIO. Поток нового и свежего для изучения в ФП и Scala никогда не заканчивается. Если смотреть достаточно глубоко, то даже в рамках одного pull request Scala можно закопаться на целый день.

Основной ресурс новостей это специализированные чаты, публичные Twitter-аккаунты, вроде Scala Center, и отдельные блоги, как у команды Akka или Scala-lang, где публикуются посты о важных решениях для языка. Однако, информации невероятно много, тяжело за всем следить. Единственный ресурс, который спасает — это Scala Times. Это еженедельные рассылки с дайджестом постов, релизов, твитов и новостей в Scala-мире и сообществе. Я подписан на Scala Times уже три года. Но захожу очень редко, просматриваю заголовки и краткое описание. Когда понадобится, я могу вспомнить, что когда-то видел подобное и поискать, но не более.

Одно время я пытался развивать дайджест Scalanews.org. Мы пробовали работать с информацией как журналисты: изучали разные источники, и не только Scala Times, читали, разбирали, писали подводки. Мы хотели, чтобы читатель мог получить пользу от статьи и что-то запомнить. Но информации море, и проект постепенно затух.

В Scala все можно изучать бесконечно долго, а есть шаги для роста?

Давно была система градаций для Scala. Неизвестно, кем она придумана, но она описывает уровни разработчика: уверенный пользователь, писатель библиотек и прочее. На специальной странице конференции Джона LambdaConf расписывались уровни мастерства владения концептами, от 6 до 8 уровней. Уровни есть, но не уверен, что они в ходу.

Я еще имел в виду градацию по джунам, мидлам, сеньорам. Такое есть?

Есть, но не распространено. Если в вакансиях пишут лычку, то это сеньор. Редко — мидл или даже джуниор. Часто в Scala переходят разработчики, которые уже писали на других языках. Они перешли на Scala с опытом в разработке, и это явно не джуны.

Продвинутые разработчики переходят в Scala.

Отсюда и высокий средний возраст разработчика.

Англоязычные доклады: скандалы, рекурсия, API


В блоке функционального программирования четыре иностранных спикера. Начнем с Джона А Де Гуса.

Джона знают все.


Джон очень активный: посещает все мероприятия, занимается своей библиотекой ZIO и активно ее пиарит, недавно выступал на Scala Meetup. Джон пропагандирует ФП и у него это получается. Он мастер привлечения внимания.

Как следствие, он участвовал во множестве скандалов. Например, за 2019 случилось несколько мировых драм: ZIO и Scalaz удалили из билда Scala, Typelevel.scala запретил Джону участвовать в их проектах, а Skills Matter закрыли вход на все их мероприятия. Тревис Браун, он связан с Typelevel.scala, выпустил пост, в котором обвинил Джона во всех грехах. Эти события обсуждали даже люди далекие от Scala, например, в подкасте «Радио-Т».

В каком-то смысле Джон все делает правильно — находится на виду и может проповедовать ФП в массы. Сейчас он организует свою конференцию по Scala в Лондоне в конце 2019 и пригласил уже много крутых спикеров. На ScalaConf 2019 он будет выступать с кейноутом «Snake Oils & Elixirs».

Интересна история Джона со Scalaz Sparta. Он запустил марафон, в котором предлагал менторство, организацию и помощь в создании экосистемы для Scalaz разработчикам, которые не занимаются Open Source. Отозвалось 300 человек, из них сформировались рабочие группы по интересам, было заведено 30 репозиториев. Почти ничего не выстрелило. Маловероятно, что люди просто так соберутся и будут долго сохранять мотивацию писать библиотеки, которые, возможно, не нужны в текущей работе.

Валентин Кассас также участвовал в марафоне. Возможно, его проект выпустится успешно — он до сих пор им занимается. «Доклад» Валентина будет касаться схем рекурсий. Это топик для продвинутых, но мало кто в них разбирается. Годами разработчики пытаются одолеть схемы. Возможно, Валентин наконец поможет понять эту тему.

Конференция по функциональному программированию без упоминания схем рекурсий — деньги на ветер.

Третий спикер — Адам Варски. Он участвует как в Open Source проектах, так и в коммерческих, как со-основатель компании по разработке ПО. Последний год выпускает много библиотек, по API, например. Он Он качественно над ними работает, продвигает в коммьюнити. Все, кто следит за жизнью Scala-сообщества, должны его знать.

Его доклад будет о библиотеке Tapir. Она здорово поможет со Swagger-документацией. Обычно писать Swagger больно. Самое хорошее, что мы имели от этого — ужасная монструозная конструкция на куче аннотаций, которые еще могут не соответствовать тому, что ты там написал.

Tapir решает этот вопрос и дает Swagger-описание бесплатно. Единственный похожий проект есть у Олега Нижникова из ПК ScalaConf 2019. Но Tapir больше распиарен, потому что Адам поднаторел в этом.

Но качество продукта не пострадало. Нужно идти на большие компромиссы, удобно организовать API, чтобы покрыть все кейсы и пальцы не крючились. Кажется, что у Адама получилось.

После изучения языка и решения практических задач Scala-разработчик смотрит в сторону ФП. Последние 4 года большинство докладов на иностранных конференциях связаны с ФП и его подходами для решения практических задач. Поэтому нам интересны иностранные спикеры — они рассказывают о ФП, в основном.
Евгений Токарев, член ПК ScalaConf 2019


Последний иностранный спикер — Войтек Питула. Он работает в Sony в отделе информационной безопасности. В докладе «Magic of integrations — ecosystem better than any framework» он расскажет, как создал приложение, в которое поместил все рабочие библиотеки.

Иностранные доклады будут на английском. Будет ли перевод, субтитры?

Нет, ничего не будет. Разработчик постоянно сталкивается с техническими терминами, читает документацию, мануалы, исследования на английском — там все первоисточники.

Мы предполагаем, что все из нас понимают английский.

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

Как раз об альтернативе. Даниил Смирнов тоже будет рассказывать о схемах, как и Валентин?

Почти. Они оба пишут библиотеки, которые связаны со схемами. Оба используют один источник вдохновения — Xenomorph. Но библиотеки совершенно разные, как и набор фич. Библиотека Даниила проще и в рабочем состоянии — бери и пользуйся. У Валентина больше наворотов, свой специфичный DSL, больше фич и она ушла гораздо дальше от Xenomorph.

Даниил покажет свой проект Morphling. Но проект может отпугнуть неподготовленного человека: развесистые типы с дырками, странные словечки типа «HMutu» — жуть. Поэтому цель доклада — побороть этот страх и открыть простоту и удобство использования схем, даже в таком виде.

В экспериментальных целях мы намеренно сократили часть докладов до 20 минут. Доклад Даниила один из них. Я присутствовал на недавнем прогоне Даниила, и могу сказать, что он хорошо справился с целью доклада благодаря временным ограничениям. Темы Даниила и Валентина пересекаются, но идут в разное время, чтобы покрыть всю тему о рекурсиях и схемах.

Александра Голубицкая сравнит ZIO и Future. Это продукт Джона. Они координируются?

Да, конечно. Александра активно участвует в написании ZIO, они помогают друг другу с докладами. Когда Джон на конференциях показывает какую-то фичу, то благодарит Александру за подготовку. Она также одна из организаторов мероприятия в Лондоне. Сейчас они готовят новую фичу в ZIO — чанки. Если будет готово к дате конференции, то Александра будет рассказывать о них.

Следующий — Артем Селезнев и «Scala без JDBC».

JDBC это старый стандарт, который используется на JVM языках для работы с реляционными БД. Под конкретную БД написана конкретная реализация. JDBC не развивается, это зафиксированный стандарт и никто от него не может отказаться. Все плюются, расстраиваются, но продолжают жевать кактус — альтернативы нет. Есть библиотеки, которые дают асинхронные драйвера, но они не популярны. На слуху библиотека Skunk от Роба Норриса, но она в разработке больше года и непонятно, когда выйдет.

Артем будет рассказывать как слезть с JDBC. Для этого он написал свои драйвера «на коленке» — инструментария вполне достаточно, чтобы это сделать самостоятельно и в функциональном стиле. В докладе он покажет, как писать драйвера, и что «на коленке» не сложнее и не хуже, как все привыкли думать.

JetBrains, холивары и Big Data


В следующем блоке «Язык/тулинг» первый доклад Андрея Козлова и Михаила Муцянко. Они расскажут об одном из продуктов JetBrains? В программе я насчитал 3 доклада из 18 от спикеров из JetBrains. Это с чем-то связано?

Я тоже это заметил, когда стал делать сетку расписания. Это получилось случайно и никто намеренно не продвигал JetBrains. В компании работает много людей, которые близки к ФП, хотя их основные продукты не об этом. Андрей Козлов и Михаил Муцянко работают над Scala Plugin, которым мы все пользуемся. Они точно здесь не лишние.

Есть старая проблема, что Scala Plugin не совсем соответствует Scala-компилятору. В плагине написан альтернативный компилятор Scala-кода для работы их IDE. Поэтому в продукте есть расхождение — в каких-то местах код практически валидный, корректный, компилируется Scala-компилятором, но в IDE он красный. Это расстраивает, но со временем привыкаешь, красных зон становится меньше.

Очевидно, что ситуация не радует, но Scala-компилятор не самая простая вещь. Большинству разработчиков не очевидны вопросы и задачи, которые встают перед разработчиками IDE. Скорее всего, эта ситуация будет продолжаться и дальше, но Андрей Козлов и Михаил Муцянко как раз хотят рассказать свою точку зрения. Они хотят объяснить почему так получается, почему так и должно быть, какие есть требования к компилятору, зачем его писать и почему плагин написан именно так. Были попытки раскрыть эту тайну, они приходили к нам на запись подкаста, но все равно непонятно.

Продолжим о JetBrains и немного перескочим к Big Data. Виталий Худобахшов представит некий «комбайн» для дата-инженеров — в одном инструменте можно сразу переключаться по вкладкам, терминалу и IDE. Что это за инструмент?

Это новый продукт для тех, кто работает с Big Data. Традиционно эта сфера не очень удобна. Приходится работать с невероятным количеством ПО: базы данных, удаленные серверы, визуализация, раскладка по машинам, синхронизация. Повышение удобства разработчика это космическое поле для работы. Доклад Виталия будет о продукте, который должен серьезно снизить этот уровень боли дата-инженеров и решить много проблем.

Третий спикер из JetBrains — Виталий Брагилевский. На AppsConf он выступал с историческим экскурсом в функциональное программирование. На ScalaConf 2019 нас тоже ожидает теория?

Да, Виталий известен как «Профессор Haskell» и будет рассказывать о теории DOT — системе типов с зависимыми объектами. Что такое модель DOT, элементы и общие принципы теории типов. Можно сказать, что он единственный «диверсант» от Haskell на конференции о Scala. Но, в каком-то смысле, он к этому и готовился — к недружелюбному приему.

А прием будет недружелюбный?

Нет, все будут счастливы его видеть:)

Как так, есть же «холивар» между Haskell и Scala?

Да нет, просто они друг друга не любят. Scala со стороны Java — это глоток свежего воздуха. Также будет если посмотреть на Haskell со стороны Scala. У Haskell мощнее компилятор (не везде), а в Scala есть места, где приходится писать некрасиво, чтобы соблюсти функциональность.

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

Но «холивар» сложился исторически. Людям же надо делиться на группы, чтобы вместе кого-то ненавидеть:)

Интересно, что только Брагилевский, адепт Haskell, вероятно, единственный человек в России, кто обладает компетенцией рассказывать о теории, которую пытаются подвести под язык Scala.

У Владимира Полушина тоже будет теория о статическом анализе в Scala?

Нет, будет не теория. Владимир идеально подходит для этой темы. Он участвовал во многих проектах, которые связаны со статическим анализом, занимался ensime, scalafix, fastparse. Scalafix как раз больше про анализ и у Владимира появился хороший опыт в этом плане.

Владимир написал свой анализатор, который на момент подачи заявки не был в Open Source, а сейчас уже в свободном доступе. Владимир расскажет о текущих проблемах статических анализаторов, о своем анализаторе и о том, как пришел к его написанию.

Роман Гребенников будет «разносить» GraalVM. Ты использовал этот инструмент, что скажешь?

GraalVM это инструмент для написания нативного кода. Сейчас у нас такое невозможно — есть Scala Native в непонятном состоянии, а в Java вообще ничего нет. В последние годы в эту тему активно раскручивается на всех конференциях, которые связаны с JVM.

Мы хотели пригласить кого-то, кто связан с GraalVM — Олега Шилаева. У Олега не получилось и он предлагал свои коллег, но они англоязычные. Таких докладов уже достаточно. В тот момент нам как раз предложил свой доклад Роман. У него был опыт с GraalVM, но если посмотреть описание, то видно, что опыт не совсем положительный. Поэтому мы получаем не тот доклад, что могли бы получить от разработчиков GraalVM. Однако, он не менее интересный, а, возможно, даже более. Роман опытный спикер и его доклады всегда огонь.

Если Роман сделает хороший доклад, то разработчикам GraalVM придется в следующем году выступать с оправданиями?

Возможно. Но дело не только в том, что GraalVM зло во плоти. У него есть определенные ограничения и они заявлены разработчиками. Часть вещей просто не работает ввиду ограничений — GraalVM до сих пор экспериментальный. Сами программы должны быть адаптированы под его запуск.

Все ожидают, что кто-то попробует GraalVM и код будет запускаться невероятно быстро и волшебно. Но мало кто пробует и рассказывает о своем опыте. Судя по докладу Романа GraalVM не оказался «Святым Граалем». Но, возможно, условия Романа не подошли и он пытался сделать то, что на нем невозможно. Но это вы узнаете уже на конференции.

Доклад Михаила Лиманского из компании Первый ОФД в одной тематике с докладом Андрея Корзинева? Они оба рассказывают о поиске данных, но в блоке Big Data?

Нет, это совершенно разные доклады и разные задачи. Доклад Михаила из области Big Data, он работает в первом ОФД и обрабатывает данные, которые идут с кассовых аппаратов. Так что размер данных у них на порядки выше, чем в случае с Авто.ру.

Они написали Yupana — решение поверх HBase для работы с time-series данными, чтобы покрыть свои специфичные проблемы построения аналитики. Инструмент написан для общей платформы, позволяет связывать множество операторов фискальных данных и получать информацию между ними всеми. Кроме технологических задач, есть еще и бизнесовые — подружить другие ОФД с Yupana, чтобы каждый оператор мог строить полезные отчеты для клиентов, получая больше информации. Решение уже в Open Source и теперь можно собирать все ОФД в одну большую сеть.

На ScalaConf 2019 будет технический хардкор и праздник функционального программирования. До конференции всего три недели, но расписание уже готово и можно подобрать себе маршрут посещения праздника с обедом и кофе-брейком. 12 ноября — дедлайн повышения цен на конференцию. Бронируйте билеты, а оплачивайте потом. Встретимся на ScalaConf 2019!

Комментарии (0)