Thank you for your interest in contributing. Please read this first — how changes reach this repository is different from most projects, including from most of Meta's other open-source repositories.
This repository is generated from a directory inside Meta's internal monorepo, which is the source of truth. Changes flow one way, from there to here; nothing here is merged back automatically.
Several exported files have internal-only lines removed on the way out. A patch written against the exported form of one of those files does not apply cleanly to the internal original. So the automated GitHub-to-internal import that some Meta repositories offer does not work for this repository and is not used, whether or not the button is visible. We would rather tell you that up front than have you find out after opening a pull request.
Where a line was removed on the way out, a comment consisting only of a marker —
an at-sign followed by oss-disable — is left behind. They look like dead
comments; they are not. Each one marks the position of a line that exists only
in the internal tree.
There is a second marker, an at-sign followed by oss-enable, and it is the
opposite: it trails a line that is live here and commented out internally.
Those lines are working code. packsim/README.md describes both.
Do not delete either, and do not tidy them up. A change that removes an
oss-disable marker is a change we cannot apply internally without also
publishing the internal-only line it was holding back. A change that removes an
oss-enable marker cannot be applied either: the marker is what keeps its line
live here while the internal build keeps it commented out. If a marker is
genuinely in the way of what you want to do, say so in an issue and we will deal
with it on our side.
You are welcome to open one, and it is the clearest way to show us exactly what you mean. Be aware of what happens next: we read it, and if we take the change, a Meta engineer applies it internally, where it goes through the same review as any other change. It reaches GitHub on the following export rather than by being merged here, and the commit that lands is authored by that engineer — we credit you in its message.
Before opening one:
- Fork the repo and create your branch from
main. - If you've added code that should be tested, add tests in the
oss_tests/directory beside the code they cover. - If you've changed APIs, update the surrounding comments and any
DESIGN.mdthat describes them. - Build and run the tests as described under Building in
packsim/README.md: the getdepstestcommand, orctest --test-dir _buildafter a plain CMake build. - If you've changed
packsim/README.mdorpacksim/transport/DESIGN.md, preview the documentation site they are also published as: inwebsite/, runyarn install --frozen-lockfileand thenyarn start. That needs Node.js 22 or newer and Yarn 1 (npm install --global yarn). - If you haven't already, complete the Contributor License Agreement ("CLA").
For anything larger than a bug fix, please open an issue first. It is cheaper for both of us to agree on the approach before you write it, given the round-trip above.
In order to accept your pull request, we need you to submit a CLA. You only need to do this once to work on any of Meta's open source projects.
Complete your CLA here: https://code.facebook.com/cla
We use GitHub issues to track public bugs, and to discuss anything larger than a bug fix before it is written. For a bug, please ensure your description is clear and has sufficient instructions to be able to reproduce the issue.
Meta has a bounty program for the safe disclosure of security bugs. In those cases, please go through the process outlined on that page and do not file a public issue.
This project has adopted a Code of Conduct that we expect participants to adhere to. Please read CODE_OF_CONDUCT.md so that you can understand what actions will and will not be tolerated.
By contributing to this project, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree.