blob: 4ae8b4bb9af5397fbae00c3549d9ab347751e1a4 [file] [log] [blame]
---
layout: page
title: Apache Karaf - Community
permalink: /community
---
<main role="main">
<div class="container mb-5 pt-5">
<h2 class="pb-3 mb-2"><i class="fas fa-comments"></i> Community</h2>
<div class="row mb-2">
<div class="col">
<div class="card flex-md-row mb-4 box-shadow h-md-250">
<div class="card-body d-flex flex-column align-items-start">
<strong class="d-inline-block mb-2 text-primary">Mailing list</strong>
<h4 class="mb-0">
<a>Users List</a>
</h4>
<p class="card-text">[ <a href="mailto:user-subscribe@karaf.apache.org">subscribe</a> | <a href="http://mail-archives.apache.org/mod_mbox/karaf-user/">archives</a> ]</p>
<h4 class="mb-0">
<a class="text-dark">Developers List</a>
</h4>
<p class="card-text"> [ <a href="mailto:dev-subscribe@karaf.apache.org">subscribe</a> | <a href="http://mail-archives.apache.org/mod_mbox/karaf-dev/">archives</a> ]</p>
<h4 class="mb-0">
<a class="text-dark">Commits List</a>
</h4>
<p class="card-text"> [ <a href="mailto:commits-subscribe@karaf.apache.org">subscribe</a> | <a href="http://mail-archives.apache.org/mod_mbox/karaf-commits/" target="_blank">archives</a> ]</p>
<h4 class="mb-0">
<a class="text-dark">Issues List</a>
</h4>
<p class="card-text"> [ <a href="mailto:issues-subscribe@karaf.apache.org">subscribe</a> | <a href="http://mail-archives.apache.org/mod_mbox/karaf-issues/" target="_blank">archives</a> ]</p>
</div>
</div>
</div>
<div class="col">
<div class="card flex-md-row mb-4 box-shadow h-md-250">
<div class="card-body d-flex flex-column align-items-start">
<strong class="d-inline-block mb-2 text-primary">Bug Tracker, IRC, and CI</strong>
<h4 class="mb-0">
<a class="text-dark">Jira</a>
</h4>
<p class="card-text"> [ <a href="https://issues.apache.org/jira/browse/KARAF" target="_blank">visit</a> ]</p>
<h4 class="mb-0">
<a class="text-dark">Jenkins</a>
</h4>
<p class="card-text"> [ <a href="https://builds.apache.org/view/H-L/view/Karaf/" target="_blank">visit</a> ]</p>
<h4 class="mb-0">
<a class="text-dark">#apache-karaf on Freenode</a>
</h4>
<p class="card-text"> [ <a href="irc://irc.freenode.net/apache-karaf" target="_blank">visit</a> ]</p>
<h4 class="mb-0">
<a class="text-dark">#karaf on the-asf.slack.com</a>
</h4>
<p class="card-text"> [ <a href="https://the-asf.slack.com" target="_blank">visit</a> ]</p>
</div>
</div>
</div>
</div>
</div>
<main role="main">
<!-- Marketing messaging and featurettes
================================================== -->
<!-- Wrap the rest of the page in another container to center all the content. -->
<div class="container">
<!-- CONTRIBUTE -->
<div class="row mb-5 mt-5">
<div class="col">
<h2 class="pb-3 mb-4 font-italic border-bottom"><i class="fas fa-code-branch"></i> Contribute</h2>
<p>There are many ways you can help make Karaf a better piece of software - please dive in and help !</p>
<ul class="community">
<li>Try browsing the <a href="documentation.html">documentation</a> - if something's confusing or not clear, let us know.</li>
<li><a href="download.html">Download</a> the code & try it out and see what you think.</li>
<li><a href="https://github.com/apache/karaf">Browse the source code</a>. Got an itch to scratch, want to tune some operation or add some feature ?</li>
</ul>
<p>
If you'd rather have a more gentle introduction to working on the Karaf project, try looking at the test coverage report and help us get it even more green by supplying more test cases to get us closer to 100% coverage.
</p>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">Report bugs and feature requests</h4>
<p>Did you find a bug or want something implemented? Please report an issue in our <a href="https://issues.apache.org/jira/browse/KARAF">issue tracker</a>. When creating a bug make sure you document the steps to reproduce the issue and provide all necessary information like OS, versions your use, logs. When creating a feature request document your requirements first. Try to not directly describe the solution.</p>
<p>If you want to dive into development yourself then you can also browse for open issues or features that need to be implemented. Take ownership of an issue and try fix it. Before doing a bigger change describe the concept/design of what you plan to do. If unsure if the design is good or will be accepted discuss it on the dev list.</p>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">Provide changes in a Pull Request</h4>
<p>The best way to provide changes is to fork karaf repo on github and provide a pull request with your changes. To make it easy to apply your changes please use the following conventions :</p>
<ul class="community">
<li>Every pull request should have a matching jira issue.</li>
<li>Do the change in a branch that is named like the jira issue id e.g KARAF-1234.<br/>To create this branch you can use:<br/>
<code>git clone http://github.com/apache/karaf</code><br/>
<code>git fetch --all</code><br/>
<code>git checkout -b my-branch origin/main</code><br/>
Don't forget to periodically rebase your branch:<br/>
<code>git pull --rebase</code><br/>
<code>git push GitHubUser my-branch --force</code>
</li>
<li>PRs should be based on main. We are taking care of cherry picking the PR commits on target branches if needed.</li>
<li>Every commit in the branch should start with the jira issue id like this "[KARAF-123] More details"</li>
<li>If you have a group of commits related to the same change, please squash your commits into one and force push your branch using <code>git rebase -i apache/main</code></li>
<li>Test that your change works by adapting or adding tests.</li>
<li><a href="http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule">Follow the boy scout rule to "Always leave the campground cleaner than you found it."</a></li>
<li>Make sure you do a build before doing a PR. The build has to be successfull :<br/>
<code>
mvn clean verify -Prat
</code>
</li>
<li>If your PR has conflicts with the main then rebase the branch. PRs with conflicts are unlikely to be applied</li>
<li>Do not change too much in a PR. The smaller the PR the easier it is to apply and the faster it will be done</li>
<li>Even if we are monitoring closely the PR, if you think your PR doesn't move forward fast enough, do not hesitate to ping in a PR comment to get some update.</li>
</ul>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">Review pull requests</h4>
<p>Anyone can review pull requests but the merge can be done only by a committer.<br/>
If you want to review a PR and if you are a committer, use the "Reviewer" entry on the right menu on GitHub.<br/>
When reviewing check if the changes are done in a clean way and are tested with a unit and possibly integration test. Check that the build does not report more test failures than before. If you are not a committer then write a comment if you recommend a merge or not. Provide good instructions for the contributor how to improve his PR if it is not yet ok. Make sure you do a review timely. By commenting that you do a review you kind of block others from applying the change.</p>
<p class="alert alert-primary" role="alert">
NB: Jenkins performs a build for each pull request. You can trigger a new build on a pull request using "retest this please" in a PR comment.
</p>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">Apply pull requests</h4>
<p>This can obviously only be done by a committer. Do the following steps.</p>
<ul class="community">
<li>As one time config, you can rename your git remote and add apache one :<br/>
<code>> git remote add apache https://gitbox.apache.org/repos/asf/karaf.git</code><br/><br/>
We recommand renaming <code>origin</code> as <code>github</code> :<br/>
<code>> git remote rename origin github</code><br/><br/>
For <code>github</code> remote, add an additional fetch reference, which will cause every pull request to be made available as a remote branch in your workspace :<br/>
<code>> git config --local --add remote.github.fetch '+refs/pull/*/head:refs/remotes/github/pr/*'</code><br/><br/>
You can confirm your configuration with the following command :<br>
<code>> git remote -v</code><br>
<code>apache https://gitbox.apache.org/repos/asf/karaf.git (fetch)</code><br>
<code>apache https://gitbox.apache.org/repos/asf/karaf.git (push)</code><br>
<code>github https://github.com/apache/karaf.git (fetch)</code><br>
<code>github https://github.com/apache/karaf.git (push)</code><br>
<code>username git@github.com:username/karaf.git (fetch)</code><br>
<code>username git@github.com:username/karaf.git (push)</code>
</li>
<li>Checkout the PR :<br/>
<code>> git fetch --all</code><br>
<code>> git checkout -b pr-xxx github/pr/xxx</code>
</li>
<li>Review the PR, amend, squash the commits, requesting changes, ... When done, add <code>LGTM</code> comment to approve the PR (or click on the "Approve" button on GitHub) :<br/>
<code>> git rebase -i apache/main</code>
</li>
<li>Merge the PR (it automatically closes the PR) :<br/>
Use the merge button on github (for committer).
</li>
<li>Eventually backport commits to bugfix branches using <code>git cherry-pick</code></li>
<li>Make sure you document the fix in jira by adding the fix versions and resolve the jira issue.</li>
<li>You can delete the PR branch : <br>
<code>> git branch -D pr-xxx</code>.</li>
</ul>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">Improve the karaf website</h4>
<p>The content of the website <strong>https://karaf.apache.org</strong> is stored in the git repo <a href="https://github.com/apache/karaf-site">karaf site</a>. See the <a href="https://github.com/apache/karaf-site/blob/trunk/README.md">README.md</a> on top level for how to test and publish the website.</p>
</div>
</div>
</div><!-- /.container -->
<div class="container">
<!-- CONTRIBUTE -->
<div class="row mb-5 mt-5">
<div class="col">
<h2 class="pb-3 mb-4 font-italic border-bottom"><i class="fas fa-shipping-fast"></i> Support</h2>
<p>If you are experiencing problems using Karaf then please report your problem to our <a href="https://issues.apache.org/jira/browse/KARAF">issue tracker</a>.
You may also find it useful to discuss your issues with the community on the mailing lists or IRC.</p>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">How to get help</h4>
<p>Whenever you are reporting a problem please be sure to include as much information as possible; the more we know the more chance of a quicker resolution :</p>
<ul class="community">
<li>which Karaf version you're using</li>
<li>what platform and JDK?</li>
<li>the particular OSGi container being used - if so what version</li>
<li>stack traces generally really help! If in doubt include the whole thing; often exceptions get wrapped in other exceptions and the exception right near the bottom explains the actual error, not the first few lines at the top. It's very easy for us to skim-read past unnecessary parts of a stack trace</li>
<li>log output can be useful too; sometimes enabling DEBUG logging can help</li>
<li>your code & configuration files are often useful. Be careful not to send us anything of a sensitive nature</li>
<li>did it work before, what have you changed to break it?</li>
<li>try upgrading to the latest release and see if it's fixed in that release</li>
<li>try the latest SNAPSHOT to see if it's fixed in that release</li>
<li>search the user mailing list to see if has been discussed before</li>
<li>check the issue tracker to see if the issue already have been reported</li>
</ul>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">How to get help faster</h4>
<p>We may be able to help you much more quickly if you try the following :</p>
<ul class="community">
<li>provide us with a JUnit test case that demonstrates your issue. e.g. if you think you've found a bug, can you create a test case to demonstrate the bug ?</li>
<li>submit a patch fixing the bug! (we also buy you beer when we meet you if you submit bug fixes :) )</li>
<li>for memory leak or performance related issues, if you can run a profiler on your test case and attach the output as a file (or zipped file if it's huge) to the JIRA we can normally fix things much quickly. E.g. you could run jmap/jhat, JProfiler or YourKit on your code and send us the output. To find memory leaks it's quicker to resolve if you can tell us what classes are taking up all of the RAM; we can normally figure out what's wrong from that</li>
</ul>
</div>
</div>
<div class="row mb-5 mt-5">
<div class="col">
<h4 class="pb-3 mb-4">Commercial Support</h4>
<p>Apache Karaf is a widely used project. As such, several companies have built products and services around Karaf.
Companies are definitely encouraged to update this page directly or send a mail to the Karaf PMC with a description of your offerings and we can update the page. The products and services listed on this page are provided for information use only to our users. The Karaf PMC does not endorse or recommend any of the products or services on this page :</p>
<table class="table table-striped table-sm">
<thead class="thead-dark">
<th>Organization</th>
<th></th>
</thead>
<tbody>
<tr>
<td><a href="https://www.codecentric.de/">Codecentric</a></td>
<td>provides consulting and training for Apache Karaf and related technologies e.g. Apache Camel, Apache ActiveMQ and CXF for the DACH region.</td>
</tr>
<tr>
<td><a href="https://www.yupiik.com">Yupiik</a></td>
<td>contributes and commits to the Apache Karaf project. Provides consulting, training and support for Apache Karaf and related projects like Apache Camel, Apache ActiveMQ, Apache CXF.</td>
</tr>
<tr>
<td><a href="http://www.savoirtech.com/">Savoir Technologies, Inc</a></td>
<td>contributes and commits to the Apache Karaf project, while providing enterprise consulting, training and support for Karaf and a host of other Apache service containers. Savoir can provide best practice mentoring for developing with Karaf, as well as architectural/design reviews, troubleshooting and SOA infrastructure implementations.</td>
</tr>
<tr>
<td><a href="http://www.talend.com/">Talend</a></td>
<td>uses and contributes on Apache Karaf. The Talend Runtime is based on Karaf. Talend has a dedicated team for the Apache projects. This team provides consulting, training, specific development, and support on Karaf (and other Apache projects).</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="container">
<!-- CONTRIBUTE -->
<div class="row mb-5 mt-5">
<div class="col">
<h2 class="pb-3 mb-4 font-italic border-bottom"><i class="fas fa-users-cog"></i> Team</h2>
<table class="table table-striped table-sm">
<thead class="thead-dark">
<th>Name</th>
<th>ID</th>
<th>PMC</th>
<th>Organization</th>
</thead>
<tbody>
<tr>
<td>David Bosschaert</td>
<td>davidb</td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://iocanel.blogspot.com/">Ioannis Canellos</a></td>
<td>iocanel</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.jboss.org/">JBoss</a></td>
</tr>
<tr>
<td>Hiram Chirino</td>
<td>chirino</td>
<td></td>
<td><a href="http://www.jboss.org/">JBoss</a></td>
</tr>
<tr>
<td>Chris Custine</td>
<td>ccustine</td>
<td><img src="/images/check.gif"/></td>
<td></td>
</tr>
<tr>
<td>Andrea Cosentino</td>
<td>acosentino</td>
<td></td>
<td><a href="http://www.redhat.com/">RedHat</a></td>
</tr>
<tr>
<td><a href="http://blog.code-house.org/">Lukasz Dywicki</a></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://freemanfang.blogspot.com/">Freeman Fang</a></td>
<td>ffang</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.jboss.org/">JBoss</a></td>
</tr>
<tr>
<td>Jarek Gawor</td>
<td>jgawor</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.ibm.com">IBM</a></td>
</tr>
<tr>
<td>Christoph Gritschenberger</td>
<td>christophg</td>
<td></td>
<td></td>
</tr>
<tr>
<td><a href="http://icodebythesea.blogspot.com/">Jamie Goodyear</a></td>
<td>jgoodyear</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.savoirtech.com/">Savoir Technologies</a></td>
</tr>
<tr>
<td>David Jencks</td>
<td>djencks</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.ibm.com">IBM</a></td>
</tr>
<tr>
<td>Alex Karasulu</td>
<td>akarasulu</td>
<td><img src="/images/check.gif"/></td>
<td></td>
</tr>
<tr>
<td><a href="http://cmoulliard.blogspot.com/">Charles Moulliard</a></td>
<td>cmoulliard</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.jboss.org/">JBoss</a></td>
</tr>
<tr>
<td><a href="http://notizblog.nierbeck.de/">Achim Nierbeck</a></td>
<td>anierbeck</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://codecentric.de/">Codecentric</a></td>
</tr>
<tr>
<td><a href="http://gnodet.blogspot.com/">Guillaume Nodet</a></td>
<td>gnodet</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.jboss.org/">JBoss</a></td>
</tr>
<tr>
<td><a href="http://blog.nanthrax.net">Jean-Baptiste Onofr&eacute;</a></td>
<td>jbonofre</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.talend.com">Talend</a></td>
</tr>
<tr>
<td>Andreas Pieber</td>
<td>pieber</td>
<td><img src="/images/check.gif"/></td>
<td></td>
</tr>
<tr>
<td>James Strachan</td>
<td>jstrachan</td>
<td></td>
<td><a href="http://www.jboss.org/">JBoss</a></td>
</tr>
<tr>
<td>Christian Schneider</td>
<td>cschneider</td>
<td></td>
<td><a href="http://www.talend.com">Talend</a></td>
</tr>
<tr>
<td>Adrian Trenaman</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Gert Vanthienen</td>
<td>gertv</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.jboss.org/">JBoss</a></td>
</tr>
<tr>
<td>Brian Topping</td>
<td>btopping</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Heath Kesler</td>
<td>hkesler</td>
<td></td>
<td><a href="http://www.savoirtech.com/">Savoir Technologies</a></td>
</tr>
<tr>
<td>Fran&ccedil;ois Papon</td>
<td>fpapon</td>
<td><img src="/images/check.gif"/></td>
<td><a href="https://www.yupiik.com">Yupiik</a></td>
</tr>
<tr>
<td>Grzegorz Grzybek</td>
<td>ggrzybek</td>
<td><img src="/images/check.gif"/></td>
<td><a href="http://www.redhat.com">RedHat</a></td>
</tr>
</tbody>
</table>
</div>
</main>