Repository Approval Policy
Status: Approved by TSC vote 22nd July 2020.
Updated following TSC vote on 24th August 2022 to allow easier addition of committers in existing companies or organisations.
The Fledge project has a large number of source repositories stored within GitHub, this is partly due to architecture of the project and the pre-existing policy of placing each plugin in a source repository of its own. This approach was adopted to allow plugins to be easily built, packaged and documented independently and also to allow plugins to be created outside of the Fledge GitHub organisation if required by third parties who wished to make use of the Fledge core but who are unwilling to unable to contribute that plugin under the rules governing the Fledge project. Such use must however be compatible with the Linux Foundation licensing restrictions.
Repository Creation
A practical result of this policy is however that new repositories are frequently required to be created, with creations being required for each plugin developed by the committers or external contributions. The frequency of these is likely to be higher than the meeting frequency of the TSC, therefore an approval process requiring a TSC vote for each repository creation is likely to cause hold ups in submissions and development of the project, restricting the ability of the project to react quickly to requests and changing community goals. A more relaxed policy for creation is therefore outlined here.
Any voting member of the TSC may request a repository is created by the Linux Foundation support team. This document will act as an approval for that request.
Repository creations will be reviewed at the next TSC meeting and if an objection is raised at that meeting the TSC will vote to remove or amend that repository accordingly.
Repository Naming
The naming structure of the repositories is fixed and should be of the form
fledge-<type>-<unique name>
Where <type> is the plugin type from the list north
, south
, filter
, rule
or notify
. If the repository is to hold a new service then the type should be service
.
The unique name portion should be different from any other repository of the same type and should be descriptive as per the content of the repository.
It is possible that some special purpose repositories do not follow this naming convention, in which case TSC approval should be requested for an abnormal repository name.
Repository Removal
In order to remove a repository from the fledge-iot organisation a vote of the TSC is required. The result of that vote will act as approval for the Linux Foundation support team to carry out the removal upon submission of a request.
Repository Settings
All Fledge repositories should have the following configuration
All repositories shall share the committer list of the the fledge-iot/fledge core repository.
The default branch is the develop branch - note until code is added there may not be a develop branch.
The develop and master branches are protected such that a pull request is required for approval to merge.
Pull requests must be approved by at least one other committer for the project.
Approval of a pull request shall be dismissed if a new commit is pushed to the branch that is being merged.
Any person in the committer list is granted automatic approval to correct the setting of a repository that does not match this set of criteria.
Addition of Committers
Adding new contributors to the repositories requires a vote of the TSC, this may be either held at a TSC meeting or, if timing is not convenient the vote may be held over email with a majority being required. Such votes will be recorded in the agenda of the following TSC meeting. If there is not a quorum of voting members present at the TSC meeting an email vote will be held. The result of that vote will act as approval for the Linux Foundation support team to carry out the addition upon submission of a request from any voting member of the TSC.
Where there is any company or single organisation that has more than 3 maintainers, new maintainers may be added from that same company or organisation with approval from a single TSC voting member.
Removal of Committers
Removal of a contributor from the repositories requires a vote of the TSC, this may be either held at a TSC meeting or, if timing is not convenient the vote may be held over email with a majority being required. Such votes will be recorded in the agenda of the following TSC meeting. If there is not a quorum of voting members present at the TSC meeting an email vote will be held. The result of that vote will act as approval for the Linux Foundation support team to carry out the removal upon submission of a request from any voting member of the TSC.
Other Repository Actions
All other repository actions require a TSC vote with the result documented in the TSC meeting minutes. The result of that vote will act as approval for the Linux Foundation support team to carry out the required action upon submission of a request from any voting member of the TSC.