SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Как сделать контрибут в
Ruby on Rails
Ярослав Маркин
Москва, апрель 2009
Привет?
• Ярослав Маркин
• evilmartians.ru — небольшая команда рельсовиков (разработка и
консультации)
• Где вы меня видели? github (gem russian), контрибуты в Rails
• В далеком 2006 вместе с Юликом Тархановым и Ильей
Немихиным сделали лист ror2ru и начали работу над rubyonrails.ru
Для кого?
• Новички — с чего начать, как помочь Rails, как научиться?
• Опытные — как сделать так чтобы патч все-таки приняли?
Это не так сложно!
1. Для новичков: способы
контрибута
• Lighthouse: rails.lighthouseapp.com
• Bug
• Security Bug
• Docpatch
• Новая feature
Bug
• Нормальный заголовок и описание как можно подробнее
• Окружение (Версия ОС, Ruby, Rails, используемые gem и плагины)
• Пример кода, в котором есть проблемы
• Важно: Failing tests
• Важно: Кто закоммитил патч, который все сломал?
• Если источника проблемы не видно и нельзя назначить ответственного — патч будет висеть очень
долго
Security Bug
• Вы уверены? Вы правда уверены?
• Не делайте bug в Lighthouse
• Пишите: security@rubyonrails.org
Docpatch
• Отличный вариант для тех, кто начинает разбираться, «как это работает»
• http://github.com/lifo/docrails
• Права на коммит можно получить у Pratik Naik (github.com/lifo) — пишите через GitHub
• Обязательно прочитайте гайдлайны — http://github.com/lifo/docrails/wikis
• Спрашивайте совета в IRC
• Можно работать над Rails Guides
• Docpatch не считается официальным контрибутом в Rails
Новая feature
• Нужна реализация, а не идея. К реализации вернемся во второй части
• Даже если тикет оформлен грамотно, шансы на его рассмотрение близки к нулю, если нет патчей и
обоснования
• Можно попробовать список рассылки, но без патча смысла нет
• Если есть реализация, она всегда может быть отклонена для того чтобы стать плагином —
расстраиваться не стоит
• Вообще говоря, можно начать с плагина (из последнего — named_scope)
2. Для опытных
• Над чем бы поработать?
• Очевидные вещи (git, git format-patch, тесты)
• Как же сделать чтобы патч все-таки приняли?
Над чем бы поработать?
• Подпишитесь на RSS rails.lighthouseapp.com
• Watch http://github.com/rails/rails
• Обзор Lighthouse: подтверждение багов, попытки пофиксить баги
• lifo: I'd just say, monitor Rails commits. Don’t use RDoc, look into the
source. Look for incomplete tickets and complete them if you wanna
take a step further
Новый патч: очевидные вещи
• git clone git://github.com/rails/rails.git
• NB: делать fork не имеет смысла, разве что вы не предлагаете
сотую версию переделки ActiveModel
• http://www.tpope.net/rails-git-best-practices
• git checkout / rebase / format-patch
• Тесты!
Что делать для принятия патча?
«Отвечает команда знатоков»
• nzkoz: Mailing list threads get more attention than just a patch
• nzkoz: I try to stay no more than ~10 days behind on the mailing list
• nzkoz: find a few people here or wherever to help you think through
the changes, then write to the core mailing list when you've got
something concrete
К кому обратиться для принятия
патча?
• ror2ru! Попросите оценить патч
• irc.freenode.net #rails-contrib
• Список рассылки http://groups.google.com/group/rubyonrails-core
• Rails Core Committer (нет персональной отвественности) — через
IRC или Lighthouse
DHH — для хороших и безумных идей, все что нужно чтобы «было хорошо», всегда можно получить
фидбек. Можно «поймать» в IRC.
Jeremy — «работяга» Rails, практически все области + I18n, несложно добиться ревью. Раньше можно
было «поймать» в IRC.
Koz — много областей, бывает в IRC и просматривает список рассылки
Rick — ранее много областей (в том числе AR,AM и Engines), сейчас нет активности в Rails
Pratik — в настоящее время чуть ли не главный контрибутор, легко можно «поймать» на IRC, принмает
патчи для всех частей Rails, ведет docrails. Новые тикеты можно смело назначать на него.
Josh — AC, Rack. Найти его в IRC не удавалось, можно найти в списке рассылки.
Yehuda — AC,ActiveORM, Rails 3.0 в целом.
«Расширенный состав»
• Frederick Cheung, Geoff Buesing, Manfred Stienstra, Eloy Duran, ...
• #rails-contrib
• Mike Gunderloy — поможет с докпатчами и гидами Rails
• Sven Fuchs — ответственный за I18n
Lighthouse Ticket
• Нужно назначить на кого-то конкретного
• Начать с IRC, если реакции нет либо патч спорный — список
рассылки
• Никаких «+1»! Если уже есть 3-4 «+1» — нет смысла добавлять.
Спам «по друзьям» легко заметить.
• Теги: bug — исправляет ошибку, patch, verified — если патч
подтвердили 3 и более человека
Самое время для контрибута
• Большой Merge (Rails 3.0: ActionPack, ActiveORM, ActiveSupport
on diet...)
• Небольшая активность Core контрибуторов
• Google Summer of Code, anyone?
Вопросы?
• yaroslav@markin.net
• twitter.com/yaroslav
• github.com/yaroslav
• http://evilmartians.ru

