SlideShare a Scribd company logo
1 of 157
Download to read offline
Open your source
Алексей Кудрявцев
iOS Developer @ Avito
Как перестать бояться и начать опенсорсить
Agenda
Что такое Open Source
Как правильно войти
Как сделать свой проект
Как все автоматизировать
1
Agenda
Что такое Open Source
Как правильно войти
Как сделать свой проект
Как все автоматизировать
1
Agenda
Что такое Open Source
Как правильно войти
Как сделать свой проект
Как все автоматизировать
1
Agenda
Что такое Open Source
Как правильно войти
Как сделать свой проект
Как все автоматизировать
1
Agenda
Что такое Open Source
Как правильно войти
Как сделать свой проект
Как все автоматизировать
1
https://github.com/SwiftyVK/SwiftyVK
2
Типичный Open Source
3
Немного истории
4
PDP-10
5
PDP-10
Компьютер для ученых
OS и софт общедоступны
Софт - научный результат
Каждый вносит правки
5
PDP-10
Компьютер для ученых
OS и софт общедоступны
Софт - научный результат
Каждый вносит правки
5
PDP-10
Компьютер для ученых
OS и софт общедоступны
Софт - научный результат
Каждый вносит правки
5
PDP-10
Компьютер для ученых
OS и софт общедоступны
Софт - научный результат
Каждый вносит правки
5
LISP машины
5
LISP машины
Разработаны в MIT
Выкуплены учеными
Продаются в институты
Имеют закрытый софт
5
LISP машины
Разработаны в MIT
Выкуплены учеными
Продаются в институты
Имеют закрытый софт
5
LISP машины
Разработаны в MIT
Выкуплены учеными
Продаются в институты
Имеют закрытый софт
5
LISP машины
Разработаны в MIT
Выкуплены учеными
Продаются в институты
Имеют закрытый софт
5
Ричард Столлман
6
Ричард Столлман
Хватит это терпеть!
6
Free Software
https://www.fsf.org
7
Free Software
Свобода в использовании
Свобода в изучении
Свобода в копировании
Свобода в улучшении
https://www.fsf.org
7
Free Software
Свобода в использовании
Свобода в изучении
Свобода в копировании
Свобода в улучшении
https://www.fsf.org
7
Free Software
Свобода в использовании
Свобода в изучении
Свобода в копировании
Свобода в улучшении
https://www.fsf.org
7
Free Software
Свобода в использовании
Свобода в изучении
Свобода в копировании
Свобода в улучшении
https://www.fsf.org
7
Free, really?
8
Free, really?
«as in free speech,
not as in free beer»
8
Free, really?
«as in free speech,
not as in free beer»
8
Open Source
https://opensource.org/
9
Open Source
Те же свободы
Базарная модель разработки
Проще обьяснить бизнесу
Более распространен
Менее идеализирован
https://opensource.org/
9
Open Source
Те же свободы
Базарная модель разработки
Проще обьяснить бизнесу
Более распространен
Менее идеализирован
https://opensource.org/
9
Open Source
Те же свободы
Базарная модель разработки
Проще обьяснить бизнесу
Более распространен
Менее идеализирован
https://opensource.org/
9
Open Source
Те же свободы
Базарная модель разработки
Проще обьяснить бизнесу
Более распространен
Менее идеализирован
https://opensource.org/
9
Open Source
Те же свободы
Базарная модель разработки
Проще обьяснить бизнесу
Более распространен
Менее идеализирован
https://opensource.org/
9
Этика Практика
https://www.gnu.org/philosophy/free-software-for-freedom.ru.html
10
Примеры
Linux и Swift
TrueCrypt и UnRar
Рекламные SDKs
RedHat и Fedora
11
Примеры
Linux и Swift
TrueCrypt и UnRar
Рекламные SDKs
RedHat и Fedora
11
Примеры
Linux и Swift
TrueCrypt и UnRar
Рекламные SDKs
RedHat и Fedora
11
Примеры
Linux и Swift
TrueCrypt и UnRar
Рекламные SDKs
RedHat и Fedora
11
Профиты Open Source
12
Профиты Open Source
Понимание чужого кода
Развитие и изучение нового
Лучшие практики
Плюс в резюме
Признание в сообществе
Плюсы твоему проекту
12
Профиты Open Source
Понимание чужого кода
Развитие и изучение нового
Лучшие практики
Плюс в резюме
Признание в сообществе
Плюсы твоему проекту
12
Профиты Open Source
Понимание чужого кода
Развитие и изучение нового
Лучшие практики
Плюс в резюме
Признание в сообществе
Плюсы твоему проекту
12
Профиты Open Source
Понимание чужого кода
Развитие и изучение нового
Лучшие практики
Плюс в резюме
Признание в сообществе
Плюсы твоему проекту
12
Профиты Open Source
Понимание чужого кода
Развитие и изучение нового
Лучшие практики
Плюс в резюме
Признание в сообществе
Плюсы твоему проекту
12
Профиты Open Source
Понимание чужого кода
Развитие и изучение нового
Лучшие практики
Плюс в резюме
Признание в сообществе
Плюсы твоему проекту
12
Как войти в Open Source?
13
Где найти проект?
14
Где найти проект?
https://github.com/matteocrippa/awesome-swift
https://github.com/akullpp/awesome-java
https://github.com/ziadoz/awesome-php
https://github.com/fffaraz/awesome-cpp
14
Как контрибьютить?
15
Как контрибьютить?
Issue
Pull request
Code review
Помощь новичкам
Пиар
Донат
Благодарность
15
Как контрибьютить?
Issue
Pull request
Code review
Помощь новичкам
Пиар
Донат
Благодарность
15
Как контрибьютить?
Issue
Pull request
Code review
Помощь новичкам
Пиар
Донат
Благодарность
15
Как контрибьютить?
Issue
Pull request
Code review
Помощь новичкам
Пиар
Донат
Благодарность
15
Как контрибьютить?
Issue
Pull request
Code review
Помощь новичкам
Пиар
Донат
Благодарность
15
Как контрибьютить?
Issue
Pull request
Code review
Помощь новичкам
Пиар
Донат
Благодарность
15
Как контрибьютить?
Issue
Pull request
Code review
Помощь новичкам
Пиар
Донат
Благодарность
15
Когда открывать issue?
16
Когда открывать issue?
Багрепорт
Фичареквест
Вопрос
16
Когда открывать issue?
Багрепорт
Фичареквест
Вопрос
16
Когда открывать issue?
Багрепорт
Фичареквест
Вопрос
16
Правильный issue
17
Правильный issue
17
Правильный issue
17
Правильный issue
Проверка на дубликаты
Правила репозитория
Понятный заголовок
Подробное описание
Вежливость и благодарность
17
Правильный issue
Проверка на дубликаты
Правила репозитория
Понятный заголовок
Подробное описание
Вежливость и благодарность
17
Правильный issue
Проверка на дубликаты
Правила репозитория
Понятный заголовок
Подробное описание
Вежливость и благодарность
17
Правильный issue
Проверка на дубликаты
Правила репозитория
Понятный заголовок
Подробное описание
Вежливость и благодарность
17
Правильный issue
Проверка на дубликаты
Правила репозитория
Понятный заголовок
Подробное описание
Вежливость и благодарность
17
Правильный issue
Проверка на дубликаты
Правила репозитория
Понятный заголовок
Подробное описание
Вежливость и благодарность
17
Правильный issue
17
Правильный issue
17
Когда делать pull request?
18
Когда делать pull request?
Очепятки
Оптимизация
Рефакторинг
Документация
Тесты
TODO
Открытые Issues
18
Когда делать pull request?
Очепятки
Оптимизация
Рефакторинг
Документация
Тесты
TODO
Открытые Issues
18
Когда делать pull request?
Очепятки
Оптимизация
Рефакторинг
Документация
Тесты
TODO
Открытые Issues
18
Когда делать pull request?
Очепятки
Оптимизация
Рефакторинг
Документация
Тесты
TODO
Открытые Issues
18
Когда делать pull request?
Очепятки
Оптимизация
Рефакторинг
Документация
Тесты
TODO
Открытые Issues
18
Когда делать pull request?
Очепятки
Оптимизация
Рефакторинг
Документация
Тесты
TODO
Открытые Issues
18
Когда делать pull request?
Очепятки
Оптимизация
Рефакторинг
Документация
Тесты
TODO
Открытые Issues
18
Правильный pull request
19
Правильный pull request
Communicate
19
Правильный pull request
Communicate Code
19
Правильный pull request
Communicate Code Pull request
19
Правильный pull request
Communicate Code Pull request Review
19
Правильный pull request
Communicate Code Pull request Review Done
19
Правильный pull request
Communicate Code Pull request Review Done Clear
19
Создание своего проекта
20
Найди идею
21
Найди идею
Уже готовый код
Повседневная задача
Новый взгляд
21
Найди идею
Уже готовый код
Повседневная задача
Новый взгляд
21
Найди идею
Уже готовый код
Повседневная задача
Новый взгляд
21
Причеши код
22
Причеши код
Чистый внутри
Простой в использовании
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
22
Причеши код
Чистый внутри
Простой в использовании
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
22
Делай историю
https://chris.beams.io/posts/git-commit/
23
Делай историю
Атомарность
Cтиль
Rebase
https://chris.beams.io/posts/git-commit/
23
Делай историю
Атомарность
Cтиль
Rebase
https://chris.beams.io/posts/git-commit/
23
Делай историю
Атомарность
Cтиль
Rebase
https://chris.beams.io/posts/git-commit/
23
Документация - все
24
Документация - все
Example project
Комментарии в коде
Документация API
README.md
24
Документация - все
Example project
Комментарии в коде
Документация API
README.md
24
Документация - все
Example project
Комментарии в коде
Документация API
README.md
24
Документация - все
Example project
Комментарии в коде
Документация API
README.md
24
Документация - все
Example project
Комментарии в коде
Документация API
README.md
24
Правильный README
Quickstart
Сборка и интеграция
Использование
Конфигурация
FAQ
25
Правильный README
Quickstart
Сборка и интеграция
Использование
Конфигурация
FAQ
25
Правильный README
Quickstart
Сборка и интеграция
Использование
Конфигурация
FAQ
25
Правильный README
Quickstart
Сборка и интеграция
Использование
Конфигурация
FAQ
25
Правильный README
Quickstart
Сборка и интеграция
Использование
Конфигурация
FAQ
25
Правильный README
26
Правильный README
https://github.com/Alamofire/Alamofire
27
Распостраняй
28
Распостраняй
Менеджеры зависимостей
Ручная интеграция
28
Распостраняй
Менеджеры зависимостей
Ручная интеграция
28
Выбери лицензию
29
Выбери лицензию
Copyleft Permissive
https://choosealicense.com/
29
Выбери лицензию
Copyleft Permissive
https://choosealicense.com/
29
Выбери лицензию
Copyleft Permissive
https://choosealicense.com/
29
http://semver.org
Версионируй правильно
30
1.0.X - внутренние изменения
1.X.0 - совместимые изменения
X.0.0 - несовместимые изменения
http://semver.org
Версионируй правильно
30
1.0.X - внутренние изменения
1.X.0 - совместимые изменения
X.0.0 - несовместимые изменения
http://semver.org
Версионируй правильно
30
1.0.X - внутренние изменения
1.X.0 - совместимые изменения
X.0.0 - несовместимые изменения
http://semver.org
Версионируй правильно
30
Расскажи всем
31
Расскажи всем
Выступи с докладом
Напиши статью
Добавься в awesome листы
Напросись в рассылки
31
Выступи с докладом
Напиши статью
Добавься в awesome листы
Напросись в рассылки
Расскажи всем
31
Выступи с докладом
Напиши статью
Добавься в awesome листы
Напросись в рассылки
Расскажи всем
31
Выступи с докладом
Напиши статью
Добавься в awesome листы
Напросись в рассылки
Расскажи всем
31
Поддержка проекта
Создай правила
32
Создай правила
CONTRIBUTING.md
ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
CODE_OF_CONDUCT.md
32
Создай правила
CONTRIBUTING.md
ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
CODE_OF_CONDUCT.md
32
Создай правила
CONTRIBUTING.md
ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
CODE_OF_CONDUCT.md
32
Создай правила
CONTRIBUTING.md
ISSUE_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
CODE_OF_CONDUCT.md
32
Автоматизируй рутину
33
Continuous integration
Прогоны тестов
Автоматическое ревью
Статический анализ
Автоматические релизы
Другие проверки PR
Автоматизируй рутину
33
Автоматизируй рутину
Continuous integration
Прогоны тестов
Автоматическое ревью
Статический анализ
Автоматические релизы
Другие проверки PR
33
Автоматизируй рутину
Continuous integration
Прогоны тестов
Автоматическое ревью
Статический анализ
Автоматические релизы
Другие проверки PR
33
Автоматизируй рутину
Continuous integration
Прогоны тестов
Автоматическое ревью
Статический анализ
Автоматические релизы
Другие проверки PR
33
Автоматизируй рутину
Continuous integration
Прогоны тестов
Автоматическое ревью
Статический анализ
Автоматические релизы
Другие проверки PR
33
Автоматизируй рутину
Continuous integration
Прогоны тестов
Автоматическое ревью
Статический анализ
Автоматические релизы
Другие проверки PR
33
34
35
CodeCov
36
CodeBeat
37
38
Защита от дурака
39
Защита от дурака
39
Суть Open Source
Как войти в проект
Как создать проект
Как упростить себе жизнь
Как перестать бояться
Теперь ты знаешь
https://opensource.guide
40
Суть Open Source
Как войти в проект
Как создать проект
Как упростить себе жизнь
Как перестать бояться
Теперь ты знаешь
https://opensource.guide
40
Суть Open Source
Как войти в проект
Как создать проект
Как упростить себе жизнь
Как перестать бояться
Теперь ты знаешь
https://opensource.guide
40
Суть Open Source
Как войти в проект
Как создать проект
Как упростить себе жизнь
Как перестать бояться
Теперь ты знаешь
https://opensource.guide
40
Суть Open Source
Как войти в проект
Как создать проект
Как упростить себе жизнь
Как перестать бояться
Теперь ты знаешь
https://opensource.guide
40
41
By DigitalOcean and GitHub
https://hacktoberfest.digitalocean.com
Let’s contribute!
Алексей Кудрявцев
@west0r
Let’s contribute!
Алексей Кудрявцев
@west0r

More Related Content

Similar to Open your source

Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковElena Grahovac
 
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
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Anthony Marchenko
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Ontico
 
Python-технология которую легко продавать!
Python-технология которую легко продавать!Python-технология которую легко продавать!
Python-технология которую легко продавать!Aleksey Nakorenko
 
Как внести свой вклад в Open Source
Как внести свой вклад в Open SourceКак внести свой вклад в Open Source
Как внести свой вклад в Open SourceZarema Khalilova
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Mail.ru Group
 
Почему стоит выбрать PHP
Почему стоит выбрать PHPПочему стоит выбрать PHP
Почему стоит выбрать PHPMaxim Sivokon
 
Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Mykhailo Poliarush
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 
YouLead Tomsk 2012 — Constantin Kaplinsky
YouLead Tomsk 2012 — Constantin KaplinskyYouLead Tomsk 2012 — Constantin Kaplinsky
YouLead Tomsk 2012 — Constantin KaplinskyConstantin Kaplinsky
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Николай Мациевский Насколько открыт Open source ADD-2010
Николай Мациевский   Насколько открыт Open source ADD-2010Николай Мациевский   Насколько открыт Open source ADD-2010
Николай Мациевский Насколько открыт Open source ADD-2010Siel01
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьPVasili
 
DEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровьDEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровьSasha Soleev
 
Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...
Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...
Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...Anatoliy Arkhipov
 
