RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

75
Open-Source Software. Что в мешке? RAILS CLUB 2016 Sergey Dolganov, Evil Martians
  • Upload

    -
  • Category

    Internet

  • view

    35
  • download

    3

Transcript of RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Page 1: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Open-Source Software.Что в мешке?

RAILS CLUB 2016

Sergey Dolganov, Evil Martians

Page 2: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 3: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Опасности стороннего кода

https://robots.thoughtbot.com/to-gem-or-not-to-gem

— Вы ничего не знаете о качестве и безопасности кода.

— Вы ничего не знаете о его поддержке в дальнейшем.

— Вы не знаете, сколько ресурсов потребует в работе

сторонний гем.

— Вам необходимо использовать гем в соответствии с его

лицензией.

— Вам придется мириться с его DSL/API.

— Возможно, вам придется тащить слишком большой

багаж.

Page 4: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 5: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 6: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. На Rubygems порядка 100 000 гемов, при этом большая

часть загрузок приходится на ~1%

Проблемы open-source зависимостей

Page 7: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

2. У Node.js, передовика open-source, дела обстоят хуже:

“The average open source node.js project has a dependency

graph more than 3 times bigger than the average ruby

project!”

Проблемы open-source зависимостей

https://twitter.com/teabass/status/763325955486146560

Page 8: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 9: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Ruby Toolbox — альтернативы, популярность, динамика

2. RubyGems — информация о версиях

3. Github — сommits, issues & pulls, контрибьюторы

4. CodeClimate — качество кода

5. coveralls.io — покрытие документацией

6. Rubocop — cоответствие стилю

Стандартный цикл оценки Ruby OSS-проекта

Page 10: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— Rubygems

— GitHub

— Ruby Toolbox

— Bestgems.org

— Issue Stats

— Dependency CI & Libraries.io

— RecordNotFound.com

Инструменты для подборасторонних решений

Page 11: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— rubocop — проверка на соответствие стилю

— simplecov, coveralls, rcov — тестовое покрытие

— yard, inch — покрытие кода документацией

— Code Climate, cane/flog/flay — качество кода

— Бейджики с загрузками за последний период или с

пометкой об устаревании кода

Инструменты для анализакодовой базы

Page 12: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Open-Source Maturity Model

https://en.wikipedia.org/wiki/OpenSource_Maturity_Model

Page 13: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— Наличие хорошей документации

— Качественная архитектура

— Наличие инструмента взаимодействия с

потребителем/пользователем/контрибьютором

— Наличие и качество тестового покрытия

— Наличие Roadmap (или долгосрочных планов развития)

— Количество открытых багов

— Число подписчиков на mailing list

Примеры метрикдля оценки зрелости

http://www.dmst.aueb.gr/dds/pubs/conf/2008-OSS-qmodel/html/SGSS08.htm

Page 14: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Популярность проекта

2. Качество поддержки

3. Характеристики кода

4. Характеристики документации

Направления «созревания»open-source

Page 15: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Подвижность проекта

— количество и динамика изменений в коде

— релизы

— открытые/закрытые Pulls & Issues

2. Участники проекта

— сколько контрибьюторов

— кто и в чем участвует

— сколько загрузок

Ключевые группы метрик поддерживаемости

Page 16: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 17: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 18: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Rubygems:

— зависимости

— релизы

— ссылки на исходники, wiki

— описание

— другие метаданные из gemspec

2. Bestgems:

— данные о загрузках за каждый день

— данные о рейтинге по загрузкам за каждый день

Данные из открытых источников (1/2)

Page 19: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

3. Github:

— pull requests (статусы, комментарии, пользователи,

даты)

— issues (статусы, комментарии, пользователи, даты)

— commits за последний год

— contributors

— и другая интересная информация

Данные из открытых источников (2/2)

Page 20: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Open-Source Software Certification Service

Ossert

Page 21: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Hanami vs Sinatra, Padrino, Ramaze…

и Rails

Отчет

Page 22: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 23: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Hanami — 46,27%

2. Sinatra — 29,47%

3. Padrino — 23,27%

4. Ramaze — 1,05%

Рейтинг по числу коммитов

Page 24: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 25: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— Sinatra — уровень стабилизировался с 2014

— Padrino — спад начиная с 2014

— Hanami — рост с 2014, пик в конце 2015

Треды по пользователямсоздающим Issues

Page 26: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 27: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Sinatra — 49,84% (~100 активных участников за квартал)

2. Hanami — 27,71% (~85)

3. Padrino — 21,6% (<35)

4. Ramaze — 0,84%

Рейтинг по количествуактивных участников