Contenu connexe

Tendances

Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и DjangoTaras Lyapun
 
BlackBox testing
BlackBox testingBlackBox testing
BlackBox testingbeched
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!PyNSK
 
Akka: как я перестал бояться и полюбил асинхронный код
Akka: как я перестал бояться и полюбил асинхронный кодAkka: как я перестал бояться и полюбил асинхронный код
Akka: как я перестал бояться и полюбил асинхронный кодRoman Grebennikov
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlDaniel Podolsky
 
Perl 5.16 and beyond by Jesse Vincent (Русская версия)
Perl 5.16 and beyond by Jesse Vincent (Русская версия)Perl 5.16 and beyond by Jesse Vincent (Русская версия)
Perl 5.16 and beyond by Jesse Vincent (Русская версия)Anatoly Sharifulin
 
Hackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffAppHackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffAppProvectus
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и заAnton Patrushev
 
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版Masahiro Tomita
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017Alex Chistyakov
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Pythonautomated-testing.info
 

Tendances (13)

Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
BlackBox testing
BlackBox testingBlackBox testing
BlackBox testing
 
Мой Python всегда со мной!
Мой Python всегда со мной!Мой Python всегда со мной!
Мой Python всегда со мной!
 
Akka: как я перестал бояться и полюбил асинхронный код
Akka: как я перестал бояться и полюбил асинхронный кодAkka: как я перестал бояться и полюбил асинхронный код
Akka: как я перестал бояться и полюбил асинхронный код
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
Perl 5.16 and beyond by Jesse Vincent (Русская версия)
Perl 5.16 and beyond by Jesse Vincent (Русская версия)Perl 5.16 and beyond by Jesse Vincent (Русская версия)
Perl 5.16 and beyond by Jesse Vincent (Русская версия)
 
Per! А что дальше?
Per! А что дальше?Per! А что дальше?
Per! А что дальше?
 
Hackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffAppHackathon Hydrosphere.io - AffApp
Hackathon Hydrosphere.io - AffApp
 
Rails for dummies
Rails for dummiesRails for dummies
Rails for dummies
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и за
 
MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版MySQLの文字コード事情 2017版
MySQLの文字コード事情 2017版
 
My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017My talk on DevOps :) at Stachka 2017
My talk on DevOps :) at Stachka 2017
 
Быстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием PythonБыстрое расширение Robot Framework под свои нужды с использованием Python
Быстрое расширение Robot Framework под свои нужды с использованием Python
 

En vedette

Spread Ad Samples
Spread Ad SamplesSpread Ad Samples
Spread Ad SamplesSSwift219
 
Review cal 30 s 8th september 2011
Review cal 30 s 8th september 2011Review cal 30 s 8th september 2011
Review cal 30 s 8th september 2011sushhi
 
Msw Wa Bookmark Front
Msw Wa Bookmark FrontMsw Wa Bookmark Front
Msw Wa Bookmark FrontJS Wa Member
 
A Hierarchical Graph for Nucleotide Binding Domain 2
A Hierarchical Graph for Nucleotide Binding Domain 2A Hierarchical Graph for Nucleotide Binding Domain 2
A Hierarchical Graph for Nucleotide Binding Domain 2Samuel Kakraba
 
Why schools are spooked by social media
Why schools are spooked by social mediaWhy schools are spooked by social media
Why schools are spooked by social mediaDenis Masseni
 
Remote Offsets Flyer 9-1-16
Remote Offsets Flyer 9-1-16Remote Offsets Flyer 9-1-16
Remote Offsets Flyer 9-1-16Cecil Lasich
 
