Skip to content

Commit a01ded2

Browse files
committed
Merge branch 'develop' of https://github.com/stdlib-js/stdlib into develop
2 parents 2c98da1 + d777dbf commit a01ded2

File tree

3 files changed

+100
-66
lines changed

3 files changed

+100
-66
lines changed

CONTRIBUTING.md

Lines changed: 70 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,79 @@
33
> Project contribution guidelines.
44
55

6-
When contributing to this project,
6+
## Introduction
77

8-
* Read and understand the [Code of Conduct][code-of-conduct].
9-
* Read and understand the [licensing terms][license].
10-
* Read and understand the [style guides][style-guides].
8+
Woot woot! If you are new to stdlib, welcome! And thanks for your interest! While this guide focuses on technical development, if you are looking to contribute to the project but are non-technical, you can still contribute! For example, you can contribute by filing issues, writing RFCs (feature requests), updating documentation, providing build and infrastructure support, offering [funding][patreon], and helping market and promote the project, among other things. Every bit helps, and we are grateful for your time and effort!
119

1210

11+
## Contributing
1312

14-
<!-- <links> -->
13+
Before contributing, be sure to
1514

16-
[code-of-conduct]: https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md
17-
[license]: https://github.com/stdlib-js/stdlib/blob/develop/LICENSE
18-
[style-guides]: https://github.com/stdlib-js/stdlib/blob/develop/docs/style-guides
15+
* read and understand the [Code of Conduct][stdlib-code-of-conduct].
16+
* read and understand the [licensing terms][stdlib-license].
17+
* read and understand the [style guides][stdlib-style-guides].
1918

20-
<!-- </links> -->
19+
For instructions on how to setup and configure your environment, be sure to
20+
21+
* read the [development guide][stdlib-development].
22+
23+
If you want to contribute a new package to stdlib, be sure to
24+
25+
* read the [package development guide][stdlib-docs].
26+
27+
Next, take a look around the project, noting the style and organization of documentation, tests, examples, benchmarks, and source implementations. Consistency is highly __prioritized__ within stdlib. Thus, the more you are able to match and adhere to project conventions and style, the more likely your contribution will be accepted. While we have done our best to automate linting and style guidelines, such automation is not perfect and cannot adequately capture the inevitable exceptions and nuance to many rules. In short, the more you study existing practice, the better prepared you will be to contribute to stdlib.
28+
29+
For modifications intended to be included in stdlib, create a new local branch.
30+
31+
``` bash
32+
$ git checkout -b <branch>
33+
```
34+
35+
where `<branch>` is the branch name. Both the `master` and `develop` branches for the main stdlib project are protected, and direct modifications to these branches will __not__ be accepted. Instead, all contributions should be made on non-master and non-develop local branches, including documentation changes and other non-code modifications.
36+
37+
During development, to incorporate recent changes from the upstream repository, you should [rebase][git-rebase] your local branch, reapplying your local commits on top of the current upstream `HEAD`. This procedure is in contrast to performing a standard [merge][git-merge], which may interleave development histories. The rationale is twofold:
38+
39+
1. interleaved histories make [squashing][git-rewriting-history] commits more difficult
40+
2. a standard merge increases the risk of incomplete/broken commits appearing in the git history.
41+
42+
An ideal commit history is one in which, at no point in time, is the project in a broken state. While not always possible (mistakes happen), striving for this ideal facilitates time travel and software archeology.
43+
44+
Before opening a [pull request][github-pull-request] on the upstream repository, run project tests to ensure that the changes introduced have not left the repository in a broken state.
45+
46+
``` bash
47+
$ make test
48+
$ make examples
49+
$ make benchmark
50+
```
51+
52+
Note that each of the above tasks can take considerable time (>30 minutes per task).
53+
54+
Once your contribution is ready to be incorporated in the upstream repository, open a [pull request][github-pull-request] against the `develop` branch. A project contributor will review the contribution, provide feedback, and potentially request changes. After any changes have been resolved and continuous integration tests have passed, a contributor will approve a [pull request][github-pull-request] for inclusion in the project.
55+
56+
Note that, once a [pull request][github-pull-request] has been made (i.e., your local repository commits have been pushed to a remote server), you should __not__ perform any further [rewriting][git-rewriting-history] of git history. If the history needs modification, a contributor will modify the history during the merge process. The rationale for __not__ rewriting public history is that doing so invalidates the commit history for anyone else who has pulled your changes, thus imposing additional burdens on collaborators to ensure that their local versions match the modified history.
57+
58+
Once merged, __congratulations__! You are an official contributor to stdlib!
59+
60+
Phew. While the above may be a lot to remember, even for what seem like minor changes, eventually it becomes routine and part of the normal development flow. Part of the motivation for enforcing process is to ensure that all code contributions meet a certain quality threshold, thus helping reviewers focus less on non-substantive issues like style and failing tests and more on substantive issues such as contribution content and merit. Know that your patience, hard work, time, and effort are greatly appreciated!
61+
62+
63+
<section class="links">
64+
65+
[stdlib-code-of-conduct]: https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md
66+
[stdlib-license]: https://github.com/stdlib-js/stdlib/blob/develop/LICENSE
67+
[stdlib-style-guides]: https://github.com/stdlib-js/stdlib/blob/develop/docs/style-guides
68+
[stdlib-development]: https://github.com/stdlib-js/stdlib/blob/develop/docs/development.md
69+
[stdlib-docs]: https://github.com/stdlib-js/stdlib/blob/develop/docs
70+
71+
[patreon]: https://www.patreon.com/athan
72+
73+
[github-pull-request]: https://help.github.com/articles/creating-a-pull-request/
74+
75+
[git-rebase]: https://git-scm.com/docs/git-rebase
76+
[git-merge]: https://git-scm.com/docs/git-merge
77+
[git-rewriting-history]: https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
78+
79+
</section>
80+
81+
<!-- /.links -->

