ossert 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.rspec +2 -0
  4. data/.rubocop_todo.yml +44 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +16 -0
  8. data/Gemfile +8 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +199 -0
  11. data/Rakefile +12 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/config/classifiers.yml +153 -0
  15. data/config/descriptions.yml +45 -0
  16. data/config/sidekiq.rb +15 -0
  17. data/config/stats.yml +198 -0
  18. data/config/translations.yml +44 -0
  19. data/db/backups/.keep +0 -0
  20. data/db/migrate/001_create_projects.rb +22 -0
  21. data/db/migrate/002_create_exceptions.rb +14 -0
  22. data/db/migrate/003_add_meta_to_projects.rb +14 -0
  23. data/db/migrate/004_add_timestamps_to_projects.rb +12 -0
  24. data/db/migrate/005_create_classifiers.rb +19 -0
  25. data/lib/ossert/classifiers/decision_tree.rb +112 -0
  26. data/lib/ossert/classifiers/growing/check.rb +172 -0
  27. data/lib/ossert/classifiers/growing/classifier.rb +175 -0
  28. data/lib/ossert/classifiers/growing.rb +163 -0
  29. data/lib/ossert/classifiers.rb +14 -0
  30. data/lib/ossert/config.rb +24 -0
  31. data/lib/ossert/fetch/bestgems.rb +98 -0
  32. data/lib/ossert/fetch/github.rb +536 -0
  33. data/lib/ossert/fetch/rubygems.rb +80 -0
  34. data/lib/ossert/fetch.rb +142 -0
  35. data/lib/ossert/presenters/project.rb +202 -0
  36. data/lib/ossert/presenters/project_v2.rb +117 -0
  37. data/lib/ossert/presenters.rb +8 -0
  38. data/lib/ossert/project.rb +144 -0
  39. data/lib/ossert/quarters_store.rb +164 -0
  40. data/lib/ossert/rake_tasks.rb +6 -0
  41. data/lib/ossert/reference.rb +87 -0
  42. data/lib/ossert/repositories.rb +138 -0
  43. data/lib/ossert/saveable.rb +153 -0
  44. data/lib/ossert/stats/agility_quarter.rb +62 -0
  45. data/lib/ossert/stats/agility_total.rb +71 -0
  46. data/lib/ossert/stats/base.rb +113 -0
  47. data/lib/ossert/stats/community_quarter.rb +28 -0
  48. data/lib/ossert/stats/community_total.rb +24 -0
  49. data/lib/ossert/stats.rb +32 -0
  50. data/lib/ossert/tasks/database.rake +179 -0
  51. data/lib/ossert/tasks/ossert.rake +52 -0
  52. data/lib/ossert/version.rb +4 -0
  53. data/lib/ossert/workers/fetch.rb +21 -0
  54. data/lib/ossert/workers/fetch_bestgems_page.rb +32 -0
  55. data/lib/ossert/workers/refresh_fetch.rb +22 -0
  56. data/lib/ossert/workers/sync_rubygems.rb +0 -0
  57. data/lib/ossert/workers.rb +11 -0
  58. data/lib/ossert.rb +63 -0
  59. data/ossert.gemspec +47 -0
  60. metadata +396 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e4e0028dc0e8484c13af62aa08115e2054372885
4
+ data.tar.gz: f3b8c10d0367809899dd376360155cecb32eee60
5
+ SHA512:
6
+ metadata.gz: a7f7872c3351e0a19fa4886720d65b32c5c421824d7acd7449f254cf1bbfe58b3eff5ea5d96317978ec47f9cc96a01e1b15fa4db9df246bb91cc1db90e40bc87
7
+ data.tar.gz: 4324ce5e6650e59a592f608cdb7110b3fa9985b5598bd4a27b50d40cf9e7a225d17bfe4cd7d195c81656cf0df9c7435011a2db09c8b0042382001712f30cfec2
data/.gitignore ADDED
@@ -0,0 +1,16 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /db/backups/*.psql
10
+ /db/backups/*.sql
11
+ /db/backups/*.dump
12
+ /tmp/
13
+ /data/
14
+ /reports/
15
+ NOTES.md
16
+
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,44 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2016-10-28 16:34:29 +0300 using RuboCop version 0.44.1.
4
+
5
+ # The point is for the user to remove these configuration records
6
+ # one by one as the offenses are removed from the code base.
7
+ # Note that changes in the inspected code, or installation of new
8
+ # versions of RuboCop, may require this file to be generated again.
9
+
10
+ Metrics/AbcSize:
11
+ Max: 16
12
+ Exclude:
13
+ - 'lib/ossert/fetch/github.rb'
14
+
15
+ Metrics/BlockLength:
16
+ Exclude:
17
+ - 'ossert.gemspec'
18
+ - 'lib/ossert/tasks/ossert.rake'
19
+ - 'lib/ossert/tasks/database.rake'
20
+ - 'spec/ossert_spec.rb'
21
+ - 'spec/spec_helper.rb'
22
+
23
+ Metrics/ClassLength:
24
+ Exclude:
25
+ - 'lib/ossert/fetch/github.rb'
26
+
27
+ Metrics/CyclomaticComplexity:
28
+ Exclude:
29
+ - 'lib/ossert/fetch/github.rb'
30
+
31
+ Metrics/MethodLength:
32
+ Exclude:
33
+ - 'lib/ossert/fetch/github.rb'
34
+
35
+ Metrics/PerceivedComplexity:
36
+ Max: 16
37
+ Exclude:
38
+ - 'lib/ossert/fetch/github.rb'
39
+
40
+ Metrics/LineLength:
41
+ Max: 120
42
+
43
+ Style/Documentation:
44
+ Enabled: false
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ ossert
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.3.1
data/.travis.yml ADDED
@@ -0,0 +1,16 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.2
4
+ before_install: gem install bundler -v 1.11.2
5
+ cache: bundler
6
+ addons:
7
+ postgresql: "9.4"
8
+ env:
9
+ global:
10
+ - GITHUB_TOKEN="6a21f190e3422bf89afa8b360d923b0c30e8fbfa"
11
+ - TEST_DATABASE_URL='postgres://localhost/ossert_test'
12
+ - REDIS_URL='redis://localhost'
13
+ before_script:
14
+ - bundle exec rake db:test:prepare
15
+ script:
16
+ - bundle exec rspec
data/Gemfile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+ source 'https://rubygems.org'
3
+
4
+ gem 'decisiontree', github: 'sclinede/decisiontree'
5
+ gem 'sawyer', github: 'sclinede/sawyer'
6
+
7
+ # Specify your gem's dependencies in ossert.gemspec
8
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Sergey Dolganov
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,199 @@
1
+ Code quality? Checked by [RuboCop](https://github.com/bbatsov/rubocop/) (crowdsourced code quality metrics)
2
+ What about library support?
3
+ Introducing **Ossert**! Crowdsourced project support and availablity metrics.
4
+
5
+ # ossert (OSS cERTificate) [![Build Status](https://travis-ci.org/ossert/ossert.svg?branch=master)](https://travis-ci.org/ossert/ossert) [![Inline docs](http://inch-ci.org/github/ossert/ossert.svg)](http://inch-ci.org/github/ossert/ossert) [![Code Climate](https://codeclimate.com/github/ossert/ossert/badges/gpa.svg)](https://codeclimate.com/github/ossert/ossert)
6
+
7
+ The main goal of project is to provide "certificate" for open-source software with different validity check, just to be more
8
+ formal in estimation of projects' risks, value and ability to use in an enterprise.
9
+ Also system is designed as open one, so any new checks and validations from community are appreciated.
10
+
11
+ The simple structure is:
12
+ - "Project" has set of raw attributes gathered from different data sources and metrics built upon them.
13
+ - "Fetch" classes gathers data from sources like Rubygems, Bestgems, GitHub.
14
+ - "Reference" class chooses reference projects from different popularity groups (from most to the least popular).
15
+ - "Classifiers::Growing::Classifier" class prepares classification by sections (Maintenance, Popularity, Maturity) using reference projects.
16
+ Each classifier section performs calculation upon its own metrics and weights.
17
+ - "Classifiers::Growing::Check" running checks against classifier and prepares marks for particular project.
18
+
19
+ Project tries to answer simple question: "Is this gem ready for production? Will it be available and consistent in a year?"
20
+ Ossert marks projects with grades A, B, C, D, E. Highest grade means you possibly can trust that open-source project because it is
21
+ used widely and supported in efficient way. Less grades means higher risks for production.
22
+
23
+ Also you can check several alternatives against same checks to select most stable and mature from them.
24
+
25
+ Long term milestone is to provide not only marks and metrics but also give a context of classification (trends, metadata, discussions, docs, users and so on).
26
+ This tool should help you dive into any open-source library on any level of detalization, from overall marks to a particular change in time.
27
+
28
+ ## Metrics
29
+
30
+ I choose to start with following basic validity checks
31
+
32
+ ### Project Community Metrics
33
+
34
+ #### Stats, total for all time
35
+ - Users count writing issues
36
+ - Users count sent PR
37
+ - Contributors count
38
+ - Watchers, Stargazers, Forks
39
+ - Owners... (link Rubygems and Github by email)
40
+
41
+ #### Pulse, for last year/quarter/month (amount + delta from total)
42
+ - Users count writing issues
43
+ - Users count sent PR
44
+ - Contributors count
45
+ - Watchers, Stargazers, Forks
46
+
47
+ ### Project Agility Metrics
48
+
49
+ #### Stats, total for all time
50
+ - Opened and Closed Issues
51
+ - Opened, Merged and Closed PRs
52
+ - Opened non-author Issues, "with author comments" and total count
53
+ - Time since first/last PR and Issue
54
+ - Releases Count
55
+ - Last Release Date
56
+ - Commits count since last release
57
+ - Amount of changes each quarter
58
+ - Stale and Total branches count
59
+
60
+ #### Pulse, for last year/quarter/month (amount + delta from total)
61
+ - Opened and Closed Issues
62
+ - Opened and Merged PRs
63
+ - Releases Count
64
+ - Downloads divergence
65
+ - Downloads degradation per release (Comes later)
66
+ - Stale Branches Count
67
+
68
+ ## Existining alternatives
69
+
70
+ ### RecordNotFound.com
71
+ Interesting overview by commits and pull requests activity, not very detailed
72
+
73
+ ### Github Archive (https://www.githubarchive.org/#bigquery)
74
+
75
+ ### RubyToolbox has:
76
+ - Popularity Rating (https://www.ruby-toolbox.com/projects/delayed_job/popularity)
77
+ - Links, from gemspec
78
+ - Website
79
+ - RDoc
80
+ - Wiki
81
+ - Source Code
82
+ - Bug Tracker
83
+ - from Rubygems
84
+ - Total Downloads + increased for month
85
+ - Total Releases Count
86
+ - Current Version
87
+ - When Released
88
+ - First Release Date
89
+ - Depends on following gems
90
+ - Depending Gems (reverse dependencies)
91
+ - Popular gems depending on this... (list)
92
+ - from Github
93
+ - Watchers
94
+ - Forks
95
+ - Development activity (N commits within last year)
96
+ - Last commit date
97
+ - First commit date
98
+ - Top contributors
99
+ - Contributors Count
100
+ - Issues Count
101
+ - Wiki pages link
102
+
103
+ ### Rubygems has:
104
+ - Total Downloads
105
+ - Total Releases Count
106
+ - current version and when it was released
107
+ - first release date
108
+ - Dependencies
109
+ - Depending Gems (reverse dependencies)
110
+
111
+ ### Github has:
112
+ - Opened and Closed PRs
113
+ - Opened and Closed Issues
114
+ - Labels list
115
+ - Milestones list
116
+ - Watchers Count & Links
117
+ - Stargazers Count & Links
118
+ - Forks Count & Links
119
+ - Commits Count
120
+ - Branches Count
121
+ - Releases Count
122
+ - Contributors Count
123
+ - Latest commit date
124
+
125
+ #### Pulse, for month/week/3 days/24 hours period
126
+ "Excluding merges, 29 authors have pushed 76 commits to master and 87 commits to all branches.
127
+ On master, 128 files have changed and there have been 5,342 additions and 5,554 deletions."
128
+ - Active PRs Count and List (sent, merged)
129
+ - Active Issues Count and List (new, closed)
130
+ - Unresolved conversations
131
+ "Sometimes conversations happen on old items that aren’t yet closed.
132
+ Here is a list of all the Issues and Pull Requests with unresolved conversations."
133
+
134
+ #### Graphs, all time or selected period
135
+ - Top contributors (by commits/additoins/deletions)
136
+ - Commits timeline
137
+ - Code frequency (Additions/Deletions amount on timeline)
138
+ - Punch card (Days and Hours of most activity)
139
+
140
+ ## Installation
141
+
142
+ Add this line to your application's Gemfile:
143
+
144
+ ```ruby
145
+ gem 'ossert'
146
+ ```
147
+
148
+ And then execute:
149
+
150
+ $ bundle
151
+
152
+ Or install it yourself as:
153
+
154
+ $ gem install ossert
155
+
156
+ After that you should set ENV variables:
157
+
158
+ ```
159
+ $ export GITHUB_TOKEN xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
160
+ $ export REDIS_URL redis://localhost/
161
+ $ export DATABASE_URL postrgres://localhost/ossert
162
+ $ export TEST_DATABASE_URL postrgres://localhost/ossert_test
163
+ ```
164
+
165
+ Then you can run:
166
+
167
+ ```
168
+ bundle exec rake db:setup
169
+ ```
170
+
171
+ Or if you have previous dumps of data:
172
+
173
+ ```
174
+ bundle exec rake db:restore:last
175
+ ```
176
+
177
+
178
+ ## Usage
179
+
180
+ For interactive experiments run:
181
+
182
+ ```
183
+ bin/console
184
+ ```
185
+
186
+ ## Development
187
+
188
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
189
+
190
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
191
+
192
+ ## Contributing
193
+
194
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ossert/ossert.
195
+
196
+ ## License
197
+
198
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
199
+
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+ require 'sequel'
5
+
6
+ require 'bundler'
7
+ Bundler.require
8
+
9
+ RSpec::Core::RakeTask.new(:spec)
10
+ Dir.glob('lib/ossert/tasks/*.rake').each { |r| import r }
11
+
12
+ task default: :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'ossert'
6
+
7
+ Ossert.init
8
+
9
+ # You can add fixtures and/or initialization code here to make experimenting
10
+ # with your gem easier. You can also use a different console, if you like.
11
+
12
+ # (If you use this, don't forget to add pry to your Gemfile!)
13
+ require 'pry'
14
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,153 @@
1
+ classifiers:
2
+ growth:
3
+ trusted_probability: 0.65
4
+ checks:
5
+ - popularity
6
+ - maintenance
7
+ - maturity
8
+ syntetics:
9
+ download_divergence: 5
10
+ stale_branches_count: 15
11
+ pr_actual_count: 100
12
+ pr_active_percent: 90
13
+ pr_closed_percent: 90
14
+ issues_actual_count: 200
15
+ issues_active_percent: 90
16
+ issues_closed_percent: 90
17
+ dependants_count:
18
+ - 500
19
+ - 100
20
+ - 20
21
+ - 5
22
+ - 1
23
+ first_issue_date_int:
24
+ - 1161160504 # Best
25
+ - 1476783369 # Worst
26
+ first_pr_date_int:
27
+ - 1161160504 # Best
28
+ - 1476783369 # Worst
29
+ last_release_date_int:
30
+ - 1476783369 # Best
31
+ - 1161160504 # Worst
32
+ issues_processed_in_median:
33
+ - 7
34
+ - 120
35
+ pr_processed_in_median:
36
+ - 1
37
+ - 90
38
+ issues_processed_in_avg:
39
+ - 7
40
+ - 120
41
+ pr_processed_in_avg:
42
+ - 1
43
+ - 90
44
+ reversed:
45
+ - stale_branches_count
46
+ - issues_active_percent
47
+ - pr_active_percent
48
+ - issues_actual_count
49
+ - pr_actual_count
50
+ - issues_processed_in_avg
51
+ - pr_processed_in_avg
52
+ - issues_processed_in_median
53
+ - pr_processed_in_median
54
+ - first_issue_date_int
55
+ - first_pr_date_int
56
+ metrics:
57
+ popularity:
58
+ last_year:
59
+ users_creating_issues_count: 3
60
+ users_commenting_issues_count: 3
61
+ users_creating_pr_count: 3
62
+ users_commenting_pr_count: 3
63
+ stargazers_count: 3
64
+ forks_count: 3
65
+ users_involved_count: 3
66
+ users_involved_no_stars_count: 3
67
+ total_downloads_count: 3
68
+ total:
69
+ dependants_count: 4
70
+ users_creating_issues_count: 1
71
+ users_commenting_issues_count: 1
72
+ users_creating_pr_count: 1
73
+ users_commenting_pr_count: 1
74
+ contributors_count: 1
75
+ watchers_count: 1
76
+ forks_count: 1
77
+ users_involved_no_stars_count: 1
78
+ total_downloads_count: 1
79
+ maintenance:
80
+ last_year:
81
+ issues_processed_in_avg: 1
82
+ issues_processed_in_median: 1
83
+ issues_closed_percent: 2
84
+ issues_all_count: 2
85
+ pr_processed_in_avg: 1
86
+ pr_processed_in_median: 1
87
+ pr_closed_percent: 2
88
+ pr_all_count: 2
89
+ releases_count: 4
90
+ commits: 4
91
+ total:
92
+ issues_closed_percent: 0.5
93
+ issues_non_owner_percent: 0.5
94
+ issues_with_contrib_comments_percent: 0.5
95
+ issues_all_count: 0.5
96
+ issues_processed_in_avg: 0.25
97
+ issues_processed_in_median: 0.25
98
+ pr_closed_percent: 0.5
99
+ pr_non_owner_percent: 0.5
100
+ pr_with_contrib_comments_percent: 0.5
101
+ pr_all_count: 0.5
102
+ pr_processed_in_avg: 0.25
103
+ pr_processed_in_median: 0.25
104
+ releases_count: 1
105
+ stale_branches_count: 1
106
+ life_period: 1
107
+ last_changed: 1
108
+ maturity:
109
+ last_year:
110
+ users_creating_issues_count: 2
111
+ users_commenting_issues_count: 2
112
+ users_creating_pr_count: 2
113
+ users_commenting_pr_count: 2
114
+ stargazers_count: 2
115
+ forks_count: 2
116
+ users_involved_count: 2
117
+ users_involved_no_stars_count: 2
118
+ total_downloads_count: 2
119
+ issues_processed_in_avg: 1
120
+ issues_processed_in_median: 1
121
+ issues_closed_percent: 1
122
+ issues_all_count: 1
123
+ pr_processed_in_avg: 0.5
124
+ pr_processed_in_median: 0.5
125
+ pr_closed_percent: 1
126
+ pr_all_count: 1
127
+ releases_count: 2
128
+ commits: 2
129
+ total:
130
+ dependants_count: 3
131
+ users_creating_issues_count: 1
132
+ users_commenting_issues_count: 1
133
+ users_creating_pr_count: 1
134
+ users_commenting_pr_count: 1
135
+ watchers_count: 1
136
+ forks_count: 1
137
+ users_involved_no_stars_count: 1
138
+ total_downloads_count: 1
139
+ issues_closed_percent: 0.5
140
+ issues_non_owner_percent: 0.5
141
+ issues_with_contrib_comments_percent: 0.5
142
+ issues_all_count: 0.5
143
+ issues_processed_in_avg: 0.5
144
+ pr_closed_percent: 0.5
145
+ pr_non_owner_percent: 0.5
146
+ pr_with_contrib_comments_percent: 0.5
147
+ pr_all_count: 0.5
148
+ pr_processed_in_avg: 0.5
149
+ commits: 1
150
+ releases_count: 1
151
+ stale_branches_count: 1
152
+ life_period: 1
153
+ last_changed: 1
@@ -0,0 +1,45 @@
1
+ descriptions:
2
+ # Agility
3
+ dependencies_count: Total number of external dependecies used in runtime
4
+ issues_closed_percent: Percent of closed issues from the total number
5
+ issues_non_owner_percent: Percent of issues created by non-owners of the repo from the total number
6
+ issues_with_contrib_comments_percent: Percent of issues with contributor comments from the total number
7
+ issues_all_count: Total number of issues with any status
8
+ issues_processed_in_avg: Average time to close issue up to day
9
+ issues_processed_in_median: Median time to close issue up to day
10
+ first_issue_date_int: Date when first issue was created
11
+ last_issue_date_int: Date when last issue was created
12
+ pr_closed_percent: Percent of closed pull requests from the total number
13
+ pr_non_owner_percent: Percent of pull requests created by non-owners of the repo from the total number
14
+ pr_with_contrib_comments_percent: Percent of pull requests with contributor comments from the total number
15
+ pr_all_count: Total number of pull requests with any status
16
+ pr_processed_in_avg: Average time to close pull request up to day
17
+ pr_processed_in_median: Median time to close pull request up to day
18
+ first_pr_date_int: Date when first pull requests was created
19
+ last_pr_date_int: Date when last pull requests was created
20
+ pr_actual_count: Number of pull requests that were still open on the start of the period
21
+ last_release_date_int: Date of latest release of the project
22
+ releases_count: Total number of releases for period
23
+ commits_count_since_last_release_count: How many commits where made since the last project release
24
+ stale_branches_count: Number of stale branches, where stale means that the branch was not updated for whole quarter
25
+ life_period: Time period since the moment of first action till the last one
26
+ last_changed: Date of last change of the project
27
+ issues_actual_count: Number of issues that were open on the start of the period
28
+ commits: How many commits where made during the period
29
+
30
+ # Community
31
+ dependants_count: Total number of projects that depends on current
32
+ users_creating_issues_count: Number of unique users that created issues
33
+ users_commenting_issues_count: Number of unique users that commented any issue
34
+ users_creating_pr_count: Number of unique users that requested a pull
35
+ users_commenting_pr_count: Number of unique users commented any pull request
36
+ watchers_count: Number of unique watchers on Github
37
+ contributors_count: Number of unique contributors
38
+ stargazers_count: Number of unique users that starred the project
39
+ forks_count: Number of unique users that forked the project
40
+ users_involved_count: Number of unique users made any action for the project like leaving comment or requesting a pull
41
+ users_involved_no_stars_count:
42
+ Number of unique users that made any action for project excluding users that only give a Star on Github
43
+ total_downloads_count: Total number of downloads since first day of the project
44
+ delta_downloads: Number of downloads that were made during period
45
+ download_divergence: Downloads Growth From Previous Period %
data/config/sidekiq.rb ADDED
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ require 'ossert'
3
+
4
+ SIDEKIQ_REDIS_CONFIGURATION = {
5
+ url: ENV.fetch('REDIS_URL'),
6
+ namespace: 'ossert_sidekiq'
7
+ }.freeze
8
+
9
+ Sidekiq.configure_server do |config|
10
+ config.redis = SIDEKIQ_REDIS_CONFIGURATION
11
+ end
12
+
13
+ Sidekiq.configure_client do |config|
14
+ config.redis = SIDEKIQ_REDIS_CONFIGURATION
15
+ end