Habilidades comunicativas
Habilidades comunicativasHabilidades comunicativas
Habilidades comunicativasiranialion
 
2 diarecreacionalcomfandi10 1
2 diarecreacionalcomfandi10 12 diarecreacionalcomfandi10 1
2 diarecreacionalcomfandi10 1Heimer Perez
 
TIG GROUP | TOTAL SITE SOLUTIONS
TIG GROUP | TOTAL SITE SOLUTIONSTIG GROUP | TOTAL SITE SOLUTIONS
TIG GROUP | TOTAL SITE SOLUTIONStigmena
 

En vedette (14)

Spread Ad Samples
Spread Ad SamplesSpread Ad Samples
Spread Ad Samples
 
Review cal 30 s 8th september 2011
Review cal 30 s 8th september 2011Review cal 30 s 8th september 2011
Review cal 30 s 8th september 2011
 
Msw Wa Bookmark Front
Msw Wa Bookmark FrontMsw Wa Bookmark Front
Msw Wa Bookmark Front
 
Villaseca
VillasecaVillaseca
Villaseca
 
A Hierarchical Graph for Nucleotide Binding Domain 2
A Hierarchical Graph for Nucleotide Binding Domain 2A Hierarchical Graph for Nucleotide Binding Domain 2
A Hierarchical Graph for Nucleotide Binding Domain 2
 
Why schools are spooked by social media
Why schools are spooked by social mediaWhy schools are spooked by social media
Why schools are spooked by social media
 
25-11-2010
25-11-201025-11-2010
25-11-2010
 
OES
OESOES
OES
 
082310 gov team first day 50m
082310 gov team first day 50m082310 gov team first day 50m
082310 gov team first day 50m
 
Plans for shooting
Plans for shootingPlans for shooting
Plans for shooting
 
Remote Offsets Flyer 9-1-16
Remote Offsets Flyer 9-1-16Remote Offsets Flyer 9-1-16
Remote Offsets Flyer 9-1-16
 
Habilidades comunicativas
Habilidades comunicativasHabilidades comunicativas
Habilidades comunicativas
 
2 diarecreacionalcomfandi10 1
2 diarecreacionalcomfandi10 12 diarecreacionalcomfandi10 1
2 diarecreacionalcomfandi10 1
 
TIG GROUP | TOTAL SITE SOLUTIONS
TIG GROUP | TOTAL SITE SOLUTIONSTIG GROUP | TOTAL SITE SOLUTIONS
TIG GROUP | TOTAL SITE SOLUTIONS
 

Similaire à Как сделать контрибут в Ruby on Rails

Open Source − это не больно (Сергей Нартымов)
Open Source − это не больно (Сергей Нартымов)Open Source − это не больно (Сергей Нартымов)
Open Source − это не больно (Сергей Нартымов)Olga Lavrentieva
 
Интернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russianИнтернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russianАлександр Ежов
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned Alexander Syrotenko
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Ontico
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustMichael Pankov
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRailsPavel Gabriel
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
A polyglot's view of Ruby on Rails – Leonid Shevtsov
A polyglot's view of Ruby on Rails –  Leonid ShevtsovA polyglot's view of Ruby on Rails –  Leonid Shevtsov
A polyglot's view of Ruby on Rails – Leonid ShevtsovRuby Meditation
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Ontico
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in productionAnatoly Popov
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 

Similaire à Как сделать контрибут в Ruby on Rails (20)

Open Source − это не больно (Сергей Нартымов)
Open Source − это не больно (Сергей Нартымов)Open Source − это не больно (Сергей Нартымов)
Open Source − это не больно (Сергей Нартымов)
 
Migrate!
Migrate!Migrate!
Migrate!
 
Интернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russianИнтернационализация и локализация Ruby on Rails. gem russian
Интернационализация и локализация Ruby on Rails. gem russian
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRails
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
A polyglot's view of Ruby on Rails – Leonid Shevtsov
A polyglot's view of Ruby on Rails –  Leonid ShevtsovA polyglot's view of Ruby on Rails –  Leonid Shevtsov
A polyglot's view of Ruby on Rails – Leonid Shevtsov
 