Presentation oss-05 russe
Presentation oss-05 russePresentation oss-05 russe
Presentation oss-05 russeLegalCamp
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Ontico
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчейVitebsk DSC
 

Similar to Open your source (20)

Готовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходниковГотовим код 
в мир открытых исходников
Готовим код 
в мир открытых исходников
 
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"
 
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
Встраивание Python в мобильные приложения – нюансы interoperation, новые подх...
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
 
Python-технология которую легко продавать!
Python-технология которую легко продавать!Python-технология которую легко продавать!
Python-технология которую легко продавать!
 
2010 ims slides
2010 ims slides2010 ims slides
2010 ims slides
 
Как внести свой вклад в Open Source
Как внести свой вклад в Open SourceКак внести свой вклад в Open Source
Как внести свой вклад в Open Source
 
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
Что отличает джуниора от сениора или как питонисту не иметь проблем с поиском...
 
Почему стоит выбрать PHP
Почему стоит выбрать PHPПочему стоит выбрать PHP
Почему стоит выбрать PHP
 
Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python? Как расширять Robot Framework под свои нужны с помощью Python?
Как расширять Robot Framework под свои нужны с помощью Python?
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 
YouLead Tomsk 2012 — Constantin Kaplinsky
YouLead Tomsk 2012 — Constantin KaplinskyYouLead Tomsk 2012 — Constantin Kaplinsky
YouLead Tomsk 2012 — Constantin Kaplinsky
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Николай Мациевский Насколько открыт Open source ADD-2010
Николай Мациевский   Насколько открыт Open source ADD-2010Николай Мациевский   Насколько открыт Open source ADD-2010
Николай Мациевский Насколько открыт Open source ADD-2010
 
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов ИгорьНепрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
Непрерывная интеграция шаг к непрерывному деплою. Родионов Игорь
 
DEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровьDEV Labs 2016. Микросервисы - первая кровь
DEV Labs 2016. Микросервисы - первая кровь
 
Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...
Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...
Программные решения Hewlett Packard Enterprise - RUS DOC (документация на рус...
 
Presentation oss-05 russe
Presentation oss-05 russePresentation oss-05 russe
Presentation oss-05 russe
 
Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013Учебный день конференции HighLoad++ 2013
Учебный день конференции HighLoad++ 2013
 
Выбираем стратегию создания бранчей
Выбираем стратегию создания бранчейВыбираем стратегию создания бранчей
Выбираем стратегию создания бранчей
 

Open your source