README.md

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,23 @@
1010

1111
> A standard library for JavaScript and Node.js.
1212
13-
Stdlib is a collection of robust, high performance libraries for numeric computing, streams, and more. This is the GitHub repository of stdlib source code and documentation.
13+
Stdlib is a standard library for JavaScript and Node.js, with an emphasis on numeric computing. The library provides a collection of robust, high performance libraries for mathematics, statistics, streams, utilities, and more. This is the GitHub repository of stdlib source code and documentation.
1414

15-
If you are interested in developing stdlib, see the [development guide][stdlib-development].
15+
For help developing stdlib, see the [development guide][stdlib-development].
16+
17+
18+
## Resources
19+
20+
* [__Homepage__][stdlib-homepage]
21+
* [__Documentation__][stdlib-documentation]
22+
* [__Source code__][stdlib-source]
23+
* [__Code coverage__][stdlib-code-coverage]
24+
25+
26+
### External Resources
27+
28+
* [__Twitter__][stdlib-twitter]
29+
* [__Gitter__][stdlib-gitter]
1630

1731

1832
## Prerequisites
@@ -22,7 +36,7 @@ Running stdlib __requires__ the following prerequisites:
2236
* [Node.js][node-js]: JavaScript runtime (version `>= 0.10`)
2337
* [npm][npm]: package manager (version `> 2.7.0`; if Node `< 1.0.0`, version `> 2.7.0` and `< 4.0.0`)
2438

25-
Most functionality in stdlib is implemented __exclusively__ in JavaScript; however, some implementations try to capture performance benefits by using native bindings. While __not__ required to run stdlib, as __every__ stdlib implementation has a JavaScript fallback, the following dependencies are __required__ for building native add-ons, including linking to BLAS and LAPACK libraries:
39+
Most functionality in stdlib is implemented exclusively in JavaScript; however, some implementations try to capture performance benefits by using native bindings. While __not__ required to run stdlib, as __every__ stdlib implementation has a JavaScript fallback, the following dependencies are __required__ for building native add-ons, including linking to BLAS and LAPACK libraries:
2640

2741
* [GNU make][gnu-make]: development utility and task runner
2842
* [gcc &amp; g++][gcc] or [Clang][clang]: C/C++ compilation and linking (g++ version `>= 4.8`; clang version `>= 3.5`, Xcode version `>=4.4` on OS X)
@@ -39,7 +53,7 @@ The following vendor libraries can be automatically downloaded and compiled from
3953

4054
## Installation
4155

42-
To install stdlib as a library or application dependency,
56+
To install as a library or application dependency,
4357

4458
``` bash
4559
$ npm install @stdlib/stdlib
@@ -165,6 +179,15 @@ Copyright &copy; 2016-2017. The Stdlib [Authors][stdlib-authors].
165179
[stdlib-authors]: https://github.com/stdlib-js/stdlib/graphs/contributors
166180
[stdlib-license]: https://raw.githubusercontent.com/stdlib-js/stdlib/develop/LICENSE
167181

182+
[stdlib-homepage]: https://github.com/stdlib-js/stdlib
183+
[stdlib-documentation]: https://github.com/stdlib-js/stdlib
184+
[stdlib-source]: https://github.com/stdlib-js/stdlib
185+
186+
[stdlib-code-coverage]: https://codecov.io/github/stdlib-js/stdlib/branch/develop
187+
188+
[stdlib-twitter]: https://twitter.com/stdlibjs
189+
[stdlib-gitter]: https://gitter.im/stdlib-js/stdlib
190+
168191
</section>
169192

170193
<!-- /.links -->

docs/development.md

Lines changed: 3 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@
55

66
## Introduction
77

8-
Amazing! We are super excited that you have decided to develop, and even contribute to, stdlib, and we welcome you to the stdlib developer community. We have done our best to provide a complete environment for testing, benchmarking, documenting, and developing project code. And if you have any ideas as to how we can make it better, let us know!
9-
10-
While this guide focuses on technical development, if you are looking to contribute to the project but are non-technical, you can still contribute! For example, you can contribute by filing issues, writing RFCs (feature requests), updating documentation, providing build and infrastructure support, offering [funding][patreon], and helping market and promote the project, among other things. Every bit helps, and we are grateful for your time and effort!
8+
Amazing! We are super excited that you have decided to develop stdlib, and we welcome you to the stdlib developer community. We have done our best to provide a complete environment for testing, benchmarking, documenting, and developing project code. And if you have any ideas as to how we can make it better, let us know!
119

1210
Before we begin, developing stdlib requires some setup and configuration. What follows is an overview of environment requirements and a sequence of steps for getting up and running with stdlib. We use [Git][git] for version control, and for most tasks, we use [GNU make][gnu-make] (the original task runner) to help us get things done quickly and effectively. For the most part, the project is able to internally manage dependencies for testing, benchmarking, and linting, so, once you follow the steps below, you should be ready to start developing!
1311

@@ -245,69 +243,21 @@ and examples
245243
$ make EXAMPLES_FILTER=.*/<pattern>/.* examples
246244
```
247245

248-
249246
## Contributing
250247

