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

.github templates #505

Open
wants to merge 10 commits into
base: master
Choose a base branch
from
Open

Conversation

tuxcanfly
Copy link
Member

@tuxcanfly tuxcanfly commented Jun 25, 2018

Initial draft.

Feedback, ideas for potential new sections, reviews appreciated.

@tuxcanfly tuxcanfly force-pushed the issue-pr-templates branch 4 times, most recently from 2d9d95e to 6787bfc Compare June 25, 2018 08:26
@tuxcanfly tuxcanfly requested review from nodech and bucko13 June 25, 2018 08:27
@tuxcanfly tuxcanfly self-assigned this Jun 25, 2018
@tuxcanfly tuxcanfly added the WIP label Jun 25, 2018
@tuxcanfly tuxcanfly added docs UI isn't clear or documented guidance needed and removed WIP labels Jul 16, 2018
@codecov-io
Copy link

codecov-io commented Jul 16, 2018

Codecov Report

Merging #505 into master will not change coverage.
The diff coverage is n/a.

Impacted file tree graph

@@           Coverage Diff           @@
##           master     #505   +/-   ##
=======================================
  Coverage   53.35%   53.35%           
=======================================
  Files         104      104           
  Lines       27687    27687           
  Branches     4740     4740           
=======================================
  Hits        14772    14772           
  Misses      12915    12915

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update bd7a094...4df9d3b. Read the comment docs.

@tuxcanfly tuxcanfly force-pushed the issue-pr-templates branch 4 times, most recently from 684e6c4 to d79572b Compare July 23, 2018 16:18
.github/CONTRIBUTING.md Outdated Show resolved Hide resolved
.github/CONTRIBUTING.md Outdated Show resolved Hide resolved
.github/CONTRIBUTING.md Outdated Show resolved Hide resolved
.github/CONTRIBUTING.md Show resolved Hide resolved
.github/CONTRIBUTING.md Show resolved Hide resolved
PULL_REQUEST_TEMPLATE.md Outdated Show resolved Hide resolved
.github/ISSUE_TEMPLATE.md Outdated Show resolved Hide resolved
@pinheadmz
Copy link
Member

The unconfirmed balance confusion is probably never going to end :-)
Maybe the issue template should have a link to a common FAQ or something where these kinds of recurring issues are already addressed?

@bucko13
Copy link
Contributor

bucko13 commented Jul 30, 2018

+1 to an FAQ. I think this would be great. We could also link to where the issues have been raised so people can look up the thread.

@tuxcanfly
Copy link
Member Author

https://github.com/bcoin-org/bcoin/pull/505/files#diff-8cc7b2b0d78dd2501610391c086a8516R286

Added a section for FAQs.

@pinheadmz
Copy link
Member

Another element that would be nice to have in the FAQ or issue template:

If getting responses in bcoin different from bitcoind and are expecting otherwise, please copy and paste both results

h/t @bucko13

@pinheadmz
Copy link
Member

BUMP!
Still getting new GH issues without any basic info (node version, bcoin version, bcoin launch method, etc) Would love to get this in n

@pinheadmz
Copy link
Member

Can PR template go in .github/ also?

https://github.blog/2016-02-17-issue-and-pull-request-templates/

.github/CONTRIBUTING.md Outdated Show resolved Hide resolved
.github/CONTRIBUTING.md Outdated Show resolved Hide resolved
@pinheadmz
Copy link
Member

@tuxcanfly are there two PR templates in this PR now? one at / and one at /.github?

@tuxcanfly
Copy link
Member Author

@pinheadmz OK, fixed.

@pinheadmz
Copy link
Member

pinheadmz commented Mar 21, 2019

At the bottom of CONTRIBUTING.md:

TODO: Responsible Disclosure

To address this, I think we should consider including PGP keys (or keybase links) for the core team.
JJ's key is already committed to in the beginner's guide, but I think we should consider including a complete document with everyone's keys and email addresses.

In addition, @zebambam and @DarrenRM have completed a draft of a responsible disclosure document at https://github.com/RD-Crypto-Spec/Responsible-Disclosure/blob/d47a5a3dafa5942c8849a93441745fdd186731e6/README.md
and have also drafted a template which repositories like ours can pre-commit to the parties we will disclose to (which in our case is basically just bcash and hsd, both internal teams anyway).

bcoin dev keys are in a PR to the disclosure repo: bcoin-org/Responsible-Disclosure#1

@zebambam
Copy link

Here's a template for a page on responsible disclosure: https://gist.github.com/zebambam/bfe9f265187eeb0651cd74f263ea7409 the neighbor mentions could be links to their rd page if they have one.

Copy link
Contributor

@boymanjor boymanjor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First off, this document is fantastic! Thank you so much for taking the initiative to get this into the repository. It is sorely needed here and in the hsd codebase.

Secondly, please do not be alarmed by the size of this review. Most of the comments are copy edit changes involving minor grammatical errors and favoring the "active voice" over the "passive voice." Any comment filled with a block quote is just meant to be an editor's replacement. The significant changes I've suggested involve shortening the bullet points in lists. I should note that these are just suggestions and I'm open to giving clarification where it is necessary.

