Git as for its version control and GitHub for various things such as a development platform, hosting provider and software distribution. In order to contribute to the project you will need to have a basic understanding of these tools. This guide will walk you through how to use these tools.
To install and configure Git on your system please visit Git | Download and follow the instructions outlined by the Git Team.
Once you have Git installed and configured, ensure you can run the following command:
# Checks for the version of the Git program.
git --version
# Outputs similar too:
git version 2.39.0
Note: There are also various Git GUIs that aim to make your Git development experience easier a list can be found at Git SCM | Git GUIs (installation and configuration of these tools is out of scope of this guide).
You will need a GitHub account in order to create Issues and Pull-Requests for the project. You can sign-up for a GitHub account at GitHub | Sign-Up
It is recommend you have an understanding of the following commands and concepts before contributing to the project:
These commands and concepts should be sufficient enough for you to begin working with the project. While we could provide you with a set of examples and explainers for each of these commands and concepts, we feel that the creators and maintainers will always explain their tools better than we can. With that said, if there is a specific way that we want something done we will outline it in our documentation.
The easiest way to contribute is by opening Issues on GitHub. Issues don't have to just be problems that you are having with the project, they can also be Feature Requests or Security Reports (please review our Security Guide). These Issues will allow the project maintainers to better understand what needs to be changed in the project.
Before creating a new Issue we as that you please review the simplePass Issue Tracker to ensure someone else already has not created an identical Issue.
To begin ensure that you are signed into you GitHub account.
Follow these steps to create an Issue:
We ask that you please remain an active member in the project until your Issue is closed as you may be called upon for further elaboration and collaboration.
That is it!
You can read more about GitHub Issues at GitHub | Docs | About Issues
Once you have submitted your Issue it will be available for the community to discus and debate how to proceed. If your Issue is accepted it will follow these this process to closer:
Please review the Development documentation as it will outline how to:
Note: that you will be required to develop in TypeScript with the tools included in tool-set.
One of the simplest ways you can help solve (partially) solve an issue is by offering a solution. You can do this by commenting on Issues on GitHub.
Before you offer your solution we ask that you please read through the existing offered solutions to see if a matching solution has already been suggested.
We ask that you please provide as much detail as possible when offering your solution, code snippets and pictures are welcome.
Note: Before opening a Pull Request please check if any other Pull Requests already exist that match your solution.
If you have a working solution to an existing Issue, you may open a Pull Request to request your solution be submitted to close the issue.
Please follow these steps to open a Pull Request
hot
branch. Please name this branch [YOUR-GITHUB-ACCOUNT-NAME]-[ISSUE-#]
OR [YOUR-GITHUB-ACCOUNT-NAME]-[ISSUE-NAME]
.hot
brach.git-pull
for any new changes that may have happened to the branch.hot
branch into your solution branch. If there are merge conflicts please review the output carefully and ensure you are not editing parts of code that were not part of your solution.git-push
your solution branch up to your GitHub account.hot
branch of the repository for wider testing. From their if no issues are found your Pull Request will makse its way into the main
branch of the project.As always we encourage you to read the source documentation on these topics. You may find links to these topics in our Working With Git & GitHub section.
If a commit is attempting to close a specific issue we use 'GitHub Keywords' to instruct GitHub to close issues upon the merging of a Pull Request. For example: Closes #10: Adds New Feature To The Project
. You can read about using 'GitHub Keywords' at GitHub Docs | Linking A Pull Request To An Issue
We prefer to use the closes keyword.
We prefer the commit message follows the [Closes] [Issue #]: [ISSUE TITLE]
format.
If necessary please provide a detailed description with your commit message as well.
All commits must be signed.
Not all new features are a result of an Issue on the board. These commits need to be categorized too so we can have a good understanding of what was changed.
We use the Conventional Commits Specification to describe commit messages that do not resolve a specific Issue. For example; feat: allow provided config object to extend other configs
.
We also allow the use of the Angular Conventional Commit Types to be used as well.
If necessary please provide a detailed description with your commit message as well.
All commits must be signed.
This Guide is meant to ensure the code looks as uniform as possible.
Note: This portion of the documentation is still a work in progress and feedback will be greatly appreciated.
_
(underscore) (see Limiting Phrases).__
(double underscore)..module-type
before the file extension identifier. For example errors.enum.ts
exports a module named 'errors' it is of type enum
and is a TypeScript file.const foo:boolean = true;
let bar:number = 3;
let min_bar = 1;
let max_bar = 6;
const feeFi = "foFum";
const fizz:Array<string|number> = [
"a",
1,
"b",
];
function ensure_exampleF1(required_var=undefined):boolean{
if(!var){
throw new Error('Wheres the foo?');
}
return true;
};
fizz.forEach((
item:string|number,
index:number,
array:Array<string|number>
)){
console.log(`${item} is in position ${index}`);
};
const buzz:object = {
prop1: "a",
prop2: 3,
prop3: [
1,
2,
3
],
prop4:{
sub1:"A",
sub2:{
inner:true
}
}
};
function exampleF1(param1:any):any{
if(param1){
console.log(param1);
}
return param1;
};
function exampleF2(param1:number,param2:boolean):string{
if(
param1
&& !param2
){
throw new Error('Not Nice.');
}
return "Great Success!";
};
function exampleF3(
param1:object,
param2:Array<string|number>,
param3:number
){
if(
param1
&& param2
&& param3
&& (
// Allows for easy insertion of comments
(
param1.prop3
// And the ability to visually see chunks of logic which is help for debugging.
&& (
param1.prop3.length
&& param3.length
)
&& param1.prop3.length === param2.length
)
|| (
param1.prop2
&& param1.prop2 === param3
)
)
){
console.log("Complex Logic Achieved!");
}
throw new Error("This was bound to happen");
};
// (Bad)Old Legacy Function
function __ensure_exampleF1(required_var=undefined):any{
return required_var;
}