Kaiaulu uses GitHub's Discussions instead of Mailing Lists. If you have general questions, please post there instead of sending direct e-mails, as others may be able to reply/benefit from the response. Please feel free to ask any questions: If it is confusing to you, it means there is room for improvement.
First of all, thank you for your willingness to help making changes to the code. I really appreciate your time understanding the codebase to propose changes, and it is always reassuring to know others reviewed the core functionality. When contributing code you have to familiarize yourself with two things: What files in an R package are modified (on top of the one you wish to modify), and how to make the request for change. The formalities add a bit of upfront overhead but make searching for information and usage much easier. If you are not familiar with R package development or making Pull Requests, the following sections will brief you through it.
Yes. Since Kaiaulu is an R package, we follow some R package development conventions so R users know where to find information. This varies depending on the intended change. The following sub-sections are not mutually exclusive, but many can be skipped depending on your proposed changes.
Please add a brief note to the NEWS.md
file in the appropriate section to the most current milestone (top of the file) so others are aware of your change. Include the issue number as it is done to all other new notes. When the documentation is generated, this generates a changelog.
Please add your name to the DESCRIPTION
file in the root folder so I can give you credit! You can also add your ORCID. This information is reflected when the package docs are documented, and will also be listed on CRAN
(R Package manager) when this package is released there. GitHub will automatically list you as a contributor when I accept your pull request. Please build the package and the documentation when doing so in RStudio and observe if no warnings are generated or errors due to bad formatting. In OS X, Cmd + Shift + D will re-build the docs, and Cmd + Shift + B will re-build the package.
Please include the new package dependencies on the DESCRIPTION
file under Imports (see it for examples). You can find the package versions you are using sessionInfo() on an R session. If given choice, please opt for more permissive licenses, so it is clear Kaiaulu is MPL instead of GPL as an aggregate. If unclear, please ask about the issue associated with the change request. Also, please use a package Kaiaulu already uses if it can accomplish the same functionality for your needs to keep dependencies to a minimum.
Kaiaulu uses Rdoxygen to automatically generate the package documentation (see http://itm0.shidler.hawaii.edu/kaiaulu). Please observe the formatting of function documentation in the various R/ functions in the package if you are creating one. Moreover, if the feature is expressive, you may want to include a new vignette (i.e. R Notebook) in your pull request showcasing the functionality. Make sure you keep the #' @export
line, that's what makes the function "public" for users to use. In addition, update the _pkgdown.yml
file with the function(s) you added. Finally, please compile both the package and documentation before pushing the commit (the NAMESPACE file will be updated automatically).
Kaiaulu interacts with 3rd party software by system calls and by passing the tool's binary path to an R function. In general, this interaction is kept simple: The function responsibility is just to pass a request, and format the response as a table which can be easy to join to other data in Kaiaulu. If obtaining the 3rd party software binary during setup is relatively simple, please open an issue so we can discuss how to add an interface function.
If you are unsure on how to perform the below steps or are new to Git and Github, please see the Learning Resources (Section 5.) at the bottom of this document for some learning material.
The step-by-step process is as follows:
<issue-id>-<meaningful name associated to **what** you are trying to do>
.#27
is about creating histograms of full disclosure word counts, then your branch should be 27-full-disclosure-word-count-histogram
(note the # symbol is not included in the branch name).i #27
). Your commits should follow the format i <issue-id> <meaningful commit name>
. Note the leading i
followed by a single whitespace is required so GitHub can parse it. 27-full-disclosure-word-count-histogram
, one of your commits may be i #27 parse input data into data frames
, followed by i #27 plot and specify histogram ranges
. Note that, different from topic branches, the i and # symbol must be included in all commit labels.New Pull Request
you select the correct branch of your fork. Ensure you are not using your fork's master branch, but instead the topic branch.i #27 plot and specify histogram ranges
). git commit -s
Kaiāulu is licensed under MPL 2.0 (see LICENSE.md). We chose this license in the same spirit as the package R data.table, which decided to move from GPL to MPL 2.0 (see Rdatatable/data.table issue 2456), and used other major project examples, such as XGBoost as a basis to respect other project licenses when using them (see dmlc/xgboost issue 1338, and 1401).
Specifically, the motivation of this project is to facilitate interoperability between different interfaces to facilitate research in software engineering. It makes sense to us, that in leveraging interfaces from both private and public sources, MPL 2.0 provides a balance between open contribution and allowing you to use this software, provided any improvements to this package code remains open-source if distributed.
To ensure this project respects the license of the projects it interfaces with and their respective owners intentions, we require any contribution follows the Developer's Certificate of Origin process:
Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the
best of my knowledge, is covered under an appropriate open
source license and I have the right under that license to
submit that work with modifications, whether created in whole
or in part by me, under the same open source license (unless
I am permitted to submit under a different license), as
Indicated in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including
all personal information I submit with it, including my
sign-off) is maintained indefinitely and may be redistributed
consistent with this project or the open source license(s)
involved.
You acknowledge the above by signing off all commit messages submitted by Pull Request or directly to the repo, e.g.:
Signed-off-by: Carlos Paradis <carlosviansi@gmail.com>
Git provides you with the above if you do the following to git commit
:
-s
--signoff
If you forget, after a commit, you can amend:
git commit --amend -s
If it was already pushed to the branch, please force push after the amend: git push -f
This does not constitute legal advice. The aforementioned decisions were done in agreement with the licenses based on our best efforts.
If you are new to collaborating on GitHub, or need to brush up, see the Wiki's Learning Resources
section.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.