|
1 | 1 | ## Guide for New Contributors
|
2 | 2 |
|
3 |
| -Hello, and welcome to the Rust-ML group! We're glad you may be interested in contributing to our efforts. First, please take the time to review our main README document, particularly around the "What do we do" section. |
4 |
| - |
5 |
| -In general, the Rust-ML group emphasizes the Bazaar, not the Cathedral. In the [Zulip chat](https://rust-ml.zulipchat.com/), we regularly see people who say "Hi, I'm new here and would love to help contribute!" under the assumption that there may be a comprehensive Grand Plan that they can be directed towards. While well-intentioned, this approach is a little difficult to respond to because, while some individual projects do have roadmaps, the working group is not a Group with a Plan, but instead a collection of individuals working on things they're personally interested in. |
6 |
| - |
7 |
| -We recommend you start by looking through the chat history in Zulip (particularly in the [#Code Review](https://rust-ml.zulipchat.com/#narrow/stream/237158-Code-Review) stream, which will have discussion of some of the more active projects) to see if there's something pre-existing that you might be interested in contributing to. Members of the Rust-ML team also help to maintain the site [arewelearningyet.com](https://www.arewelearningyet.com/), which has a more comprehensive list of crates and other projects in the Rust ecosystem. Alternatively, if you *don't* find something like that, write your own and share it with us! |
| 3 | +Hello, and welcome to the Rust-ML group! We're glad you may be interested in |
| 4 | +contributing to our efforts. First, please take the time to review our main [README](./README.md) |
| 5 | +document, particularly around the "What do we do" section. |
| 6 | + |
| 7 | +In general, the Rust-ML group emphasizes the [Bazaar, not the Cathedral](https://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar). In the |
| 8 | +[Zulip chat](https://rust-ml.zulipchat.com/), we regularly see people who say "Hi, I'm new here and would love to |
| 9 | +help contribute!" under the assumption that there may be a comprehensive Grand \ |
| 10 | +Plan that they can be directed towards. While well-intentioned, this approach is |
| 11 | +a little difficult to respond to because, although some individual projects do |
| 12 | +have roadmaps, the working group is not a Group with a Plan, but instead a collection |
| 13 | +of individuals working on things they're personally interested in. |
| 14 | + |
| 15 | +We recommend you start by looking through the chat history in Zulip (particularly |
| 16 | +in the [#Code Review](https://rust-ml.zulipchat.com/#narrow/stream/237158-Code-Review) stream, which will have discussion of some of the more active |
| 17 | +projects) to see if there's something pre-existing that you might be interested in |
| 18 | +contributing to. Members of the Rust-ML team also help to maintain the site |
| 19 | +[arewelearningyet.com](https://www.arewelearningyet.com/), which has a more comprehensive list of crates and other |
| 20 | +projects in the Rust ecosystem. Alternatively, if you *don't* find something like that, |
| 21 | +write your own and share it with us! |
8 | 22 |
|
9 | 23 | ### Low Hanging Fruit
|
10 | 24 |
|
11 |
| -One of the few projects that the Rust-ML group has direct ownership of and maintains is the [linfa](https://github.com/rust-ml/linfa/) classical machine learning meta-crate. It serves as a collection of multiple smaller algorithms in various domains. Although the implementations of the algorithms themselves usually exist and have some degree of testing, the crate as a whole can use some additional work in the areas of cross-language testing and benchmarking. [Luca Palmieri](https://github.com/LukeMathWalker), the original author of the linfa crate, did some great work on demonstrating the potential speed-ups of using Rust code for a k-means clustering algorithm by writing Rust->Python bindings and [comparing](https://www.lpalmieri.com/posts/2019-12-01-taking-ml-to-production-with-rust-a-25x-speedup/) the results against scikit-learn's implementation. |
12 |
| - |
13 |
| -Creating a similar repository for each of linfa's sub-crates, or creating regression benchmarks for the sub-crates would be a great first contribution. Similarly, the documentation in terms of overall workflow for using Rust in a machine learning problem from scratch is somewhat limited. A Book [repository](https://github.com/rust-ml/book) has been created to help create a guide for newcomers, but is currently missing some content. Building a project using any of the crates in the ecosystem to solve a problem and clearly documenting that process would also be helpful to the community! |
| 25 | +One of the few projects that the Rust-ML group has direct ownership of and maintains |
| 26 | +is the [linfa](https://github.com/rust-ml/linfa/) classical machine learning meta-crate. It serves as a collection of multiple |
| 27 | +smaller algorithms in various domains. Although the implementations of the algorithms |
| 28 | +themselves usually exist and have some degree of testing, the crate as a whole can |
| 29 | +use some additional work in the areas of cross-language testing and benchmarking. |
| 30 | +[Luca Palmieri](https://github.com/LukeMathWalker), the original author of the linfa crate, did some great work on demonstrating |
| 31 | +the potential speed-ups of using Rust code for a k-means clustering algorithm by writing |
| 32 | +Rust->Python bindings and [comparing](https://www.lpalmieri.com/posts/2019-12-01-taking-ml-to-production-with-rust-a-25x-speedup/) the results against scikit-learn's implementation. |
| 33 | + |
| 34 | +Creating a similar repository for each of linfa's sub-crates, or creating regression |
| 35 | +benchmarks for the sub-crates would be a great first contribution. Similarly, the |
| 36 | +documentation in terms of overall workflow for using Rust in a machine learning |
| 37 | +problem from scratch is somewhat limited. A Book [repository](https://github.com/rust-ml/book) has been created |
| 38 | +to help create a guide for newcomers, but is currently missing some content. |
| 39 | +Building a project using any of the crates in the ecosystem to solve a problem and |
| 40 | + clearly documenting that process would also be helpful to the community! |
14 | 41 |
|
15 | 42 | ### A closing reminder
|
16 | 43 |
|
17 |
| -Although some of the people who write code will lay out some sort of a larger roadmap or fill a leadership role to a degree, project management is rarely a full-time concern, especially for projects with a relatively low number of contributors. Therefore, it's usually best to approach things from a "code first, communicate after." That is, feel free to say hi, but unless you have demonstrated some degree of serious intent in the form of a pull request or well-written bug report, existing contributors may not be able to dedicate their limited time towards interacting with you. |
| 44 | +Although some of the people who write code will lay out some sort of a larger |
| 45 | +roadmap or fill a leadership role to a degree, project management is rarely a |
| 46 | +full-time concern, especially for projects with a relatively low number of contributors. |
| 47 | +Therefore, it's usually best to approach things from a "code first, communicate after." |
| 48 | +As in all open source projects you will get a faster response for a well-written bug |
| 49 | +report or pull request. Also sometimes people are busy with their life and can't |
| 50 | +spend time on their side projects. Please respect that we're all human and have |
| 51 | +limited time. |
18 | 52 |
|
19 | 53 | ### Updated
|
20 | 54 |
|
21 |
| -Updated on 20201014 |
| 55 | +Updated on 20201024 |
0 commit comments