Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add gem version and SemVer compatibility badges to README #473

Merged
merged 2 commits into from
Jul 17, 2018
Merged

Add gem version and SemVer compatibility badges to README #473

merged 2 commits into from
Jul 17, 2018

Conversation

greysteil
Copy link
Contributor

@greysteil greysteil commented Jun 16, 2018

Goal

Make it easier for new users to add bugsnag to their Gemfile.

Design

Badges that show the version and how SemVer compatible this gem is (very) give users all the information they need to pick the right gem requirement.

This PR adds a version number and SemVer compatibility badge. Data comes from Dependabot (disclosure: I built it).

Here's what the badges look like:

Gem Version SemVer

Tests

Discussion

Alternative Approaches

Outstanding Questions

Linked issues

Review

For the submitter, initial self-review:

  • Commented on code changes inline explain the reasoning behind the approach
  • Reviewed the test cases added for completeness and possible points for discussion
  • A changelog entry was added for the goal of this pull request
  • Check the scope of the changeset - is everything in the diff required for the pull request?
  • This pull request is ready for:
    • Initial review of the intended approach, not yet feature complete
    • Structural review of the classes, functions, and properties modified
    • Final review

For the pull request reviewer(s), this changeset has been reviewed for:

  • Consistency across platforms for structures or concepts added or modified
  • Consistency between the changeset and the goal stated above
  • Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
  • Usage friction - is the proposed change in usage cumbersome or complicated?
  • Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
  • Concurrency concerns - if components are accessed asynchronously, what issues will arise
  • Thoroughness of added tests and any missing edge cases
  • Idiomatic use of the language

@snmaynard
Copy link
Contributor

So dependabot upgrades other people's packages automatically and then if their CI fails it decreases our semver score? Even if the failure has nothing to do with us (just flakey tests or whatever)?

@greysteil
Copy link
Contributor Author

Yep - the idea here is to test SemVer by checking whether updates to bugsnag cause test failures for your users. The "score" is just the percentage of CI runs that pass when updating between SemVer compatible versions, but it still gives a pretty clear indicator that bugsnag updates won't require code changes for your users if/when the upgrade it.

There are some difficulties with flaky tests that I haven't 100% ironed out yet (I should be able to filter out flaky test suites based on all the other updates Dependabot is doing for that repo) but in practice it seems flaky tests only affect the score very slightly. Of the 163 updates Dependabot has done of bugsnag only 3 have ever "caused" test failures.

@snmaynard
Copy link
Contributor

Yeah - I just don't think that a 98% score is particularly clear to people who don't know what it is and how it works. I think that we'll likely get confused users if we merge this. Maybe you could give a grading system instead, but as it is I dont think it's clearer than us saying we use semver versioning.

@snmaynard snmaynard closed this Jun 20, 2018
@greysteil
Copy link
Contributor Author

greysteil commented Jun 20, 2018

👍, although sorry to hear that. I've renamed the badge to be "semver stability" to make it clearer what it does, and I'm going to try to filter out the flaky specs later today / tomorrow.

Keep up the great work with Bugsnag - great product! ❤️

@snmaynard
Copy link
Contributor

You could do something like 95%+ is given an excellent rating?

@greysteil
Copy link
Contributor Author

The feedback I've had from others is that they like the percentage (generally because it's honest about release processes not being perfect, or because they think it's easily understandable if you click through). It's colour-coded based on the % so there's some "this is good" conditioning in there.

I'll definitely take your feedback on board, though - if others tell me the same I'll look at making it less granular.

@snmaynard
Copy link
Contributor

Yeah fair - do you have examples of other projects that use it?

@greysteil
Copy link
Contributor Author

greysteil commented Jun 20, 2018

I only created it a few days, but jest, sentry, capybara, oj, skylight and rubocop (in prep for going 1.0.0 in the next few weeks) are all using it. Think there's a couple of others, too.

Edit: now also fog, rack, sinatra and mocha.

@snmaynard
Copy link
Contributor

I'll reopen it and see what @kattrali thinks when she is back from pto next week - thanks for all the context!

@snmaynard snmaynard reopened this Jun 20, 2018
@greysteil
Copy link
Contributor Author

greysteil commented Jun 28, 2018

@kattrali - any thoughts? The folks at Webpack suggested a version that only displayed updates to the latest version, so there's this option now, too:

SemVer

@kattrali
Copy link
Contributor

This is pretty cool! The context discussion helps too, so thanks @greysteil, @snmaynard.

@fractalwrench fractalwrench merged commit f832296 into bugsnag:master Jul 17, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants