The lobsters
codebase is under a 3-clause BSD
license. All code
submitted must be licensed under these or more-permissive terms (2-clause BSD,
MIT, ISC, etc.).
Thanks for considering spending your time contributing to the codebase. Drop by the chat room if you'd like a hand getting started.
If you're new to Rails, the official guides are good and there's a complete API doc.
If you're new to contributing, issues tagged good first issue require little knowledge of the codebase or community. Ask your questions in the issue or in our chat room, we'd love to help you get involved.
You can jump right in to issues tagged good first issue
, you don't have to ask permission.
Please don't post a comment to "claim" an issue.
If an issue then doesn't get finished it stalls out for years because nobody wants to be rude and "steal" it.
While this project's license allows for modification and use to run your own website, this source code repository is specifically for the code running the website at lobste.rs.
We're very deliberate about new features and behavior changes because they have difficult-to-forsee social effects or maintenance costs. If you have ideas, please come discuss them on /t/meta, in the chat room, or as a Github issue to avoid wasted effort.
-
Fork lobsters/lobsters on Github.
-
Run through the setup steps in
README.md
-
Create a branch to work on: `git checkout -b ...'
-
Write your commit messages in present tense ("fix foo", not "fixed foo"). Mention a GitHub issue number if there is one. Don't sweat messages too much, I am weirdly picky about commit messages so expect that I'll rewrite the message that merges/squashes the PR.
-
Our testing goal is to get good information and reasonable reliability with pretty low maintenance and runtime costs. We try to have a smoke test for the happy path of user-facing features and then test at least a few paths through more complicated functions. Not all changes require tests, but most bug fixes benefit from it.
-
You can "run the build" (see
.github/workflows/check.yml
) locally withbundle exec rspec && bundle exec standardrb --fix-unsafely && brakeman -q
.- [rspec](https://rspec.info/documentation` is the test suite. It's a big DSL so it has a pretty steep learning curve. It's easiest to get started by duplicating existing tests.
- standardrb is the linter/formatter. There's very nice editor integration available.
- brakeman is the security linter.
You can run
brakeman -I
to interactively add a note if a new warning is a false positives. Brakeman is conservatively configured to "fail" when a new version of brakeman is released. If that happens when you're working on a PR, you can ping me and I'll update it.
-
Push your changes to your fork of the repository:
git push origin
-
Open a pull request to lobsters/lobsters. You're welcome to open a PR for a work in progress if you want to share progress or ask for help. It's a big help if you explicitly write in a comment when you think the code is done!