=============================== Contribution Guide for Shimmy =============================== :Author: * **A. Wilcox**, documentation writer :Status: Draft :Copyright: © 2016-2022 Adélie Linux Team. NCSA open source licence. Introduction ============ This repository contains code and documentation for Shimmy, a small set of utilities designed to bring stricter POSIX® compliance to open-source operating environments. It is designed mainly for use on Adélie Linux, but it is also occasionally tested on Gentoo Linux, FreeBSD, OpenBSD, and Mac OS, among others. License ``````` As the Adélie Linux project is an open-source Linux distribution, this package is distributed under the same NCSA open source license as the distribution. Changes ``````` Any changes to this repository must be reviewed before being pushed to the current branch. There are no exceptions to this rule. For security-sensitive updates, contact the Security Team at sec-bugs@adelielinux.org. Adding a New Utility ==================== The addition of more compliant utilities is always appreciated. If you would like to contribute one, please ensure that: * the utility in question is specified in IEEE Std 1003.1, 2013 Edition (Issue 7), or Linux Standards Base Core Specification, 5.0.0; * you have created a new directory in the top level named after the utility; * you have included an appropriate man page for it in the directory; * and it compiles cleanly on a strictly compliant POSIX® environment. Note that strictly compliant POSIX® software may include shims to compile on non-compliant systems as well - the only requirement is that they *can* be compiled on strictly compliant systems with no changes, and that they do not rely on unspecified interfaces or return values. Testing ======= You **must** test any changes on Adélie Linux. It is recommended that you additionally test your changes on at least a glibc-based Linux distribution. You are welcome to test on a Berkeley Software Distribution. Please note however that they are not POSIX® compliant and may require some changes to ensure build success. You are additionally welcome to test on Mac OS X, Solaris, AIX, and HP-UX. However, some of these systems deviate from POSIX® in some APIs or do not fully implement every option. Care should be taken when testing on these systems. Extensions ========== Some extensions, such as BSD or GNU, can be useful in some situations. We will review extensions on a case-by-case basis. Please do note that extensions that directly conflict with the POSIX® specification (that is, where implementation of said extension would cause loss of compliance with POSIX®) will never be accepted in tree. Contributing Changes ==================== This section describes the usual flows of contribution to this repository. GitLab Pull Requests ```````````````````` #. If you do not already have a GitLab account, you must create one. #. Create a *fork* of the packages repository. For more information, consult the GitLab online documentation. #. Clone your forked repository to your computer. #. Make your changes. #. Test your changes to ensure they are correct. #. Add (or remove) changed files using ``git add`` and ``git rm``. #. Commit your changes to the tree using the command ``git commit`` and ``git push``. #. Visit your forked repository in a Web browser. #. Choose the *Create Pull Request* button. #. Review your changes to ensure they are correct, and then submit the form. Mailing List ```````````` #. Clone the packages repository to your computer. #. Make your changes. #. Test your changes to ensure they are correct. #. Add (or remove) changed files using ``git add`` and ``git rm``. #. Commit your changes to the tree using the command ``git commit``. #. Use the command ``git format-patch HEAD^`` to create a patch file for your commit. .. note:: If you have made multiple commits to the tree, you will need to add an additional ^ for each commit you have made. For example, if you have made three commits, you will use the command ``git format-patch HEAD^^^``. #. Email the resulting patch to the packagers mailing list. Legal Notice ============ POSIX® is a registered trademark of the IEEE. While we aim to provide utilities that meet the POSIX® specification, this package has not yet been submitted to the Open Group for testing, and thus cannot be termed as "POSIX® compliant" in any documentation. Instead, use "POSIX® conformant".