ݺߣ

ݺߣShare a Scribd company logo
Готовим код 

в мир открытых исходников
Women Techmakers Novosibirsk

International Women’s Day 2017

09.04.2017
Елена Граховац
Елена Граховац
twitter.com/webdeva
github.com/rumyantseva
elena@grahovac.me
бэкенд-разработчик в Openprovider

соведущая подкаста GolangShow
Open Source
3
- Внести свой вклад в развитие технологий
- Получить опыт разработки
- Поучиться у гуру
- Найти новых друзей
- Прославиться 🤓
Свой или чужой?
4
Существующий проект
5
- Принести пользу
- Улучшить продукт, которым пользуешься
- Стать частью сообщества
- Поучиться на чужих примерах написания кода
- Получить кодревью от более опытных
товарищей
Свой проект
6
- Реализовать давнюю идею
- Попробовать себя в разработке “с нуля”
- Добавить примеры кода в портфолио
- Собрать команду единомышленников
GitHub.com
мир открытых исходников и социальная сеть
для разработчиков
7
education.github.com/pack
инструменты и сервисы для студентов
8
Присоединяемся к проекту
9
Чем помочь?
10
- Реализовать фичу или пофиксить баг
- Улучшить документацию
- Перевести документацию или сайт проекта на
иностранный язык
- Оставить баг-репорт или фича-реквест
README.md
11
- Описание проекта
- Инструкция по развертыванию
- Краткая информация о том, как можно
поучаствовать в проекте
CONTRIBUTING.md
12
Подробные правила участия в проекте
Пример для golang/go
Issues
13
- В первую очередь — “help wanted”
- В первую очередь — простые задачи
- Вознаграждение за “bounty”
- Сначала согласовать, потом начать
реализацию тикета
Issues
14
Пример для golang/go
Fork & Pull Request
15
- Какую ветку форкать?
- Стандарты кодирования
- Правила оформления кода и коммитов
- Тесты
- В какую ветку делать Pull Request?
- Правила оформления Pull Request’ов
Начинаем свой проект
16
Готовим код 
в мир открытых исходников
README.md
18
- Описание проекта
- Инструкция по развертыванию
- Информация о том, как можно поучаствовать в
проекте (или файл CONTRIBUTING.md)
- Список контрибьюторов (или файл
CONTRIBUTORS)
Всё то же самое 🤓
LICENSE
19
choosealicense.com
Модель работы с Git
20
- Git flow (master, develop, feature, release, hotfix)
- Свой вариант
- Теги!
Семантическое версионирование
21
semver.org
- Мажорная.Минорная.Патч
- Обратная совместимость
- Начинать с нуля? 0.0.1 или 0.1.0?
- Суффиксы (alpha, beta, rc)
Стандарты кодирования
22
- Выбрать стандарт и следовать ему!
- Описать правила для контрибьютеров
- Хуки на коммит на стороне клиента (pre-
commit.com)
- Хуки на пуш на стороне сервера
Документация
23
- Минимальная — в README.md
- Автодокументация, сгенерированная по коду
- Документация для библиотеки
- Документация для REST API
Тесты
24
- Правильность кода
- Пример использования кода
- Помощь контрибьюторам
Автосборка
25
- Проверить код на соответствие стандартам
- Запустить тесты
- Запустить сборку (если требуется)
- Удобно: travis-ci.com для проектов с открытым
исходным кодом
Собираем бейджи
26
- Текущая версия
- Успешность сборки
- Документирование
- Покрытие тестами
- Соответствие стандартам кодирования
- Привлечение внимания
- …
badges/shields
Issues & Projects
27
- Теги для тикетов
- Планирование версий (“milestones”)
- Объединение крупных фич в проекты
- Общение с контрибьюторами
Что ещё?
28
- Создать чат для общения с пользователями и
контрибьюторами (gitter.im)
- Рассказать про свой проект в тематических
сообществах
- Подгтовить доклад о своем проекте на
ближайший митап
Елена Граховац
twitter.com/webdeva
github.com/rumyantseva
elena@grahovac.me
бэкенд-разработчик в Openprovider

