Хайповый дистрибутив
С возрастом всё сложнее быть программистом «в теме». Раньше я любил двух- трёхдневные марафоны, когда надо было что-то понять и написать. Сон урывками, кофе литрами, но при этом ощущение полёта, какого-то такого программистского счастья.
Статьи и книги запоем, пет-проекты, и всегда есть что-то интересное, что я ещё не пробовал, но очень хочу попробовать.
Постепенно всё уходит в прошлое, и я уже не на острие прогресса. Сейчас во всём разбираются те, кто моложе и те, кто соображает быстрее, а мне осталось только догонять. Но я пытаюсь.
Пару лет назад я спросил в одной из тусовок, где собираются люди с горящими глазами: какой дистрибутив Linux сейчас считается самым… скажем, хайповым. И мне ответили — NixOS.
Я про такой не слышал. И, конечно, сразу его поставил, работал даже, но долго не понимал главной фишки. Впрочем, нельзя сказать, что в NixOS есть одна главная фишка. Я смотрю на систему, как программист, но у неё есть свои грани для и системных администраторов, и DevOps-инженеров.
Вводные
Если вы никогда не слышали про NixOS, то вот вам несколько вводных. Nix — это пакетный менеджер. Его можно установить в любой Linux или на macOS. NixOS — это дистрибутив Linux, построенный на базе Nix. Проблема, которую пытались решить с его помощью, известна всем программистам и их заказчикам.
Она называется «на моей машине всё работает». У нас, у программистов, есть даже анекдот на эту тему.
Если бы программисты были врачами, им бы пациенты говорили, например, «у меня болит нога», а они бы отвечали «ну не знаю, у меня такая же нога, и не болит».
Проблему осознали и решают с 90-х годов. К решениям в той или иной степени относятся непрерывная интеграция (Continuous Integration), непрерывное развёртывание (Continuous Deployment), DevOps и контейнеризация. Nix тоже в этом ряду.
Иногда можно услышать (ошибочное) мнение, что эти решения — альтернативы, хотя, в действительности, они друг друга дополняют. Вы можете организовать DevOps с помощью Nix и Docker, и вот вам статья, где автор Джилл Торнхилл доходчиво объяснила, что Nix и Docker не только можно, но и нужно использовать вместе.
Nix позволяет описать конфигурацию, нужную для работы программы и аккуратно воссоздать её на другой машине. Похоже на Docker, только вам не нужны контейнеры. Nix позволяет настраивать конфигурацию в широких пределах, в частности, у вас может быть несколько конфигураций. В одном проекте вы можете писать на PHP 8.3, а в соседнем — на PHP 8.1. То же самое касается версий .NET, Java, Python, mysql и postgres. В любой момент вы можете включить конфигурацию, а потом точно также её выключить.
Но и это ещё не всё. Nix не перезаписывает изменения конфигурации, а всегда создаёт новые, позволяя вам откатиться в любой момент. Приблизительно также git хранит изменения в проекте.
Подобные устойчивые (persistence) структуры данных часто применяют в функциональном программировании. И это неспроста. Дело в том, что язык описания конфигурации Nix — чистый функциональный язык.
Спринты
Разработка Nix идёт полным ходом. За одиннадцать лет, с тех пор, как NixOS вышла на промышленные просторы, она приобрела полноценный реестр пакетов — nixpkgs. Сейчас их порядка 80000 и каждый из пакетов надо было подготовить. Nix или NixOS используют сотни компаний по всему миру, включая таких «монстров», как Atlassian и Yandex.
Люди постоянно дорабатывают софт и иногда им хочется поработать вместе. Поэтому вот уже несколько лет разработчики NixOS прилетают на неделю в какую-нибудь точку земного шара и устраивают рабочую сессию. Эти сессии носят название спринты. Чем занимаются программисты во время спринта? Пишут новые пакеты, исправляют ошибки в старых, работают над компилятором, над утилитами. Работы хватает.
Последний спринт прошёл в феврале в Таиланде. Теперь самое важное, ради чего, собственно, пост.
Следующий спринт ребята хотят провести в России. А мы с @tazjin его организуем.
Место, время и деньги
От Москвы мы отказались сразу, не смотря на то, что живём здесь. Москва это дорого. Кроме того, Москва — это не вся Россия, а гостям хочется показать что-то чуть менее мировое, и чуть более местное.
После некоторых раздумий мы остановились на Казани. Мультикультурный российский город, где у нас есть «знакомства и связи». Мы рассчитываем, что они упростят нам решение разных вопросов без частых поездок в Казань.
Этот спринт мы, по традиции, назвали, опираясь на географию — Volga Sprint. Даты проведения — в 22 по 29 августа.
Если у вас есть желание поработать над Nix и NixOS в компании увлечённых программистов со всего мира — следуйте по ссылке выше и регистрируйтесь! Если вдруг у вас по какой-то причине не получится, всегда можно отказаться.
С деньгами история такая. Участие в спринте естественно бесплатное, но добираться до Казани и жить там неделю нужно будет самим. Кроме того, придётся на неделю отпроситься с работы.
Аренду коворкинга, обеды и полдники, а также кофе и фрукты на местах традиционно помогаю оплатить спонсоры. Которых мы, кстати, тоже ищем!
Формат
Спринт — мероприятие тёплое и ламповое. Съезжаются обычно 20–25 разработчиков, снимают жильё поблизости от коворкинга, работают целый день с перерывами на обед, а вечером развлекаются. Ну, или продолжают работать — вы же знаете этих программистов!
Мы планируем культурную программу, гастрономическую программу, покатаемся по окрестностям, посмотрим на Волгу. План такой.
Организаторы
Мы только начали подготовку и не столкнулись, наверное, ещё и с половиной организационных сложностей. Но мы надеемся, что нам удастся их преодолеть.
Винсент Амбо aka tajzin, программист, опытный Nix-разработчик, основатель проекта Tvix
Марк Шевченко, программист, пользователь Nix, организатор встреч Московского клуба программистов