P.S. I've neglected to include this in the comments, but I think we should use backticks when referring to bcoin in this document. It is the "nit" of all "nits" but I think it helps ease the eyes into seeing a lowercase letter starting a sentence. It also helps signify the word is referring to software.


### 1. Overview

Developing cryptocurrencies is an exciting endeavor that touches a wide variety
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Developing cryptocurrencies is an exciting endeavor that touches a wide variety of areas such as wire protocols, peer-to-peer networking, databases, cryptography, language interpretation (transaction scripts), RPC interfaces, and WebSockets. They also represent a radical shift to the current financial system and as a result, provide an opportunity to help reshape the financial system as a whole. Few projects offer this level of diversity and impact in a single codebase.

However, as exciting as it is, one must keep in mind that cryptocurrencies represent real money and introducing bugs and security vulnerabilities can have far more dire consequences than in typical projects where having a small bug is minimal by comparison. In the world of cryptocurrencies, even the most trivial bug in the wrong area can cost people a significant amount of money. For this reason, bcoin has a formalized and rigorous development process which this page outlines.

We highly encourage code contributions. However, it is imperative that you adhere to the guidelines established on this page.


### 2. Minimum Recommended Skillset

The following list is a set of core competencies that we recommend you possess
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The following list is a set of core competencies that we recommend you possess before you start attempting to contribute code to the project. These are not hard requirements, and we will gladly accept code contributions as long as they follow the guidelines set forth on this page. That said, if you don't have the following qualifications, you may find it quite difficult to contribute.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like how that sounds inclusive

the following basic qualifications you will likely find it quite difficult to
contribute.

- A reasonable understanding of bitcoin at a high level (see the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: should this be Bitcoin with a capital B? I seem to remember a suggestion of making a distinction between "Bitcoin" the protocol, and "bitcoin" the currency, e.g., "I sent 0.5 bitcoin to Alice." vs. "I learned about Bitcoin last night." I can't remember where I came across this, but it seems to be used this way in a lot of places.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: a good practice with lists is to start each bullet point with a similar type of word, e.g., all nouns, or all verbs. I think following this rule here would help the flow of the bullet points, e.g.:

  • Understanding of Bitcoin at a high level (see required reading)
  • Understanding of the bcoin codebase
  • Understanding of data structures, algorithms, and run-time costs
  • Experience in Node.js and ES6+ syntax (e.g., classes, async/await, etc.)
  • Experience with unit testing
  • Experience with debugging

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: should this be Bitcoin with a capital B? I seem to remember a suggestion of making a distinction between "Bitcoin" the protocol, and "bitcoin" the currency

Pretty they make that distinction in Mastering Bitcoin

- An understanding of data structures and their performance implications
- Familiarity with unit testing
- Debugging experience
- Ability to understand not only the area you are making a change in, but also
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This bullet point is a bit hard to digest. Perhaps we could say something like, "Familiarity with the codebase." and use the next paragraph to explain understanding how your specific change may affect other areas of the codebase. I imagine this new bullet point going before "Familiarity with unit testing."

While the standards to merge code is high, there are many opportunities to
contribute outside of consensus critical or implementing highly performant
code. A good place to get started would be adding more examples to the docs
and reading through the tests to understand how the code works in practice.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: s/to the docs and/to the docs or/


### 5.3 Acceptance

Once your code is accepted, it will be integrated with the master branch.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Once your code is accepted, a maintainer will merge it with the master branch. Typically it will be rebased and fast-forward merged to master as we prefer to keep a clean commit history over a tangled weave of merge commits. However, regardless of the specific merge method used, the code will be integrated with the master branch and the pull request will be closed.

Rejoice! You are now a bcoin contributor!


<a name="Balances" />

### 6.1. Balances
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a current list of FAQs that we can add in this section? If not, maybe we should start a google document to fill this up? I'm also not opposed to merge as-is and continue to submit PRs to beef up the list.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think @pinheadmz would be a good person to ask about this


### 6.2. Confirmations

bcoin wallet transactions are considered confirmed after 1 block. If your
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The bcoin wallet marks transactions confirmed after inclusion in one block. If your application needs to wait for more confirmations, you can wait for the corresponding number of blocks to be mined.

### 7.1. Contribution Checklist

- All changes are node >= 8.0.0 compliant
- [&nbsp;&nbsp;] The code being submitted is commented according to the
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • All changes are node >= 8.0.0 compliant
  • [  ] All code is documented according to the
    Code Documentation and Commenting section
  • [  ] New code includes thorough tests
  • [  ] Bug fixes include regression tests
  • [  ] Log statements include correct module and levels
  • [  ] npm run lint passes
  • [  ] npm run test passes

[btcd](https://github.com/btcsuite/btcd/), distributed under the [ISC
LICENSE](https://github.com/btcsuite/btcd/blob/master/LICENSE).

TODO: Responsible Disclosure
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should make the RD document a separate file. What do you think?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree with this, take it out for now so we can merge :-)

@pinheadmz
Copy link
Member

github actually shows this warning on the PR page:

"you are using an old version of github templates..."

See:

https://help.github.com/en/articles/about-issue-and-pull-request-templates

@pinheadmz
Copy link
Member

One more note: I think CONTRIBUTING should be linked in the main README, in big letters near the top!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
docs UI isn't clear or documented guidance needed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants