|
1 | | -# The NSO Developer space on GitHub |
2 | | - |
3 | | -We have created a public organization on GitHub to ensure we have one common place to share code for all of us working with NSO. |
4 | | - |
5 | | -Since the NSO Developer is a public GitHub everyone can fork and read the uploaded code. |
6 | | -By using a pull request everyone can also contribute to existing projects. |
7 | | - |
8 | | -If you want to contribute with a new project, please read the instructions below. |
| 1 | +# The NSO Developer space on GitLab & GitHub |
| 2 | + |
| 3 | +NSO-Developer is a public space available on GitLab and GitHub where all of us |
| 4 | +working with NSO can publish and share code. Anyone is free to read and use the |
| 5 | +code or fork a project and continue development. Contributions are made simple |
| 6 | +through Merge/Pull requests and make it possible for anyone to contribute back. |
| 7 | + |
| 8 | +## GitLab vs GitHub |
| 9 | +The NSO-Developer space is available both on GitLab and GitHub with the goal to |
| 10 | +mirror all projects between the two. Having repos available in both places makes |
| 11 | +it possible for users to access code where most convenient for the user. |
| 12 | + |
| 13 | +- If you want to clone a repository, you can grab it from GitLab or GitHub |
| 14 | +- If you want to start a new repository you are encouraged to create it on |
| 15 | + GitLab. The repo can be continuously mirrored from GitLab to GitHub. |
| 16 | +- If you are the owner of an existing repository on GitHub, talk to an |
| 17 | + administrator to have it moved to GitLab and mirrored back to GitHub. Moving |
| 18 | + to GitLab enables CI functionality. |
| 19 | + |
| 20 | +GitLab and GitHub have virtually the same set of basic functions, like issue |
| 21 | +tracking or pull/merge requests for code review. NSO-Developer originally |
| 22 | +started on GitHub, which is why the majority of repositories currently have |
| 23 | +their home on GitHub. However, GitLab offers the possibility to use the |
| 24 | +integrated CI system, thus providing a standardized CI configuration format, yet |
| 25 | +setup a custom CI runner (the actual machine running CI jobs). A clear advantage |
| 26 | +that in turn makes it possible to run NSO, netsims as well as virtual routers in |
| 27 | +CI. The CI system of GitLab together with how it is leveraged in the [NSO in |
| 28 | +Docker project](https://gitlab.com/nso-developer/nso-docker/) is why GitLab is |
| 29 | +now the preferred location. We encourage anyone starting a new repository to |
| 30 | +create it on GitLab. We still keep it available on GitHub by mirroring the |
| 31 | +project, making it easy to consume for users. |
9 | 32 |
|
10 | 33 | ## Licenses |
11 | | -All material on the NSO Developer sapce on GitHub is under the [Apache 2.0 license](https://github.com/NSO-developer/NSO-developer/blob/master/LICENSE). |
12 | | -The license is used to ensure a balance between open contribution and allowing you to use the software as you like to. |
| 34 | +All material on the NSO-Developer space is under the [Apache 2.0 |
| 35 | +license](https://github.com/NSO-developer/NSO-developer/blob/master/LICENSE). |
| 36 | +The license is used to ensure a balance between open contribution and allowing |
| 37 | +anyone to freely use the software without hindrance. |
| 38 | + |
| 39 | +It is important that you, as a contributor, understand the ramifications of the |
| 40 | +license and agree to it. Sometimes the copyright holder isn't the contributor, |
| 41 | +such as when the contributor is doing work on behalf of a company. |
13 | 42 |
|
14 | | -The license tells you what rights you have that are provided by the copyright holder. It is important that the contributor fully understands what rights they are |
15 | | -licensing and agrees to them. Sometimes the copyright holder isn't the contributor, such as when the contributor is doing work on behalf of a company. |
| 43 | +To ensure that the criteria in the license are met, there is a need for a |
| 44 | +Developer Certificate of Origin (DCO) sign-off on all contributions. |
16 | 45 |
|
17 | | -To ensure that the criteria in the license are met, there is a need for a Developer Certificate of Origin (DCO) sign-off on all contribution. |
18 | 46 | More information about that can be found below. |
19 | 47 |
|
20 | | -## Contributing a Project on the NSO Developer GitHub |
| 48 | +## Contributing a Project on the NSO Developer |
21 | 49 | Getting Started |
22 | | -1. Create an account on github.com |
23 | | -1. Create your own private repository on github.com |
24 | | -1. Make sure your project fulfills all the criteria listed below (under “Requirements on your project”). |
25 | | -1. Send an email to the NSO Developer librarians with a link to your repository ( [email protected]). |
26 | | -1. You will be added as an outside collaborator to a new repository on the [NSO Developer GitHub](https://github.com/NSO-developer) and will be asked to contribute your code there. |
| 50 | +1. Create an account on gitlab.com |
| 51 | +1. Create your own private repository on gitlab.com |
| 52 | +1. Make sure your project fulfills all the criteria listed below (under |
| 53 | + “Requirements on your project”). |
| 54 | +1. Send an email to the NSO Developer librarians ( [email protected]) with |
| 55 | + a link to your repository. |
| 56 | +1. You will be added as an outside collaborator to a new repository on the [NSO |
| 57 | + Developer GitHub](https://github.com/NSO-developer) and will be asked to |
| 58 | + contribute your code there. |
27 | 59 |
|
28 | 60 | [Read more about the implications here](https://help.github.com/enterprise/2.6/user/articles/about-repository-transfers/). |
29 | 61 |
|
30 | | -That’s it! When the move is done, your repository is now part of the NSO developer. Keep hacking on your project, |
31 | | -you will still have owner privileges, and as such you can decide to give others write access for example. |
| 62 | +That’s it! When the move is done, your repository is now part of the NSO |
| 63 | +developer space. Keep hacking on your project, you will still have owner |
| 64 | +privileges, and as such you can decide to give others write access for example. |
32 | 65 |
|
33 | | -Users of your repository can use Issues to report bugs and suggest new features, and Pull Requests to contribute code. |
| 66 | +Users of your repository can use **Issues** to report bugs and suggest new features, |
| 67 | +and **Merge Requests** to contribute code. |
34 | 68 |
|
35 | | -When/if you do not have time to keep your project up to date (fix issues, accept pull requests etc) - please say so. Write a line in the README.md, as well as an email to [email protected] - we will try to help you find a new maintainer of the code, or retire it from the library if it appears abandoned for a long time. |
| 69 | +When/if you do not have time to keep your project up to date (fix issues, accept |
| 70 | +merge/pull requests etc) - please say so. Write a line in the README, as well as |
| 71 | +an email to [email protected] - we will try to help you find a new |
| 72 | +maintainer of the code, or retire it from the library if it appears abandoned |
| 73 | +for a long time. |
36 | 74 |
|
37 | 75 | ## Expectations |
38 | 76 | When using packages from the library you can expect: |
39 | 77 |
|
40 | | -* The code you find provided “as is” and when you use it you get to keep it. If it breaks you get to keep all the pieces. |
41 | | -* If you extend a project or fix bugs, please contribute back in the form of pull requests. |
42 | | -* When contributing you can expect: |
43 | | -* The code you contribute is made available to everyone in source form “as is”. |
44 | | -* Your code might be used to: teach others about NSO, build new products, provide a starting point for customer projects. |
45 | | -* At the very minimum your contribution should have a title and a short README.md explaining what it does, see full list of requirements here |
46 | | -* You are not required to support your contributed code, but please consider pull requests and try to answer questions in the project wiki |
47 | | -* Only contribute code for which you own the IPR |
48 | | -* Do not include explicit references to customers (be it customer names, network configuration / templates, or otherwise) |
| 78 | +- The code you find provided “as is” and when you use it you get to keep it. If |
| 79 | + it breaks you get to keep all the pieces. |
| 80 | +- If you extend a project or fix bugs, please contribute back in the form of |
| 81 | + merge/pull requests. |
| 82 | + |
| 83 | +When contributing you can expect: |
| 84 | +- The code you contribute is made available to everyone in source form “as is”. |
| 85 | +- Your code might be used to: teach others about NSO, build new products, |
| 86 | + provide a starting point for customer projects. |
| 87 | +- At the very minimum your contribution should have a title and a short |
| 88 | + README.md explaining what it does, see full list of requirements here |
| 89 | +- You are not required to support your contributed code, but please consider |
| 90 | + merge/pull requests and try to respond to issues and feedback |
| 91 | +- Only contribute code for which you own the IPR |
| 92 | +- Do not include explicit references to customers (be it customer names, network |
| 93 | + configuration / templates, or otherwise) |
49 | 94 |
|
50 | 95 | ## Requirements on your project |
51 | | -Before your project can be accepted as a repository of the NSO Developer it needs to fulfill the following criteria. |
| 96 | +Before your project can be accepted as a repository of the NSO Developer it |
| 97 | +needs to fulfill the following criteria. |
52 | 98 |
|
53 | 99 | ### Developer Certificate of Origin |
54 | 100 | #### Signed-off |
55 | | -When using the NSO-develop-hub every commit needs to be signed-off (git commit –s) by the contributor that he or she has the right to submit it. |
56 | | -The “-s” flag adds a line with the text 'Signed-off-by' followed by the same email address as the contributor. E.g. |
| 101 | +For code published on NSO-developer, every commit needs to be signed-off (git |
| 102 | +commit –s) by the contributor that he or she has the right to submit it. |
| 103 | + |
| 104 | +The “-s” flag adds a line with the text 'Signed-off-by' followed by the same |
| 105 | +email address as the contributor. E.g. |
57 | 106 |
|
58 | 107 | ``` |
59 | 108 | My commit message |
60 | 109 |
|
61 | 110 | Signed-off-by Aron Aronsson <[email protected]> |
62 | 111 | ``` |
63 | 112 |
|
64 | | -It is important that the git config user.name and user.email is configured correctly. |
| 113 | +It is important that the git config user.name and user.email is configured |
| 114 | +correctly. |
65 | 115 |
|
66 | 116 | [user] |
67 | 117 | name = Aron Aronsson |
68 | 118 | |
69 | 119 |
|
70 | 120 | #### What is signed-off |
71 | | -In short you are signing off that you have the right to submit the code to the developer hub, and that you understand that it will be public. The full text can found at [developercertificate.org](www.developercertificate.org) and also here: |
| 121 | +In short you are signing off that you have the right to submit the code to the |
| 122 | +NSO-Developer space, and that you understand that it will be public. The full |
| 123 | +text can found at [developercertificate.org](www.developercertificate.org) and |
| 124 | +below: |
| 125 | + |
72 | 126 | ``` |
73 | 127 | Developer Certificate of Origin |
74 | 128 | Version 1.1 |
@@ -108,43 +162,67 @@ By making a contribution to this project, I certify that: |
108 | 162 | maintained indefinitely and may be redistributed consistent with |
109 | 163 | this project or the open source license(s) involved. |
110 | 164 | ``` |
111 | | -#### Signing pull requests |
112 | | -When creating a pull request every commit in that pull request will be checked for DCO, if you haven’t signed all commits the checks will fail and the pull request will be denied. |
113 | 165 |
|
114 | | -Therefore it is a good idea to sign all commits before doing the pull request. |
115 | 166 |
|
116 | 167 | ### It should be NSO related |
117 | | -Sure, it could be a cool YANG plugin too - but it should at least be relevant to NSO development. |
| 168 | +Sure, it could be a cool YANG plugin too - but it should at least be relevant to |
| 169 | +NSO development. |
118 | 170 |
|
119 | 171 | ### Naming |
120 | | -Choose a name. A good name. A catchy name, a nerdy name, a happy name - you decide. This is especially important if your contribution is a tool or a reusable library. In that case it doesn’t even have to be descriptive. Better YxT than “YANG Extension Tool”. Don’t pick “generic-tool”, “misc-template”… |
| 172 | +Choose a name. A good name. A catchy name, a nerdy name, a happy name - you |
| 173 | +decide. This is especially important if your contribution is a tool or a |
| 174 | +reusable library. In that case it doesn’t even have to be descriptive. Better |
| 175 | +YxT than “YANG Extension Tool”. Don’t pick “generic-tool”, “misc-template”… |
| 176 | + |
| 177 | +If your contribution is more of a demo or example, then a more descriptive name |
| 178 | +could be in order, perhaps even pre- or postfixed with demo or example. For |
| 179 | +example: l3-vpn-demo or example-stacked-service. |
121 | 180 |
|
122 | | -If your contribution is more of a demo or example, then a more descriptive name could be in order, perhaps even pre- or postfixed with demo or example. For example: l3-vpn-demo or example-stacked-service. |
| 181 | +### Repository Description |
| 182 | +Be sure to set the description of the repository. While the name might be |
| 183 | +catchy, do try to use the description to describe what the package does. |
| 184 | + |
| 185 | +Is it just an example? Or a reusable library ready for use? Is it an NSO package |
| 186 | +or a peripheral utility? What does it do? How does it help someone else? |
123 | 187 |
|
124 | 188 | ### README.md |
125 | 189 | Add a README.md. Your README must include: |
126 | | -* Brief explanation of what your project does |
127 | | -* List dependencies (build and runtime, for example compilers, libraries, operating system) |
128 | | -* Instructions on how to build it |
129 | | -* If your project contains any copies of code derived from open source you need to explicitly list which projects. |
| 190 | +* Brief explanation of what your project does |
| 191 | +* List dependencies (build and runtime, for example compilers, libraries, |
| 192 | + operating system) |
| 193 | +* Instructions on how to build it |
| 194 | +* If your project contains any copies of code derived from open source you need |
| 195 | + to explicitly list which projects. |
130 | 196 |
|
131 | 197 | ### LICENSE |
132 | | -Add a LICENSE file so that the license is kept with the repository, we suggest using Apache 2.0 license. This makes it clear for anyone how the code can be used, modified and distributed. |
| 198 | +Add a LICENSE file so that the license is kept with the repository, we suggest |
| 199 | +using Apache 2.0 license. This makes it clear for anyone how the code can be |
| 200 | +used, modified and distributed. |
133 | 201 |
|
134 | 202 | ### It must be open |
135 | | -The whole point of the NSO Developer space is to share code to the NSO ecosystem, as such we don’t want to make it “private”. However, that means that anyone can access the NSO Developer repositories, which requires us to approve the open access and ensure that no private information is included. |
| 203 | +The whole point of the NSO Developer space is to share code to the NSO |
| 204 | +ecosystem, as such we don’t want to make it “private”. However, that means that |
| 205 | +anyone can access the NSO Developer repositories, which requires us to approve |
| 206 | +the open access and ensure that no private information is included. |
136 | 207 |
|
137 | | -The information in the README.md file will be displayed on the Cisco NSO DevNet site. |
| 208 | +The information in the README.md file will be displayed on the Cisco NSO DevNet |
| 209 | +site. |
138 | 210 |
|
139 | 211 | ### Recommendations |
140 | | -* Add test cases, and instructions on how to run them. Why not use Lux to automate your tests? NSO uses it! |
141 | | - |
142 | | -* Packaging make one repository for every stand-alone project. But don’t make a lot of small repositories of things that actually belong together, it just makes the space cluttered and it will be harder to find your project. |
143 | | - |
144 | | -* Naming convention for YANG modules. For a demo or example the module name and namespace does not matter that much (you can use example.com/... as namespace). But if your project is a re-usable piece, then consider using the URL of the project the namespace (as in: github.com/NSO-developer/PACKAGE-NAME/MODULE-NAME) |
145 | | - |
146 | | -* If you actually make some kind of releases, consider tagging the releases and use a “CHANGES” file / “Release Notes” document |
147 | | - |
148 | | -## Link to GitHub |
149 | | - |
150 | | -[NSO-Developer](https://github.com/nso-developer) |
| 212 | +- Add test cases, and instructions on how to run them. Why not use Lux to |
| 213 | + automate your tests? NSO uses it! |
| 214 | +- Packaging make one repository for every stand-alone project. But don’t make a |
| 215 | + lot of small repositories of things that actually belong together, it just |
| 216 | + makes the space cluttered and it will be harder to find your project. |
| 217 | +- Naming convention for YANG modules. For a demo or example the module name and |
| 218 | + namespace does not matter that much (you can use example.com/... as |
| 219 | + namespace). But if your project is a re-usable piece, then consider using the |
| 220 | + URL of the project the namespace (as in: |
| 221 | + github.com/NSO-developer/PACKAGE-NAME/MODULE-NAME) |
| 222 | +- If you actually make some kind of releases, consider tagging the releases and |
| 223 | + use a “CHANGES” file / “Release Notes” document |
| 224 | + |
| 225 | +## Link to GitLab & GitHub |
| 226 | + |
| 227 | +- [NSO-Developer on GitLab](https://gitlab.com/nso-developer) |
| 228 | +- [NSO-Developer on GitHub](https://github.com/nso-developer) |
0 commit comments