соведущая подкаста GolangShow

More Related Content

What's hot (20)

Go в автобусе
Go в автобусеGo в автобусе
Go в автобусе
Artem Kovardin
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
Artem Kovardin
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Yandex
Use Grunt Luke
Use Grunt LukeUse Grunt Luke
Use Grunt Luke
Gleb Pospelov
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
AvitoTech
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
Anton Piskunov
Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3
it-people
Rust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny NovgorodRust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny Novgorod
Nikita Baksalyar
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
Владимир Кожаев
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
Alex Chistyakov
Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»
Yandex
Размещение проектов на drupal.org
Размещение проектов на drupal.orgРазмещение проектов на drupal.org
Размещение проектов на drupal.org
zabej
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
AvitoTech
Дизайн платформа в Avito - Александр Лобашев (Avito)
Дизайн платформа в Avito - Александр Лобашев (Avito)Дизайн платформа в Avito - Александр Лобашев (Avito)
Дизайн платформа в Avito - Александр Лобашев (Avito)
AvitoTech
Данил Ильиных и Владимир Иванов, «Велогосипед»
Данил Ильиных и Владимир Иванов, «Велогосипед»Данил Ильиных и Владимир Иванов, «Велогосипед»
Данил Ильиных и Владимир Иванов, «Велогосипед»
Platonov Sergey
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Mail.ru Group
Git для новичков
Git для новичковGit для новичков
Git для новичков
Softline
Юлия Писаревская - В поисках эффективности: Slack и BitBucket
Юлия Писаревская - В поисках эффективности: Slack и BitBucketЮлия Писаревская - В поисках эффективности: Slack и BitBucket
Юлия Писаревская - В поисках эффективности: Slack и BitBucket
Tatyana Bragina
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Yandex
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
Artem Kovardin
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Илья Биин: Организация совместной работы Go и Python-based сервисов в Ostrovo...
Yandex
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
AvitoTech
BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
Anton Piskunov
Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3Михаил Коробов: Как перейти на Python 3
Михаил Коробов: Как перейти на Python 3
it-people
Rust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny NovgorodRust - GDG DevFest 2016 Nizhny Novgorod
Rust - GDG DevFest 2016 Nizhny Novgorod
Nikita Baksalyar
что такое Git и как с ним бороться
что такое Git и как с ним боротьсячто такое Git и как с ним бороться
что такое Git и как с ним бороться
Владимир Кожаев
Применение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектахПрименение языка Go в инфраструктурных проектах
Применение языка Go в инфраструктурных проектах
Alex Chistyakov
Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»Владимир Варанкин — «БЭМ: практика»
Владимир Варанкин — «БЭМ: практика»
Yandex
Размещение проектов на drupal.org
Размещение проектов на drupal.orgРазмещение проектов на drupal.org
Размещение проектов на drupal.org
zabej
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
AvitoTech
Дизайн платформа в Avito - Александр Лобашев (Avito)
Дизайн платформа в Avito - Александр Лобашев (Avito)Дизайн платформа в Avito - Александр Лобашев (Avito)
Дизайн платформа в Avito - Александр Лобашев (Avito)
AvitoTech
Данил Ильиных и Владимир Иванов, «Велогосипед»
Данил Ильиных и Владимир Иванов, «Велогосипед»Данил Ильиных и Владимир Иванов, «Велогосипед»
Данил Ильиных и Владимир Иванов, «Велогосипед»
Platonov Sergey
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Сравнение технологий aiopg & asyncpg, Алексей Фирсов. 22 июня, 2019
Mail.ru Group
Git для новичков
Git для новичковGit для новичков
Git для новичков
Softline
Юлия Писаревская - В поисках эффективности: Slack и BitBucket
Юлия Писаревская - В поисках эффективности: Slack и BitBucketЮлия Писаревская - В поисках эффективности: Slack и BitBucket
Юлия Писаревская - В поисках эффективности: Slack и BitBucket
Tatyana Bragina
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Михаил Корепанов "Инкрементальные обновления на клиенте. Ловкость рук и никак...
Yandex
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
#PostgreSQLRussia 2015.09.15 - Николай Самохвалов - 5 главных особенностей Po...
Nikolay Samokhvalov

