|
Packit |
6c0a39 |
How to contribute a patch to libssh
|
|
Packit |
6c0a39 |
====================================
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
Please checkout the libssh source code using git. Change the code and then
|
|
Packit |
6c0a39 |
use "git format-patch" to create a patch. The patch should be signed (see
|
|
Packit |
6c0a39 |
below) and send it to libssh@libssh.org, or attach it to a bug report at
|
|
Packit |
6c0a39 |
https://red.libssh.org/
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
For larger code changes, breaking the changes up into a set of simple
|
|
Packit |
6c0a39 |
patches, each of which does a single thing, are much easier to review.
|
|
Packit |
6c0a39 |
Patch sets like that will most likely have an easier time being merged
|
|
Packit |
6c0a39 |
into the libssh code than large single patches that make lots of
|
|
Packit |
6c0a39 |
changes in one large diff.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
Ownership of the contributed code
|
|
Packit |
6c0a39 |
==================================
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
libssh is a project with distributed copyright ownership, which means
|
|
Packit |
6c0a39 |
we prefer the copyright on parts of libssh to be held by individuals
|
|
Packit |
6c0a39 |
rather than corporations if possible. There are historical legal
|
|
Packit |
6c0a39 |
reasons for this, but one of the best ways to explain it is that it's
|
|
Packit |
6c0a39 |
much easier to work with individuals who have ownership than corporate
|
|
Packit |
6c0a39 |
legal departments if we ever need to make reasonable compromises with
|
|
Packit |
6c0a39 |
people using and working with libssh.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
We track the ownership of every part of libssh via http://git.libssh.org,
|
|
Packit |
6c0a39 |
our source code control system, so we know the provenance of every piece
|
|
Packit |
6c0a39 |
of code that is committed to libssh.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
So if possible, if you're doing libssh changes on behalf of a company
|
|
Packit |
6c0a39 |
who normally owns all the work you do please get them to assign
|
|
Packit |
6c0a39 |
personal copyright ownership of your changes to you as an individual,
|
|
Packit |
6c0a39 |
that makes things very easy for us to work with and avoids bringing
|
|
Packit |
6c0a39 |
corporate legal departments into the picture.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
If you can't do this we can still accept patches from you owned by
|
|
Packit |
6c0a39 |
your employer under a standard employment contract with corporate
|
|
Packit |
6c0a39 |
copyright ownership. It just requires a simple set-up process first.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
We use a process very similar to the way things are done in the Linux
|
|
Packit |
6c0a39 |
Kernel community, so it should be very easy to get a sign off from
|
|
Packit |
6c0a39 |
your corporate legal department. The only changes we've made are to
|
|
Packit |
6c0a39 |
accommodate the license we use, which is LGPLv2 (or later) whereas the
|
|
Packit |
6c0a39 |
Linux kernel uses GPLv2.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
The process is called signing.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
How to sign your work
|
|
Packit |
6c0a39 |
----------------------
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
Once you have permission to contribute to libssh from your employer, simply
|
|
Packit |
6c0a39 |
email a copy of the following text from your corporate email address to:
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
contributing@libssh.org
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
libssh Developer's Certificate of Origin. Version 1.0
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
By making a contribution to this project, I certify that:
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
(a) The contribution was created in whole or in part by me and I
|
|
Packit |
6c0a39 |
have the right to submit it under the appropriate
|
|
Packit |
6c0a39 |
version of the GNU General Public License; or
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
(b) The contribution is based upon previous work that, to the best of
|
|
Packit |
6c0a39 |
my knowledge, is covered under an appropriate open source license
|
|
Packit |
6c0a39 |
and I have the right under that license to submit that work with
|
|
Packit |
6c0a39 |
modifications, whether created in whole or in part by me, under
|
|
Packit |
6c0a39 |
the GNU General Public License, in the appropriate version; or
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
(c) The contribution was provided directly to me by some other
|
|
Packit |
6c0a39 |
person who certified (a) or (b) and I have not modified it.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
(d) I understand and agree that this project and the contribution are
|
|
Packit |
6c0a39 |
public and that a record of the contribution (including all
|
|
Packit |
6c0a39 |
metadata and personal information I submit with it, including my
|
|
Packit |
6c0a39 |
sign-off) is maintained indefinitely and may be redistributed
|
|
Packit |
6c0a39 |
consistent with the libssh Team's policies and the requirements of
|
|
Packit |
6c0a39 |
the GNU GPL where they are relevant.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
(e) I am granting this work to this project under the terms of the
|
|
Packit |
6c0a39 |
GNU Lesser General Public License as published by the
|
|
Packit |
6c0a39 |
Free Software Foundation; either version 2.1 of
|
|
Packit |
6c0a39 |
the License, or (at the option of the project) any later version.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
http://www.gnu.org/licenses/lgpl-2.1.html
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
We will maintain a copy of that email as a record that you have the
|
|
Packit |
6c0a39 |
rights to contribute code to libssh under the required licenses whilst
|
|
Packit |
6c0a39 |
working for the company where the email came from.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
Then when sending in a patch via the normal mechanisms described
|
|
Packit |
6c0a39 |
above, add a line that states:
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
Signed-off-by: Random J Developer <random@developer.example.org>
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
using your real name and the email address you sent the original email
|
|
Packit |
6c0a39 |
you used to send the libssh Developer's Certificate of Origin to us
|
|
Packit |
6c0a39 |
(sorry, no pseudonyms or anonymous contributions.)
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
That's it! Such code can then quite happily contain changes that have
|
|
Packit |
6c0a39 |
copyright messages such as:
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
(c) Example Corporation.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
and can be merged into the libssh codebase in the same way as patches
|
|
Packit |
6c0a39 |
from any other individual. You don't need to send in a copy of the
|
|
Packit |
6c0a39 |
libssh Developer's Certificate of Origin for each patch, or inside each
|
|
Packit |
6c0a39 |
patch. Just the sign-off message is all that is required once we've
|
|
Packit |
6c0a39 |
received the initial email.
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
Have fun and happy libssh hacking !
|
|
Packit |
6c0a39 |
|
|
Packit |
6c0a39 |
The libssh Team
|
|
Packit |
6c0a39 |
|