2. 2
Содержание
• Как устроено международное
сообщество PostgreSQL
• Как написать патч (от Proposal до
Commit'а)
• Инструменты разработчика
3. 3
Мотивация
• Изучение PostgreSQL
• Создание материала для обучения
новых разработчиков
• Шпаргалка и чек-лист для себя
• Обмен опытом
*Подчеркнутый текст – это ссылки
4. 4
Содержание
• Как устроено международное
сообщество PostgreSQL
• Как написать патч (от Proposal до
Commit'а)
• Инструменты разработчика
6. 6
Сообщество PostgreSQL
• The PostgreSQL Global
Development Group (PGDG)
– Основная команда – core team
– Коммитеры – commiters
– (Основные) разработчики –
(Major) contributors
• Компании-спонсоры (Postgres
Professional, EnterpriseDB,
2ndQuadrant, Cybertec...)
7. 7
Open source
• Распространяется свободно
• Лицензия PostgreSQL License –
похожа на BSD
• Исходный код PostgreSQL доступен
на Github
• Документация в открытом доступе
на официальном сайте
– Содержит разделы и для DBA, и
для разработчиков
8. 8
Конференции и встречи
• PGCon в Оттаве (в середине июня)
• PGConf.eu (в конце октября)
• PGConf.ru (в начале февраля)
• Множество локальных
PGConf и PGDay (в течение года)
• #PostgreSQLRussia Meetup (каждый
месяц)
• Семинары Postgres Professional
9. 9
Mailing lists (листы рассылки)
• pgsql-hackers – основной лист для
общения разработчиков
• pgsql-bugs
• pgsql-general
• pgsql-perfomance
• pgsql-novice
• И так далее...
10. 10
Правила хорошего тона в
листах рассылки
• Отдельное письмо для новой темы
• Используйте теги и пометки
– PROPOSAL, WIP (Work In
Progress), POC (Proof Of
Concept), PATCH
• Отвечайте в рассылку или
“Ответить всем”
• Цитируйте
11. 11
Правила хорошего тона в
листах рассылки
• Используйте подпись, если
работаете в компании
Hi, hackers!
Blablabla.
Anastasia Lubennikova
Postgres Professional:
http://www.postgrespro.com
The Russian Postgres Company
12. 12
Правила хорошего тона в
листах рассылки
• Пишите ответ в конце письма
A: Because it reverses the logical flow of
conversation.
Q: Why is top posting frowned upon?
A: Topposting.
Q: What is the most annoying thing on
usenet and in email?
13. 13
Цикл разработки
• Создание ветки для новой версии
• Commitfests (с июля по март)
• Feature Freeze (середина апреля)
• Alpha-версия
• Тестирование и доработка
• Beta-версия (середина июня)
• Выпуск новой версии PostgreSQL
(середина октября)
14. 14
Commitfests
• Разработчики выкладывают патчи
• Получают обратную связь от
Reviewers
• Автор дорабатывает патч
• Reviewer отмечает патч как готовый
для коммита
• Коммитер добавляет патч в
репозиторий на Github
15. 15
Где найти материалы?
• Документация
• Feature Matrix
• Архивы листов рассылок
• Wiki PostgreSQL
• Блоги о PostgreSQL
• Книги
• Видео докладов с конференций
• README и комментарии к коду
16. 16
Содержание
• Как устроено международное
сообщество PostgreSQL
• Как написать патч (от Proposal до
Commit'а)
• Инструменты разработчика
17. 17
Как написать патч
• Идея
• Proposal (предложение)
• Обсуждение
• Разработка
• Ревью
• Принятый патч
18. 18
Идея
• Есть ли готовые решения?
• Это задача из TODO?
• Предыдущие обсуждения в hackers?
• Аналоги в других системах?
• Документация и README
• Исходный код
19. 19
Proposal
• Идея, use case
• Измеримые результаты
• Необходимые изменения
– например, новый синтаксис
• Ссылки на:
– прошлые обсуждения в hackers
– академические статьи
• Вопросы
20. 20
Обсуждение
• Кто-то уже работает над этим
• Подводные камни
• Вопросы реализации
• Предложения
• Это слишком сложно внедрить
• Это никому не нужно =(
Защищайте свою идею!
28. 28
Dataset
• Sample Databases
• Встроенные функции
– random();
– generate_series(start, stop, step);
CREATE TABLE test (id integer, b box);
INSERT INTO test
(SELECT x, point(random(), random())
FROM generate_series(1,10) as x);
34. 34
Патч
• Новое письмо в hackers.
– Ссылка на прошлое обсуждение
– Описание ситуации
– На какой коммит оно ложится
– Тесты и результаты
– Документация
• Патч на коммитфесте
35. 35
Содержание
• Как устроено международное
сообщество PostgreSQL
• Как написать патч (от Proposal до
Commit'а)
• Инструменты разработчика
42. 42
Установка
●
Installation guide
./configure // не забывайте флаги
make j4
make check // временная установка и тесты
su
#make install
#adduser postgres
#mkdir $WORKSPACE_PATH/postgres_data
#chown postgres
$WORKSPACE_PATH/postgres_data