Курс про это ваше программирование
Цели и задачи курса
Познакомить слушателей с основными техниками, использующимися при совместной расработке программного обеспечения, преимущественно под свободной лицензией.
Показать наглядно используемые техники и практики, внушить мотивацию их использования.
Дать возможность опробовать полученные знания и приобрести навыки на базе полу-модельного проекта игры.
Предполагаемый объём курса - 16 часов лекции, 8-16 часов - демонстрации и мастер-классы.
Как попытаться построить курс
Видится три части:
- Общая теория
- Конкретные юзкейсы (особо это всплывёт про стайлгайды, сборку, тестирование, деплой)
- Демонстрация
Попытаться охватить С, shell, Python, js (что ещё?).
Структура курса
- Зачем это всё? Совместная разработка, её эффективность. Роль технологических аспектов (в частности, автоматизации) в повышении производительности и продуктивности разработки.
- It's all about code. Стайлгайды. - Теория - Зачем стайлгайды нужны
- Стайлгайды - не только про короткие строки и имена переменных.
 
- Юзкейсы - Оформление кода.
 
- Демонстрация - astyle
- pep8/py.test
 
 
- Хранение кода. Репозиторий. - Теория - Басня про git
- (?) git guts
 
- Юзкейсы - Flow: работа с репозиторием
- Flow: добавление мелкой фичи
- Flow: добавлений крупной фичи
- Flow: синхронизация репозиториев
- Flow: коммит в репозиторий большого количества изменений
- Flow: подготовка патча в апстрим
- Flow: применение патчей
- Flow: поиск регрессий
- git-svn, git-hg
- напиливание хуков
 
- Демонстрация - Можно, собственно, демонстрировать flow из юзкейсов
 
 
- Сборка и деплой. - Теория - Необхоимость процесса сборки и деплоя
- Свойства процесса сборки: воспроизводимость, корректность
- Одной сборки мало: конфигурация им привязка к окружению
- Установка и пакетирование?
 
- Юзкейсы - Вычисление зависимостей в make (и вообще его механизмы)
 
- Демонстрация - Использование make
- Workflow autotools
- cmake
 
 
- Отладка и тестирование. Сюда же про тикеты. - Теория - Ошибки в программах, как их находить и как их избегать. Средства минимизации: отладка, инструментирование, логгирование, тестирование
- Важность информационного обмена в процессе работы над ошибками. Тикет-системы.
- Роль репозитория при работе над ошибками.
 
- Юзкейсы - NDEDBUG, assert и велосипеды
- gdb, strace, ltrace, gprof
- valgrind
- trac
- Использование bisect, бранчей, принятие патчей в репо
 
- Демонстрация - Отладка с использованием gdb и strace
- Использовани е тикет-систеы
 
 
- Документация - Теория - Виды документации и их предназначение
- документация как часть информационного пространства
- Автоматизация генерации документации. Документирование в современных ЯП.
- Проблема поддержания актуальности документации
 
- Юзкейсы - doxygen, sphynx
- man, texinfo, html-документация
 
- Демонстрация - Использование doxygen, sphynx
 
 
- Использование сторонних библиотек - Теория - Классификация библиотек: стандартная библиотека языка, универсальные фреймворки, специализированные фреймворки и библиотеки
- Когда следует и не следует использовать сторонние библиотеки - Две стороны: написание велосипедов и овердизайн ("а вот здесь мы работаем со строками, поэтому нам нужен qt")
 
 
- Юзкейсы 
- Демонстрация 
- libc
- glib, qt, boost
- Потоки и иже: pthreads, libevent,
 
- Перевод и локализация - Теория - Зачем: использование более широким кругом пользователей, увеличение применимости
- Что: ресурсы программы, некоторые алгоритмы (даты, особенности экономической системы, законодательные особенности), документация (инф. пространство) - Юникод, как с ним правильно обрпащаться - tzdata
- locale
 
 
- Юникод, как с ним правильно обрпащаться 
- Как
 
- Юзкейсы - gettext
- перевод документации (moin?)
 
- Демонстрация - Олокаливание программы
- Обновление перевода документации
 
 
- Средства, имеющиеся в современных языках - Теория - Тестирование, сборка и пакетирование, документация
 
- Юзкейсы - java: junit, ant
- python: doctest/pytest, docstrings/sphynx, setuputils/distutils
 
 
- Теория 
- Code review - Теория - Зачем нужен CR. Плюшки CR. - Регулярный коммиттеры пишут более лучший код и заними нужно всё менее внимательно ревьювить - Ревью позволяет держать уровень кода в репозитории
- Ревью позволяет выявлять ошибки, не заметные одному отдельно взятому человеку (глаза замылились)
 
 
- Регулярный коммиттеры пишут более лучший код и заними нужно всё менее внимательно ревьювить 
- Способ организации CR.
- Роль репозитория в CR.
 
- Зачем нужен CR. Плюшки CR. 
- Юзкейсы - Workflow подготовки патчсета на CR
- Workflow review через почту/git
- Workflow review через вебсервис
- Workflow обновления патчсета по итогам ревью
 
- Демонстрация - Демонстрация подготовки патчсета, засылки в рассылку, ревью, засылк и обновлённого патчсета, принятия в blessed repo
 
 
- Пакетирование - Теория 
- Юзкейсы 
- Демонстрация 
 
