Minimum content requirements (README.md, CONTRIBUTING.md and LICENSE files), roles and responsibilities and the basic mechanics of working in GitHub are set out in the Open Development Standard. The “Open Content Assessment Checklist” has been designed to help employees ensure there are no barriers to posting material on GitHub. If you are considering sharing code developed by or for the BC Government, you will need to complete this checklist and receive approval from your Deputy Minister. To expedite the approval process, Deputy Ministers may choose to delegate this authority to Ministry CIOs.
In general terms, projects on GitHub will fall under one of the three main types described below. The key considerations will be slightly different depending on which category the project is in.
There are two basic approaches, with a number of potential variations in-between :
a) "Throw it over the wall." You have some code, and you want to make it available because it might be useful to others, but you don't want an open-ended commitment to maintaining an active open source project. Or...
b) "Create and run a sustainable project." You have some code, and want to make it available and then run it as an active project: accepting patches, soliciting code contributions, adding new maintainers, participating in user and developer forums, doing regular releases, etc.
In either case, the basic steps in preparing to release the code are similar (although the implications for project management and resourcing are not – and are beyond the scope of this overview). Key requirements in these scenarios include:
Confirm your authority to license (see “Licensing” below)
- you will need to consult with the Intellectual Property Program (IPP) to ensure government has the rights to release the code
- If any of it is from another open source project, you will need to ensure you adhere to the existing licensing provisions and ensure licence compatibility when you select a licence to apply to your project
Ensure there are no other intellectual property considerations such as patent rights or trademarks in the code or documentation
- Confirm that there are no restrictions on releasing the code or documentation imposed by legislation, policy or contracts
- Vet any library dependencies, sample or config data to ensure it is appropriate for release or is separated out
- Choose an open source licence and confirm your authority to license (see Licenses) If you are intending to maintain an active project, you will need to ensure you have established the appropriate processes and terms to manage contributions (described in “initiating a new project” below).
You may have a code development initiative that you’d like to manage as an open source, collaborative project. Key considerations for new projects include:
- Choose an open source licence and confirm your authority to license (see Licenses)
- Determine the mechanics of how contributions will be made/managed and ensure this information is included in the “Contributing” file in the repository
- Creating minimum content (README.md, CONTRIBUTING.md and LICENSE files)
- We encourage you to add a Contributor Code of Conduct to your repository. This lets people know that all are welcome to contribute, and that all who contribute pledge to make participation in the project a harassment-free experience for everyone. To do so, include a CODEOFCONDUCT.md, and provide a contact method (in the placeholder) so that people know how to report violations. It is a good idea to introduce the code of conduct in your
There may be circumstances in which it is useful and appropriate for employees to make contributions to non-BC government repositories as a part of their work. In these cases, key considerations include:
- Making sure contributions are relevant and are of a size and scope consistent with your priorities (this may involve checking with your supervisor)
Making sure the licensing provisions of the project you are contributing to are appropriate (for example, it is licensed under an OSI approved license and that you are not required to assign copyright to the project).
- If the project requires signing of a contributor agreement, you must seek advice from Legal Services as to whether the terms are appropriate.
- If the project is using a reciprocal or "copyleft" license, such as GPL or Mozilla, you must ensure you understand the requirements for publishing any modifications you make to the code
- Confirm your authority to license (see Licenses).
Employees may also make contributions of non-BC government owned intellectual property rights outside their professional roles by using their personal email linked to their GitHub account.