251-
Before contributing, be sure to
252-
253-
* read and understand the [Code of Conduct][stdlib-code-of-conduct].
254-
* read and understand the [licensing terms][stdlib-license].
255-
* read and understand the [style guides][stdlib-style-guides].
256-
257-
If you want to contribute a new package to stdlib, be sure to
258-
259-
* read the [package development guide][stdlib-docs].
260-
261-
Next, take a look around the project, noting the style and organization of documentation, tests, examples, benchmarks, and source implementations. Consistency is highly __prioritized__ within stdlib. Thus, the more you are able to match and adhere to project conventions and style, the more likely your contribution will be accepted. While we have done our best to automate linting and style guidelines, such automation is not perfect and cannot adequately capture the inevitable exceptions and nuance to many rules. In short, the more you study existing practice, the better prepared you will be to contribute to stdlib.
262-
263-
For modifications intended to be included in stdlib, create a new local branch.
264-
265-
``` bash
266-
$ git checkout -b <branch>
267-
```
268-
269-
where `<branch>` is the branch name. Both the `master` and `develop` branches for the main stdlib project are protected, and direct modifications to these branches will __not__ be accepted. Instead, all contributions should be made on non-master and non-develop local branches, including documentation changes and other non-code modifications.
270-
271-
During development, to incorporate recent changes from the upstream repository, you should [rebase][git-rebase] your local branch, reapplying your local commits on top of the current upstream `HEAD`. This procedure is in contrast to performing a standard [merge][git-merge], which may interleave development histories. The rationale is twofold: 1) interleaved histories make [squashing][git-rewriting-history] commits more difficult and 2) a standard merge increases the risk of incomplete/broken commits appearing in the git history. An ideal commit history is one in which, at no point in time, is the project in a broken state. While not always possible (mistakes happen), striving for this ideal facilitates time travel and software archeology.
272-
273-
Before opening a [pull request][github-pull-request] on the upstream repository, run project tests to ensure that the changes introduced have not left the repository in a broken state.
274-
275-
``` bash
276-
$ make test
277-
$ make examples
278-
$ make benchmark
279-
```
280-
281-
Note that each of the above tasks can take considerable time (>30 minutes per task).
282-
283-
Once your contribution is ready to be incorporated in the upstream repository, open a [pull request][github-pull-request] against the `develop` branch. A project contributor will review the contribution, provide feedback, and potentially request changes. After any changes have been resolved and continuous integration tests have passed, a contributor will approve a [pull request][github-pull-request] for inclusion in the project.
284-
285-
Note that, once a [pull request][github-pull-request] has been made (i.e., your local repository commits have been pushed to a remote server), you should __not__ perform any further [rewriting][git-rewriting-history] of git history. If the history needs modification, a contributor will modify the history during the merge process. The rationale for __not__ rewriting public history is that doing so invalidates the commit history for anyone else who has pulled your changes, thus imposing additional burdens on collaborators to ensure that their local versions match the modified history.
286-
287-
Once merged, __congratulations__! You are an official contributor to stdlib!
288-
289-
Phew. While the above may be a lot to remember, even for what seem like minor changes, eventually it becomes routine and part of the normal development flow. Part of the motivation for enforcing process is to ensure that all code contributions meet a certain quality threshold, thus helping reviewers focus less on non-substantive issues like style and failing tests and more on substantive issues such as contribution content and merit. Know that your patience, hard work, time, and effort are greatly appreciated!
248+
For contribution guidelines, see the [contributing guide][stdlib-contributing].
290249

291250

292251
<section class="links">
293252

294-
[patreon]: https://www.patreon.com/athan
253+
[stdlib-contributing]: https://github.com/stdlib-js/stdlib/blob/develop/CONTRIBUTING.md
295254

296255
[github-fork]: https://help.github.com/articles/fork-a-repo/
297256
[github-fork-sync]: https://help.github.com/articles/syncing-a-fork/
298257
[github-remote]: https://help.github.com/articles/configuring-a-remote-for-a-fork/
299-
[github-pull-request]: https://help.github.com/articles/creating-a-pull-request/
300258

301259
[git-clone-depth]: https://git-scm.com/docs/git-clone#git-clone---depthltdepthgt
302260
[git-remotes]: https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes
303-
[git-rebase]: https://git-scm.com/docs/git-rebase
304-
[git-merge]: https://git-scm.com/docs/git-merge
305-
[git-rewriting-history]: https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History
306-
307-
[stdlib-code-of-conduct]: https://github.com/stdlib-js/stdlib/blob/develop/CODE_OF_CONDUCT.md
308-
[stdlib-license]: https://github.com/stdlib-js/stdlib/blob/develop/LICENSE
309-
[stdlib-style-guides]: https://github.com/stdlib-js/stdlib/blob/develop/docs/style-guides
310-
[stdlib-docs]: https://github.com/stdlib-js/stdlib/blob/develop/docs
311261

312262
[git]: http://git-scm.com/
313263
[gnu-make]: https://www.gnu.org/software/make

0 commit comments

Comments
 (0)