Similar to Готовим код 
в мир открытых исходников (20)

Игорь Новак — Редакторы
Игорь Новак — РедакторыИгорь Новак — Редакторы
Игорь Новак — Редакторы
Yandex
Контроль за качеством кода
Контроль за качеством кодаКонтроль за качеством кода
Контроль за качеством кода
Кирилл Борисов
Teatro
TeatroTeatro
Teatro
Alexey Ermolaev
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Fwdays
Open your source
Open your sourceOpen your source
Open your source
Алексей Кудрявцев
Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2
drupalconf
GitHub - зеркало разработчика
GitHub - зеркало разработчикаGitHub - зеркало разработчика
GitHub - зеркало разработчика
Alexander Granin
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
Andrey Kazarinov
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
LEDC 2016
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
Positive Hack Days
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
drupalconf
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
InterSystems
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
Roman Dvornov
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
CodeFest
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
PVasili
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
Yandex
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
Yandex
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Ontico
Игорь Новак — Редакторы
Игорь Новак — РедакторыИгорь Новак — Редакторы
Игорь Новак — Редакторы
Yandex
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Fwdays
Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2Komelin drupalconf report_komelin_v2
Komelin drupalconf report_komelin_v2
drupalconf
GitHub - зеркало разработчика
GitHub - зеркало разработчикаGitHub - зеркало разработчика
GitHub - зеркало разработчика
Alexander Granin
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
Andrey Kazarinov
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz
Ігор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developerІгор Карпиленко — PHPStorm for drupal developer
Ігор Карпиленко — PHPStorm for drupal developer
LEDC 2016
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
Positive Hack Days
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
drupalconf
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
InterSystems
Масштабируемая архитектура фронтенда
Масштабируемая архитектура фронтендаМасштабируемая архитектура фронтенда
Масштабируемая архитектура фронтенда
Roman Dvornov
Денис Паясь
Денис ПаясьДенис Паясь
Денис Паясь
CodeFest
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
PVasili
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
Yandex
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
Yandex
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Ontico

More from Elena Grahovac (7)

Go at Openprovider
Go at OpenproviderGo at Openprovider
Go at Openprovider
Elena Grahovac
Пословицы дядюшки Пайка
Пословицы дядюшки ПайкаПословицы дядюшки Пайка
Пословицы дядюшки Пайка
Elena Grahovac
Пользовательские истории
Пользовательские историиПользовательские истории
Пользовательские истории
Elena Grahovac
Про Git
Про GitПро Git
Про Git
Elena Grahovac
Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опыта
Elena Grahovac
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolВзаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Elena Grahovac
Введение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуруВведение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуру
Elena Grahovac
Пословицы дядюшки Пайка
Пословицы дядюшки ПайкаПословицы дядюшки Пайка
Пословицы дядюшки Пайка
Elena Grahovac
Пользовательские истории
Пользовательские историиПользовательские истории
Пользовательские истории
Elena Grahovac
Микросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опытаМикросервисные архитектуры и немного жизненного опыта
Микросервисные архитектуры и немного жизненного опыта
Elena Grahovac
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing ProtocolВзаимодействие сервисов через Advanced Message
 Queuing Protocol
Взаимодействие сервисов через Advanced Message
 Queuing Protocol
Elena Grahovac
Введение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуруВведение в сервис-ориентированную архитектуру
Введение в сервис-ориентированную архитектуру
Elena Grahovac

Готовим код 
в мир открытых исходников