Where is the LTTng community?
For help and developer discussions, see the LTTng mailing list.
You can send mails to the list without being registered, but non-member posts are moderated.
We're available on IRC, on the
OFTC network, in the
#lttng
channel.
Use: irc://irc.oftc.net/lttng
.
You can report bugs regarding any LTTng component by creating a new issue in the project's bug tracker.
Jenkins is used to test builds as code changes occur and ensure code quality. The current project statuses are available on the online interface.
Helping LTTng's community
LTTng is an open source project welcoming contributions by volunteers from around the world.
Most people believe that contributing to an open source project involves writing code, but there are actually multiple other ways to help out. Here are a few ways your help would be greatly appreciated by the LTTng community:
One of the easiest ways to get involved is to participate in the various discussions of the mailing list or on IRC and help people use LTTng.
Testing new releases and reporting bugs on the bug tracker is also a great way to contribute. Refer to the Bug reporting guidelines below before reporting a bug.
Improving the project's documentation is always welcome. Refer to its contributor's guide before creating pull requests.
You can also submit code improvements and bug fixes if you are a developer. Refer to the Contributor's guide below for code contributions.
Help us help you!
Reporting bugs is an excellent way to contribute to the LTTng project. Should you be interested in reporting a bug, please make sure that it's complete by reading the following guidelines carefully.
The most important thing for developers is to understand how to reproduce the bug. If a developer can successfully reproduce a bug and knows what is the expected software behavior, he's given all the necessary tools to fix the issue.
You must post bug reports on the LTTng bug tracker.
You must provide the following items for the bug to be reproducible:
--version
option) or Git
commit hash for custom builds.
uname -a
)
and distribution.
Make sure you provide a short description which explains the nature of the bug: what is the expected behavior and what are you actually observing?
Avoid using negations in your description. Explain what should happen, not what shouldn't happen. Explain what is happening, not what's not happening.
Bad examples:
The event should not be disabled after tracing is stopped.
The command is not returning 0 after a successful execution.
Good examples:
The consumer daemon's execution should terminate after this operation.
Only 4 out of 5 events are recorded.
When you describe the actual results, add as much context as possible. Useful context includes:
Copy the relevant logs to the bug's description.
LTTNG_UST_DEBUG
environment variable to 1 before running your
application.
-vvv
and --verbose-consumer
arguments.
If the bug involves
a segmentation fault in LTTng-tools, you should compile
the project manually with the -g
GCC option and without optimizations (-O0
).
You can run the configure
script as such:
CFLAGS="-g -O0" ./configure
Then, the following items are required:
thread apply all bt full
).
It's often useful to have the list of LTTng-related processes running on the system:
ps -wwaux | grep '[l]ttng'
If the bug involves LTTng-modules (Linux kernel tracing), include the list of loaded LTTng-related kernel modules:
lsmod | grep lttng
This is the most important section. Its goal is to show the developers how to reproduce the bug, step by step.
You may write prerequisites to reduce the number of steps here, for example:
Prerequisite: a tracing session exists with two kernel domain channels named
kern1
andkern2
.
In this last example, the steps to create a tracing session and enable two kernel domain channels are summarized by a simple prerequisite.
Once you've laid out the steps to reproduce the bug, a good practice is to follow them and see if the bug is actually reproduced. This help ensure you didn't forget an important step.
Useful guidelines for contributing
The LTTng project is open source and welcomes contributions from anyone. This guide will walk you through the process of contributing a patch to LTTng.
We use Git to control the versions of the LTTng project. How to use Git is beyond the scope of this guide, but its official website provides many great tutorials. Please refer to the Download section for the official LTTng Git repositories.
We use the
Linux
kernel coding style with one addition for
LTTng-tools only: single-line
if
/for
/while
control statements must be wrapped in braces.
/* not good */
if (this == that)
goto fail;
/* good */
if (this == that) {
goto fail;
}
Although the LTTng code base is primarily written in C, it does contain shell, Perl, Python, and Java code. There is no official coding standard for these languages. However, we encourage you to use a style consistent with the rest of the code written in that language.
To prepare your changes for submission, commit them to your local branch while following the guidelines below.
The commit's subject (first line) should:
Fix:
if
the commit fixes a bug.
The commit message's body should be as detailed as possible and
explain the reasons behind the proposed change. You must mention
any related bug report at the end of the message with the
#123
format, where
123
is the bug number:
Refs: #123
if the patch is related to bug 123, but does not
fix it yet.
Fixes: #123
to indicate that this patch fixes the bug.
Make sure to sign-off your submitted
patches (the -s
argument to Git's commit
and format-patch
commands).
A patch must be as focused as possible. Do not, for instance, fix a bug and correct the indentation of an unrelated block of code as part of the same patch.
Here's a complete example:
Fix: use this instead of that in some context
Ball tip jowl beef ribs shankle, leberkas venison turducken tail pork
chop t-bone meatball tri-tip. Tongue beef ribs corned beef ball tip
kevin ground round sausage rump meatloaf pig meatball prosciutto
landjaeger strip steak. Pork pork belly beef.
Biltong turkey porchetta filet mignon corned beef. T-bone bresaola
shoulder meatloaf tongue kielbasa.
Fixes: #321
Refs: #456
Refs: #4972
Signed-off-by: Janine Sutto <jsutto@janine.su>
LTTng's development flow is primarily based on
Gerrit Code Review,
although we also accept email-based patch series on the
lttng-dev
mailing list,
and pull requests on our
GitHub mirrors.
The lttng-dev
mailing list
is also used to share and comment on
RFCs and answer
questions.
Sign-in to LTTng Review (Gerrit instance) using your GitHub account and add an SSH public key.
Install the git-review plugin. The plugin is available through the package manager of several Linux distributions including: Ubuntu, Debian, Fedora, openSUSE, and Alpine.
In the checked-out repository, initialize the git-review state
by running git review -s
.
Submit the changes by running git review
.
Consult the git-review documentation for more details about how the commands work, and the Gerrit user documentation to learn more about Gerrit.
When your submission is ready for review, you may add
the user project-maint
as a reviewer.
project
is the name of the project you are
submitting a change to.
For example:
lttng-tools-maint
lttng-modules-maint
lttng-ust-maint
lttng-dev
using emailCreate one or more patch files corresponding to your Git commits.
You can use Git's
format‑patch
command to generate a patch file.
For example, the following command line generates a patch from the latest commit:
$
git format-patch -N1 -s --subject-prefix="PATCH project"
Replace project
with one of:
lttng-tools
lttng-ust
lttng-modules
babeltrace
(the Babeltrace
project uses the LTTng mailing list)
If your patch is for the LTTng-tools
project, run the checkpatch.pl
script on your patch file and correct any reported
errors:
$
extras/checkpatch.pl --no-tree 0001-Fix...patch
Send your patch to the LTTng development mailing list.
You can use Git's
send‑email
command to do so:
$
git send-email --suppress-cc=self --to=lttng-dev@lists.lttng.org *.patch
Make sure you are subscribed to the mailing list to follow and take part in discussions about your changes.
You can also join the file to an email as an
attachment if you can't send the patch directly
using git send‑email
.
If you do not have one, create a GitHub account.
Fork the project repository.
Push your locally submitted changes to a new branch in your fork of the project repository.
Once you have posted your patch to LTTng Review, the mailing list, or to another accepted platform, other contributors may propose modifications to your patch. This is completely normal. This collaborative code review is an integral part of the open source development process in general, and LTTng makes no exception.
Keep in mind that reviewing patches is a time-consuming
process. Reviewers may not post comments right away. The
current release cycle phase and the complexity of the
proposed changes can affect the delays. If you think
that we might have forgotten your patch, please mention
it on the
#lttng
IRC
channel rather than resubmitting.
The LTTng project follows a release cycle that alternates between development and release candidate (RC) phases. The master branch is feature-frozen during RC phases; only bug fixes are accepted during this period. However, patches which add new functionality during an RC phase may still be reviewed on Gerrit or the mailing list.
The LTTng project supports two stable released versions at a time. For example, both LTTng stable-2.13 and LTTng stable-2.12.
The latest supported releases can be downloaded here.
Commercial support is available and provided by EfficiOS.
Current release stable-2.13 |
Previous release stable-2.12 |
|
---|---|---|
Security fixes | Yes | Yes |
Other fixes | Yes, unless it breaks ABI/API | Maybe, depending on ABI/API compatibility and effort |
New kernel version enablement | Yes | No |
New features | No | No |
Fixes are backported from the master branch to the last stable version unless those fixes would break the ABI or API. Those fixes may be backported to the second-last stable version, depending on complexity and ABI/API compatibility.
Security fixes are backported from the master branch to both of the last stable version and the the second-last stable version.
New kernel version enablement commits are integrated into the master branch and backported to the last stable version.
New features are added to the master branch. Prior to becoming a stable release, the master branch goes through a period in which is it feature-frozen as RCs (release candidates) are tested and only bug fixes get added.