Lettuce is released under the MIT license. If you would like to contribute something, or simply want to hack on the code this document should help you get started.
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to lettuce-redis-client-users@googlegroups.com.
We use GitHub issues to track bugs and enhancements. If you have a general usage question please ask on Stack Overflow.
The Lettuce team and the broader community monitor the lettuce
tag.
If you are reporting a bug, please help to speed up problem diagnosis by providing as much information as possible. Ideally, that would include a small sample project that reproduces the problem.
For the impatient, if you want to submit a quick pull request:
- Don't create a pull request upfront. Create a feature request ticket first, so we can discuss your idea. API changes require discussion, use cases, etc. Code comes later.
- Pull request needs to be approved and merged by maintainers into the master branch.
- Upon agreeing the feature is a good fit for Lettuce, please:
- Make sure there is a ticket in GitHub issues.
- Make sure you use the code formatters provided here and have them applied to your changes. Don’t submit any formatting related changes.
- Make sure you submit test cases (unit or integration tests) that back your changes.
- Try to reuse existing test sample code (domain classes). Try not to amend existing test cases but create new ones dedicated to the changes you’re making to the codebase. Try to test as locally as possible but potentially also add integration tests.
When submitting code, please make every effort to follow existing conventions and style in order to keep the code as readable as possible. Formatting changes create a lot of noise and reduce the likelyhood of merging the pull request. Formatting settings are provided for Eclipse in https://github.com/lettuce-io/lettuce-core/blob/main/formatting.xml
If you report a bug, please ensure to specify the following:
- Use a concise subject.
- Check GitHub issues whether someone else already filed a ticket. If not, then feel free to create another one.
- Comments on closed tickets are typically a bad idea as there's little attention on closed tickets. Please create a new one.
- Lettuce version (e.g. 3.2.Final).
- Contextual information (what were you trying to do using Lettuce).
- Simplest possible steps to reproduce:
- Ideally, a Minimal, Complete, and Verifiable example.
- JUnit tests to reproduce are great but not obligatory.
If you want to request a feature, please ensure to specify the following:
- What do you want to achieve?
- Contextual information (what were you trying to do using Lettuce).
- Ideally, but not required: Describe your idea how you would implement it.
If you have a question, then check one of the following places first as GitHub issues are for bugs and feature requests. Typically, forums, chats, and GitHub discissions are the best place to ask your question as you can expect to get an answer faster there:
Checkout the docs
Communication
- GitHub Discussions (Q&A, Ideas, General discussion)
- Stack Overflow (Questions): https://stackoverflow.com/questions/tagged/lettuce
- Discord:
- Twitter:
- GitHub Issues (Bug reports, feature requests)
Lettuce source can be built from the command line using Maven on JDK 1.8 or above.
The project can be built from the root directory using the standard Maven command:
$ mvn clean test
You can run a full build including integration tests using the make
command:
$ make test
- New public API must be annotated with
@since
and the version it was introduced with (e.g.@since 6.0
,@since 5.3.2
) - Add yourself to each file you touch as
@author
- Split feature/bugfix commits from polishing commits (see PR #1400 and its polishing commit)
- Commit messages follow the convention of a summary along with the ticket number and optionally a description in the body:
<text> #<ticketnumber>
We now correctly …
Examples:
- Does it build? Is there a test case and does the design follow how Lettuce is built?
- Minor formatting issues can be sorted out during the merge, for larger formatting issues (e.g. PR contains at least one reformatted file) we need to ask the contributor to fix it.
- Squash multiple commits into a single one, except if the commits are well structured (e.g. commit introducing a feature/fixing a bug plus a commit that polishes up code)
- Edit original commit message if necessary to reflect the ticket number. Add
Original pull request: #<PR>
to all commits belonging to the PR to keep changes together.