Ruby on Rails for noobs
Ruby on Rails for noobsRuby on Rails for noobs
Ruby on Rails for noobs
 
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
Как сделать сложное простым. История создания Проект1917 / Сергей Спорышев (I...
 
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
CodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается YiiCodeFest 2011. Макаров А. — Как разрабатывается Yii
CodeFest 2011. Макаров А. — Как разрабатывается Yii
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Как разраба
Как разрабаКак разраба
Как разраба
 
2 bdw.key
2 bdw.key2 bdw.key
2 bdw.key
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
python vs ruby
python vs rubypython vs ruby
python vs ruby
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 

Plus de Александр Ежов

Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Александр Ежов
 
Rubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуRubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуАлександр Ежов
 
Liquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoRLiquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoRАлександр Ежов
 
Антикризисная презентация
Антикризисная презентацияАнтикризисная презентация
Антикризисная презентацияАлександр Ежов
 
Eventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийEventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийАлександр Ежов
 
Обзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для RailsОбзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для RailsАлександр Ежов
 
Использования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложенииИспользования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложенииАлександр Ежов
 
Проблемы при работе с разными версиями Ruby и разными gem
Проблемы при работе с разными версиями Ruby и разными gemПроблемы при работе с разными версиями Ruby и разными gem
Проблемы при работе с разными версиями Ruby и разными gemАлександр Ежов
 

Plus de Александр Ежов (20)

Кеширование данных в БД
Кеширование данных в БДКеширование данных в БД
Кеширование данных в БД
 
Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015Борьба с багами: RailsClub на DevConf 2015
Борьба с багами: RailsClub на DevConf 2015
 
Rails 5: awesome features and breaking changes
Rails 5: awesome features and breaking changesRails 5: awesome features and breaking changes
Rails 5: awesome features and breaking changes
 
Big Data и Ruby
Big Data и RubyBig Data и Ruby
Big Data и Ruby
 
Abstract machines for great good
Abstract machines for great goodAbstract machines for great good
Abstract machines for great good
 
Rubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секундуRubt on Rails: 1000 запросов в секунду
Rubt on Rails: 1000 запросов в секунду
 
Liquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoRLiquor, Liquid и другие безопасные языки разметки в RoR
Liquor, Liquid и другие безопасные языки разметки в RoR
 
Vim or die
Vim or dieVim or die
Vim or die
 
Capistrano Rails
Capistrano RailsCapistrano Rails
Capistrano Rails
 
Умное кэширование в Rails
Умное кэширование в RailsУмное кэширование в Rails
Умное кэширование в Rails
 
Sphinx как база данных
Sphinx как база данныхSphinx как база данных
Sphinx как база данных
 
Emacs и Rails
Emacs и RailsEmacs и Rails
Emacs и Rails
 
Антикризисная презентация
Антикризисная презентацияАнтикризисная презентация
Антикризисная презентация
 
Eventmachine: структура evented-приложений
Eventmachine: структура evented-приложенийEventmachine: структура evented-приложений
Eventmachine: структура evented-приложений
 
Дэдлоки
ДэдлокиДэдлоки
Дэдлоки
 
Обзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для RailsОбзорное сравнение серверов приложений для Rails
Обзорное сравнение серверов приложений для Rails
 
Приложения в плагинах
Приложения в плагинахПриложения в плагинах
Приложения в плагинах
 
Использования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложенииИспользования PgQ и Londste в rails-приложении
Использования PgQ и Londste в rails-приложении
 
Масштабирование в Rails
Масштабирование в RailsМасштабирование в Rails
Масштабирование в Rails
 
Проблемы при работе с разными версиями Ruby и разными gem
Проблемы при работе с разными версиями Ruby и разными gemПроблемы при работе с разными версиями Ruby и разными gem
Проблемы при работе с разными версиями Ruby и разными gem
 

Как сделать контрибут в Ruby on Rails

  • 1. Как сделать контрибут в Ruby on Rails Ярослав Маркин Москва, апрель 2009
  • 2. Привет? • Ярослав Маркин • evilmartians.ru — небольшая команда рельсовиков (разработка и консультации) • Где вы меня видели? github (gem russian), контрибуты в Rails • В далеком 2006 вместе с Юликом Тархановым и Ильей Немихиным сделали лист ror2ru и начали работу над rubyonrails.ru
  • 3. Для кого? • Новички — с чего начать, как помочь Rails, как научиться? • Опытные — как сделать так чтобы патч все-таки приняли?
  • 4. Это не так сложно!
  • 5. 1. Для новичков: способы контрибута • Lighthouse: rails.lighthouseapp.com • Bug • Security Bug • Docpatch • Новая feature
  • 6. Bug • Нормальный заголовок и описание как можно подробнее • Окружение (Версия ОС, Ruby, Rails, используемые gem и плагины) • Пример кода, в котором есть проблемы • Важно: Failing tests • Важно: Кто закоммитил патч, который все сломал? • Если источника проблемы не видно и нельзя назначить ответственного — патч будет висеть очень долго
  • 7. Security Bug • Вы уверены? Вы правда уверены? • Не делайте bug в Lighthouse • Пишите: security@rubyonrails.org
  • 8. Docpatch • Отличный вариант для тех, кто начинает разбираться, «как это работает» • http://github.com/lifo/docrails • Права на коммит можно получить у Pratik Naik (github.com/lifo) — пишите через GitHub • Обязательно прочитайте гайдлайны — http://github.com/lifo/docrails/wikis • Спрашивайте совета в IRC • Можно работать над Rails Guides • Docpatch не считается официальным контрибутом в Rails
  • 9. Новая feature • Нужна реализация, а не идея. К реализации вернемся во второй части • Даже если тикет оформлен грамотно, шансы на его рассмотрение близки к нулю, если нет патчей и обоснования • Можно попробовать список рассылки, но без патча смысла нет • Если есть реализация, она всегда может быть отклонена для того чтобы стать плагином — расстраиваться не стоит • Вообще говоря, можно начать с плагина (из последнего — named_scope)
  • 10. 2. Для опытных • Над чем бы поработать? • Очевидные вещи (git, git format-patch, тесты) • Как же сделать чтобы патч все-таки приняли?
  • 11. Над чем бы поработать? • Подпишитесь на RSS rails.lighthouseapp.com • Watch http://github.com/rails/rails • Обзор Lighthouse: подтверждение багов, попытки пофиксить баги • lifo: I'd just say, monitor Rails commits. Don’t use RDoc, look into the source. Look for incomplete tickets and complete them if you wanna take a step further
  • 12. Новый патч: очевидные вещи • git clone git://github.com/rails/rails.git • NB: делать fork не имеет смысла, разве что вы не предлагаете сотую версию переделки ActiveModel • http://www.tpope.net/rails-git-best-practices • git checkout / rebase / format-patch • Тесты!
  • 13. Что делать для принятия патча? «Отвечает команда знатоков» • nzkoz: Mailing list threads get more attention than just a patch • nzkoz: I try to stay no more than ~10 days behind on the mailing list • nzkoz: find a few people here or wherever to help you think through the changes, then write to the core mailing list when you've got something concrete
  • 14. К кому обратиться для принятия патча? • ror2ru! Попросите оценить патч • irc.freenode.net #rails-contrib • Список рассылки http://groups.google.com/group/rubyonrails-core • Rails Core Committer (нет персональной отвественности) — через IRC или Lighthouse
  • 15. DHH — для хороших и безумных идей, все что нужно чтобы «было хорошо», всегда можно получить фидбек. Можно «поймать» в IRC. Jeremy — «работяга» Rails, практически все области + I18n, несложно добиться ревью. Раньше можно было «поймать» в IRC.
  • 16. Koz — много областей, бывает в IRC и просматривает список рассылки Rick — ранее много областей (в том числе AR,AM и Engines), сейчас нет активности в Rails
  • 17. Pratik — в настоящее время чуть ли не главный контрибутор, легко можно «поймать» на IRC, принмает патчи для всех частей Rails, ведет docrails. Новые тикеты можно смело назначать на него. Josh — AC, Rack. Найти его в IRC не удавалось, можно найти в списке рассылки.
  • 18. Yehuda — AC,ActiveORM, Rails 3.0 в целом.
  • 19. «Расширенный состав» • Frederick Cheung, Geoff Buesing, Manfred Stienstra, Eloy Duran, ... • #rails-contrib • Mike Gunderloy — поможет с докпатчами и гидами Rails • Sven Fuchs — ответственный за I18n
  • 20. Lighthouse Ticket • Нужно назначить на кого-то конкретного • Начать с IRC, если реакции нет либо патч спорный — список рассылки • Никаких «+1»! Если уже есть 3-4 «+1» — нет смысла добавлять. Спам «по друзьям» легко заметить. • Теги: bug — исправляет ошибку, patch, verified — если патч подтвердили 3 и более человека
  • 21. Самое время для контрибута • Большой Merge (Rails 3.0: ActionPack, ActiveORM, ActiveSupport on diet...) • Небольшая активность Core контрибуторов • Google Summer of Code, anyone?
  • 22. Вопросы? • yaroslav@markin.net • twitter.com/yaroslav • github.com/yaroslav • http://evilmartians.ru