Page 28: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 29: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Hanami — 38,56% (~70%)

2. Padrino — 30,09% (~50%)

3. Sinatra — 27,87% (~50%)

4. Ramaze — 0,75%

Рейтинг по процентузакрытых Issues

Page 30: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 31: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Padrino — 51,75% (~60 issues за квартал)

2. Hanami — 23,47% (~35)

3. Sinatra — 22,08% (~30)

4. Ramaze — 3,48%

Рейтинг по числу Issues

Page 32: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— Hanami — лидер по коммитам и проценту закрытия Issues

— Sinatra — лидер по числу вовлеченных в проект людей

— Padrino — лидер по потоку Issues

Предварительный итог

Page 33: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 34: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Rails — 83,76%

2. Sinatra — 8,84%

3. Hanami — 4,08%

4. Padrino — 2,6%

Рейтинг по количествуактивных участников

Page 35: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 36: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Rails — 63,85%

2. Sinatra — 35,74%

3. Padrino, Hanami — <1%

Рейтинг по числу загрузок

Page 37: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Slim vs Haml

Отчет

Page 38: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 39: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Slim — 54,77% (~20)

2. Haml — 45,23% (~16-17)

Рейтинг по числу fork'ов

Page 40: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 41: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Slim — 68,29% (~180)

2. Haml — 31,71% (~80)

Рейтинг по числу «звезд» на GitHub

Page 42: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 43: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Slim — 55,94% (~180)

2. Haml — 44,06% (~80)

Рейтинг по числуактивных участников

Page 44: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 45: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Slim — 72,23% (~85%)

2. Haml — 27,77% (~20%)

Рейтинг по процентузакрытия Pull Request'ов

Page 46: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 47: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Haml — 68,67% (~25)

2. Slim — 31,33% (~10)

Рейтинг по числу Pull Request'ов

Page 48: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 49: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Haml — 90,65% (max — 15)

2. Slim — 9,35% (max — 2)

Рейтинг по числустарых Pull Request'ов

Page 50: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 51: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Slim — 80% (36)

2. Haml — 20% (9)

Рейтинг по числукоммитов за год

Page 52: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 53: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Haml — 72,29% (6,260,388)

2. Slim — 27,71% (2,903,900)

Рейтинг по числу загрузок

Page 54: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— У обоих проектов невысокая активность разработки

— Haml — лидер по количеству загрузок и числу реквестов

— Slim — лидер по количеству участников и их вкладу

Итог

Page 55: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Rspec vs Minitest

Отчет

Page 56: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 57: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Minitest — 57,36% (~194M загрузок за прошедший год)

2. Rspec — 42,64% (~175M)

Рейтинг по числу загрузок

Page 58: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 59: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Minitest — 79,25% (~75 “звёзд” каждый квартал)

2. Rspec — 20,75% (~20)

Рейтинг по числу «звезд» на GitHub

Page 60: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 61: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Rspec — 64,07% (~80 человек каждый квартал)

2. Minitest — 35,93% (~50)

Рейтинг по количествуактивных участников

Page 62: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 63: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Rspec — 60,54% (~90%)

2. Minitest — 39,46% (~65%)

Рейтинг по процентузакрытия Pull Request'ов

Page 64: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 65: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Rspec — 78,13% (50-60 Pull Request'ов в среднем)

2. Minitest — 21,87% (~20)

Рейтинг по количествуPull Request'ов

Page 66: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— Minitest — лидер по количеству загрузок и “звёзд”

— Rspec — лидер по количеству участников и их вкладу

Итог

Page 67: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 68: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Ossert

ossert.evilmartians.io/gon

Page 69: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Ossert

ossert.evilmartians.io/gon

Page 70: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

— Инструмент оценки зрелости и поддерживаемости

проекта на Ruby в полноценном режиме

— Анализ зависимостей

— Агрегация с метриками по качеству кода и документации

— Рекомендации проектам по шагам для роста зрелости

— Поддержка Elixir, Python и других языков

Дальнейшие шаги

Page 71: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 72: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 73: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

1. Находим альтернативы на Ruby Toolbox

2. Выбираем достаточно зрелые проекты, тут поможет

Ossert или другой способ разностороннего анализа

3. Выбираем тот, проект чей DSL ближе, не забывая про

рекомендации он Thoughtbot

«Зрелый» цикл оценкиRuby OSS-проекта

Page 74: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?
Page 75: RailsClub 2016. Dolganov Sergey. Open-Source Software. What's in a bag?

Присоединяйтесь!

github.com/ossert/ossert

github.com/ossert/ossert-web

@ss_dolganov

@evilmartians

[email protected]