Note: These guidelines take heavy inspiration from RxSwiftCommunity and Moya. Thank you for raising the bar on how Open Source collaboration should be!
First of all, let me thank you for taking the time to read this! These days, it's very difficult to find time to do anything. So if you are reading this, it's probably because you are interested in contributing to the amazing community around ReactiveCocoa. If you are not, you are welcomed anyway!
RACComunity serves as an umbrella organization for projects that use ReactiveCocoa. These projects, can have different goals:
- Demonstrate how to use ReactiveCocoa (e.g. RACNest).
- Wrap another library or framework (e.g ReactiveAlamofire).
- Create a component powered by ReactiveCocoa (e.g. Reactor, Rex)
These projects will benefit from the expertise of the ReactiveCocoa core members:
- When a new ReactiveCocoa version is released, the projects will be updated as soon as possible.
- When an issue is open, we will try to help as much as we can.
- Bug fixes! Most often than not, these can be ilusive for people not used to ReactiveCocoa particularities.
- Make sure they respect ReactiveCocoa design guidelines.
Having a striving community around is not only important, but critical for its survival. Above all, RACommunity aims to be a fun place, where your work and dedication is meaningful!
The best answer for this would be Samuel Giddins's "An OSS education".
Our guidelines are simple and quite straightforward!
- If you have an idea for a new project, independently of you wanting to do it yourself, or just wanting it built, open an issue.
- If we all think your idea makes sense, we will create a new repository so you can work on it. When you land your first meaningful PR, we will give you membership. Creating a PR for the first time can be daunting! Fear not, If there is any problem, we will discuss it and find a solution.
- Your work should always be peer reviewed (via a PR). Pushing directly to master, it's not something you should do.
- If you are not sure how to progress, or what want to discuss any issue in "real time", you can always use our Slack! Ping @ReactiveCocoa if you need an invite.
- Any contribution is a good contribution. From a bug fix, documentation or a typo, please make yourself at home! We all know tho, that sometimes, we just want to build new stuff, but we are unsure how. For those cases, we will label tasks as
good first step
(this idea was taken from Moya). - There also the cases when you already have a project and would like to see it under the RACCommunity org. For those cases, start by opening an issue. Once we all have agreed it makes sense, the project ownership is transfered and you will receive a membership invitation.
- ... you can review a PR from any project and merge it (as long as it's not your own). If there is something wrong with the PR and it got merged, it will just be reverted. Don't worry!
- ... contribute and move forward the projects!
- ... if you have an idea for a new project, open an issue, so it can be discussed by everyone.
- ... have fun!
- Use Github's Swift code styling. If it's not specified in the guide, check ReactiveCocoa source code and follow the same approach.
- Code should be unit tested.
- If the project is a dependency, it should be CocoaPods and Carthage compatible.
We follow the Contributor Covenant version 1.4.0.
Talk with us on Slack (Ping @ReactiveCocoa if you need an invite) or open an issue!