From 2e9f9017c5deaaaa96c5166249eddd7631311c24 Mon Sep 17 00:00:00 2001 From: <> Date: Thu, 20 Jul 2023 07:16:42 +0000 Subject: [PATCH] Deployed d0e882d with MkDocs version: 1.4.2 --- .nojekyll | 0 404.html | 750 ++ assets/images/favicon.png | Bin 0 -> 1870 bytes assets/images/ospo-nl-logo-green.png | Bin 0 -> 75816 bytes .../images/screenshot-kennisbank-OSPO-NL.png | Bin 0 -> 60282 bytes assets/javascripts/bundle.6df46069.min.js | 29 + assets/javascripts/bundle.6df46069.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.db81ec45.min.js | 42 + .../workers/search.db81ec45.min.js.map | 8 + assets/stylesheets/main.0d440cfe.min.css | 1 + assets/stylesheets/main.0d440cfe.min.css.map | 1 + assets/stylesheets/palette.2505c338.min.css | 1 + .../stylesheets/palette.2505c338.min.css.map | 1 + best-practices/DCO/index.html | 1005 +++ best-practices/GitHub/index.html | 856 +++ best-practices/index.html | 781 ++ best-practices/introductie-oss/index.html | 943 +++ .../open-source-software-licenties/index.html | 1028 +++ .../project-launch-checklist/index.html | 1000 +++ best-practices/wetgeving/index.html | 906 +++ bronnen/index.html | 787 ++ bronnen/nederlands-overzicht/index.html | 989 +++ .../ondersteunende-organisaties/index.html | 1093 +++ community/CODE_OF_CONDUCT/index.html | 968 +++ community/CONTRIBUTING/index.html | 1366 ++++ community/LICENSE/index.html | 795 ++ community/PROJECT_GOVERNANCE/index.html | 913 +++ community/SUPPORT/index.html | 796 ++ community/index.html | 788 ++ community/over-ospo-nl/index.html | 814 ++ index.html | 805 ++ nieuw-project/CODE_OF_CONDUCT/index.html | 796 ++ nieuw-project/CONTRIBUTING/index.html | 795 ++ nieuw-project/PROJECT_GOVERNANCE/index.html | 911 +++ nieuw-project/index.html | 789 ++ search/search_index.json | 1 + sitemap.xml | 113 + sitemap.xml.gz | Bin 0 -> 212 bytes 66 files changed, 28074 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 assets/images/favicon.png create mode 100644 assets/images/ospo-nl-logo-green.png create mode 100644 assets/images/screenshot-kennisbank-OSPO-NL.png create mode 100644 assets/javascripts/bundle.6df46069.min.js create mode 100644 assets/javascripts/bundle.6df46069.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.db81ec45.min.js create mode 100644 assets/javascripts/workers/search.db81ec45.min.js.map create mode 100644 assets/stylesheets/main.0d440cfe.min.css create mode 100644 assets/stylesheets/main.0d440cfe.min.css.map create mode 100644 assets/stylesheets/palette.2505c338.min.css create mode 100644 assets/stylesheets/palette.2505c338.min.css.map create mode 100644 best-practices/DCO/index.html create mode 100644 best-practices/GitHub/index.html create mode 100644 best-practices/index.html create mode 100644 best-practices/introductie-oss/index.html create mode 100644 best-practices/open-source-software-licenties/index.html create mode 100644 best-practices/project-launch-checklist/index.html create mode 100644 best-practices/wetgeving/index.html create mode 100644 bronnen/index.html create mode 100644 bronnen/nederlands-overzicht/index.html create mode 100644 bronnen/ondersteunende-organisaties/index.html create mode 100644 community/CODE_OF_CONDUCT/index.html create mode 100644 community/CONTRIBUTING/index.html create mode 100644 community/LICENSE/index.html create mode 100644 community/PROJECT_GOVERNANCE/index.html create mode 100644 community/SUPPORT/index.html create mode 100644 community/index.html create mode 100644 community/over-ospo-nl/index.html create mode 100644 index.html create mode 100644 nieuw-project/CODE_OF_CONDUCT/index.html create mode 100644 nieuw-project/CONTRIBUTING/index.html create mode 100644 nieuw-project/PROJECT_GOVERNANCE/index.html create mode 100644 nieuw-project/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..d9b76d9 --- /dev/null +++ b/404.html @@ -0,0 +1,750 @@ + + + + + + + + + + + + + + + + + + OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/images/ospo-nl-logo-green.png b/assets/images/ospo-nl-logo-green.png new file mode 100644 index 0000000000000000000000000000000000000000..889ff37b54ea40ed941c5313ac63b9efec0b9a06 GIT binary patch literal 75816 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 N69e3w literal 0 HcmV?d00001 diff --git a/assets/images/screenshot-kennisbank-OSPO-NL.png b/assets/images/screenshot-kennisbank-OSPO-NL.png new file mode 100644 index 0000000000000000000000000000000000000000..c31a437af654b1c4482d2b07e484fe49f38f2e6a GIT binary patch literal 60282 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 literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.6df46069.min.js b/assets/javascripts/bundle.6df46069.min.js new file mode 100644 index 0000000..02c8d5f --- /dev/null +++ b/assets/javascripts/bundle.6df46069.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Hi=Object.create;var xr=Object.defineProperty;var Pi=Object.getOwnPropertyDescriptor;var $i=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Ii=Object.getPrototypeOf,Er=Object.prototype.hasOwnProperty,an=Object.prototype.propertyIsEnumerable;var on=(e,t,r)=>t in e?xr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))Er.call(t,r)&&on(e,r,t[r]);if(Ht)for(var r of Ht(t))an.call(t,r)&&on(e,r,t[r]);return e};var sn=(e,t)=>{var r={};for(var n in e)Er.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&an.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Fi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $i(t))!Er.call(e,o)&&o!==r&&xr(e,o,{get:()=>t[o],enumerable:!(n=Pi(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Hi(Ii(e)):{},Fi(t||!e||!e.__esModule?xr(r,"default",{value:e,enumerable:!0}):r,e));var fn=Pt((wr,cn)=>{(function(e,t){typeof wr=="object"&&typeof cn!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(wr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,a={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function s(T){return!!(T&&T!==document&&T.nodeName!=="HTML"&&T.nodeName!=="BODY"&&"classList"in T&&"contains"in T.classList)}function f(T){var Ke=T.type,De=T.tagName;return!!(De==="INPUT"&&a[Ke]&&!T.readOnly||De==="TEXTAREA"&&!T.readOnly||T.isContentEditable)}function c(T){T.classList.contains("focus-visible")||(T.classList.add("focus-visible"),T.setAttribute("data-focus-visible-added",""))}function u(T){T.hasAttribute("data-focus-visible-added")&&(T.classList.remove("focus-visible"),T.removeAttribute("data-focus-visible-added"))}function p(T){T.metaKey||T.altKey||T.ctrlKey||(s(r.activeElement)&&c(r.activeElement),n=!0)}function m(T){n=!1}function d(T){s(T.target)&&(n||f(T.target))&&c(T.target)}function h(T){s(T.target)&&(T.target.classList.contains("focus-visible")||T.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(T.target))}function v(T){document.visibilityState==="hidden"&&(o&&(n=!0),B())}function B(){document.addEventListener("mousemove",z),document.addEventListener("mousedown",z),document.addEventListener("mouseup",z),document.addEventListener("pointermove",z),document.addEventListener("pointerdown",z),document.addEventListener("pointerup",z),document.addEventListener("touchmove",z),document.addEventListener("touchstart",z),document.addEventListener("touchend",z)}function ne(){document.removeEventListener("mousemove",z),document.removeEventListener("mousedown",z),document.removeEventListener("mouseup",z),document.removeEventListener("pointermove",z),document.removeEventListener("pointerdown",z),document.removeEventListener("pointerup",z),document.removeEventListener("touchmove",z),document.removeEventListener("touchstart",z),document.removeEventListener("touchend",z)}function z(T){T.target.nodeName&&T.target.nodeName.toLowerCase()==="html"||(n=!1,ne())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),B(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var un=Pt(Sr=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},a=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(ne,z){d.append(z,ne)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(T){throw new Error("URL unable to set base "+c+" due to "+T)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,B=!0,ne=this;["append","delete","set"].forEach(function(T){var Ke=h[T];h[T]=function(){Ke.apply(h,arguments),v&&(B=!1,ne.search=h.toString(),B=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var z=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==z&&(z=this.search,B&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},a=i.prototype,s=function(f){Object.defineProperty(a,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){s(f)}),Object.defineProperty(a,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(a,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Sr)});var Qr=Pt((Lt,Kr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var a=i(279),s=i.n(a),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(O){return!1}}var d=function(O){var w=p()(O);return m("cut"),w},h=d;function v(j){var O=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[O?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(O,w){var k=v(O);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},ne=function(O){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof O=="string"?k=B(O,w):O instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(O==null?void 0:O.type)?k=B(O.value,w):(k=p()(O),m("copy")),k},z=ne;function T(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?T=function(w){return typeof w}:T=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},T(j)}var Ke=function(){var O=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=O.action,k=w===void 0?"copy":w,F=O.container,q=O.target,Le=O.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&T(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(q)return k==="cut"?h(q):z(q,{container:F})},De=Ke;function Fe(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fe=function(w){return typeof w}:Fe=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Fe(j)}function Ti(j,O){if(!(j instanceof O))throw new TypeError("Cannot call a class as a function")}function nn(j,O){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Fe(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var q=this;this.listener=c()(F,"click",function(Le){return q.onClick(Le)})}},{key:"onClick",value:function(F){var q=F.delegateTarget||F.currentTarget,Le=this.action(q)||"copy",kt=De({action:Le,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Le,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var q=yr("target",F);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,q)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return q.forEach(function(kt){Le=Le&&!!document.queryCommandSupported(kt)}),Le}}]),w}(s()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function a(s,f){for(;s&&s.nodeType!==o;){if(typeof s.matches=="function"&&s.matches(f))return s;s=s.parentNode}}n.exports=a},438:function(n,o,i){var a=i(828);function s(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?s.apply(null,arguments):typeof m=="function"?s.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return s(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=a(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var a=Object.prototype.toString.call(i);return i!==void 0&&(a==="[object NodeList]"||a==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var a=Object.prototype.toString.call(i);return a==="[object Function]"}},370:function(n,o,i){var a=i(879),s=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!a.string(d))throw new TypeError("Second argument must be a String");if(!a.fn(h))throw new TypeError("Third argument must be a Function");if(a.node(m))return c(m,d,h);if(a.nodeList(m))return u(m,d,h);if(a.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return s(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var a;if(i.nodeName==="SELECT")i.focus(),a=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var s=i.hasAttribute("readonly");s||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),s||i.removeAttribute("readonly"),a=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),a=f.toString()}return a}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,a,s){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:a,ctx:s}),this},once:function(i,a,s){var f=this;function c(){f.off(i,c),a.apply(s,arguments)}return c._=a,this.on(i,c,s)},emit:function(i){var a=[].slice.call(arguments,1),s=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=s.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var is=/["'&<>]/;Jo.exports=as;function as(e){var t=""+e,r=is.exec(t);if(!r)return t;var n,o="",i=0,a=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(s){a={error:s}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(a)throw a.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||s(m,d)})})}function s(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Ze?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){s("next",m)}function u(m){s("throw",m)}function p(m,d){m(d),i.shift(),i.length&&s(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(a){return new Promise(function(s,f){a=e[i](a),o(s,f,a.done,a.value)})}}function o(i,a,s,f){Promise.resolve(f).then(function(c){i({value:c,done:s})},a)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var je=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var s=xe(a),f=s.next();!f.done;f=s.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=s.return)&&r.call(s)}finally{if(t)throw t.error}}else a.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Or=je.EMPTY;function Ft(e){return e instanceof je||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,a=o.isStopped,s=o.observers;return i||a?Or:(this.currentObservers=null,s.push(r),new je(function(){n.currentObservers=null,Ve(s,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,a=n.isStopped;o?r.error(i):a&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Or},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,a=n._infiniteTimeWindow,s=n._timestampProvider,f=n._windowTime;o||(i.push(r),!a&&i.push(s.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,a=o._buffer,s=a.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var a=r.actions;n!=null&&((i=a[a.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var On=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var we=new On(Tn);var R=new U(function(e){return e.complete()});function Vt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Vt(kr(e))?e.pop():void 0}function zt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return A(e==null?void 0:e.then)}function qt(e){return A(e[ft])}function Kt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=Ki();function Gt(e){return A(e==null?void 0:e[Yt])}function Bt(e){return ln(this,arguments,function(){var r,n,o,i;return $t(this,function(a){switch(a.label){case 0:r=e.getReader(),a.label=1;case 1:a.trys.push([1,,9,10]),a.label=2;case 2:return[4,Ze(r.read())];case 3:return n=a.sent(),o=n.value,i=n.done,i?[4,Ze(void 0)]:[3,5];case 4:return[2,a.sent()];case 5:return[4,Ze(o)];case 6:return[4,a.sent()];case 7:return a.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(qt(e))return Qi(e);if(pt(e))return Yi(e);if(Nt(e))return Gi(e);if(Kt(e))return _n(e);if(Gt(e))return Bi(e);if(Jt(e))return Ji(e)}throw Qt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):de,Oe(1),r?Pe(t):zn(function(){return new Zt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function ue(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,a=i===void 0?!0:i,s=e.resetOnRefCountZero,f=s===void 0?!0:s;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},ne=function(){B(),u=m=void 0,h=v=!1},z=function(){var T=u;ne(),T==null||T.unsubscribe()};return g(function(T,Ke){d++,!v&&!h&&B();var De=m=m!=null?m:r();Ke.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),De.subscribe(Ke),!u&&d>0&&(u=new tt({next:function(Fe){return De.next(Fe)},error:function(Fe){v=!0,B(),p=jr(ne,o,Fe),De.error(Fe)},complete:function(){h=!0,B(),p=jr(ne,a),De.complete()}}),$(T).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function rr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(He(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),G())}function Je(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Re(0,we),l(()=>Je(e)),N(Je(e)))}function nr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Re(0,we),l(()=>nr(e)),N(nr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof or.ResizeObserver!="undefined"?or.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>he(e)))),N(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function sr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Te,H(e)).pipe(C(()=>e.disconnect()))),J(1));function cr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),G())}var fr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return fr[e].checked}function qe(e,t){fr[e].checked!==t&&fr[e].click()}function Ue(e){let t=fr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),ue());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function ur(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>ce(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function pr(e,t={credentials:"same-origin"}){return pe(fetch(`${e}`,t)).pipe(fe(()=>R),x(r=>r.status!==200?Tt(()=>new Error(r.statusText)):H(r)))}function We(e,t){return pr(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return pr(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function lr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Tt(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Oe(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function mr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Je(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:a,size:s},{x:f,y:c}])=>({offset:{x:a.x-f,y:a.y-c+i},size:s})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(a=>{let s=document.createElement("script");s.src=i,s.onload=a,document.body.appendChild(s)})),Promise.resolve())}var r=class{constructor(n){this.url=n,this.onerror=null,this.onmessage=null,this.onmessageerror=null,this.m=a=>{a.source===this.w&&(a.stopImmediatePropagation(),this.dispatchEvent(new MessageEvent("message",{data:a.data})),this.onmessage&&this.onmessage(a))},this.e=(a,s,f,c,u)=>{if(s===this.url.toString()){let p=new ErrorEvent("error",{message:a,filename:s,lineno:f,colno:c,error:u});this.dispatchEvent(p),this.onerror&&this.onerror(p)}};let o=new EventTarget;this.addEventListener=o.addEventListener.bind(o),this.removeEventListener=o.removeEventListener.bind(o),this.dispatchEvent=o.dispatchEvent.bind(o);let i=document.createElement("iframe");i.width=i.height=i.frameBorder="0",document.body.appendChild(this.iframe=i),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + +

+
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Developer Certificate of Origin (DCO)

+

Veel projecten vereisen tegenwoordig een DCO als juridische zekerheid over de bijdrage. Als +ontwikkelaar of organisatie teken je op dat moment o.a. voor dat de code die je bijdraagt een eigen +creatie is, of compatible is met de licentie van het projecten.

+

Doel

+

Het doel van Developer Certificate or Origin (DCO) is om juridische gevolgen voor OS project te +mitigeren wanneer een contributor code toevoegt aan het OS-project dat hij juridisch niet had mogen +toevoegen.

+

Voorbeeld

+

(voorbeeld van Developer Certificate of Origin website)

+
Developer Certificate of Origin
+Version 1.1
+
+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+
+Developer's Certificate of Origin 1.1
+
+By making a contribution to this project, I certify that:
+
+(a) The contribution was created in whole or in part by me and I
+    have the right to submit it under the open source license
+    indicated in the file; or
+
+(b) The contribution is based upon previous work that, to the best
+    of my knowledge, is covered under an appropriate open source
+    license and I have the right under that license to submit that
+    work with modifications, whether created in whole or in part
+    by me, under the same open source license (unless I am
+    permitted to submit under a different license), as indicated
+    in the file; or
+
+(c) The contribution was provided directly to me by some other
+    person who certified (a), (b) or (c) and I have not modified
+    it.
+
+(d) I understand and agree that this project and the contribution
+    are public and that a record of the contribution (including all
+    personal information I submit with it, including my sign-off) is
+    maintained indefinitely and may be redistributed consistent with
+    this project or the open source license(s) involved.
+
+

Met Developer Certificate or Origin (DCO) geeft je als contributor bij elke commit expliciet aan dat +het je het recht heeft om deze code bij te dragen aan het OS-project en je begrijpt dat je code zal +worden gebruikt door het project. Het is dan ook belangrijk dat je als auteur zelf de DCO +‘ondertekent’.

+

Commit sign off door een contributor

+

Het is de bedoeling dat ieder commit een regel bevat waarin je aangeeft wie de bijdrage doet en dat +je ervoor tekent dat de code voor je het recht hebt deze code bij te dragen en je begrijpt dat je +code zal worden gebruikt door het OS-project.

+

Signed-off-by: Username <myname@organization.org>

+

Op de commandline kan dit worden uitgevoerd met een flag op het commit commando:

+

git commit --signoff of git commit -s

+

Via de GitHub online interface

+

Het komt voor dat je een kleine wijziging wilt doorvoeren via de online interface van GitHub. Je +kunt dan zelf deze regel toevoegen. Omdat de kans groot is dat je vergeet, heeft Github een feature +geïntroduceerd om dit automatische voor je te doen. Deze github feature is kan in- of uitgeschakeld +worden voor de GitHub organisatie.

+

Voor andere github organisatie waar deze github feautre niet geactiveerd is, zijn er ook browser +plugins beschikbaar die dit automatisch voor je doen (zoals GitHub - scottrigby/dco-gh-ui: Browser +extension adds DCO Signed-off-by line to commits made with the GitHub browser UI).

+

Achteraf wijzigen

+

Heb je al een commit gedaan zonder de sign-off, dan kan je dat niet meer zo eenvoudig aanpassen via +de GitHub UI. Er zijn een aantal mogelijkheden:

+

Commit message(s) aanpassen: als je lokaal een git checkout hebt, kan je met dit commando het +laatste commit message aanpassen: git commit --amend --signoff

+

Het is ook mogelijk om meerdere commits te herschrijven: git rebase --interactive --ammend +--signoff

+

Na het herschrijven zal je moeten pushen met de --force optie om de git historie op de remote te +overschrijven.

+

Opnieuw commit maken: soms is het eenvoudiger om opnieuw te beginnen en gewoon de wijziging opnieuw +te maken, bijvoorbeeld op een andere branch. Dan kan je op dat moment wel de signoff meenemen.

+

DCO check override: maintainers kunnen de DCO check overrulen om zo de commits zonder signoff toch +te mergen. Het is aan te raden om dan een comment te plaatsen bij het pull-request dat eigenlijk de +DCO wel ondertekend is. Het Linkerd project hanteert daarvoor +de volgende conventie:

+
+

"I agree to the DCO for all the commits in this PR." - see +linkerd2/CONTRIBUTING.md

+
+

Editor ondersteuning

+

Als je VS Code gebruikt en standaard de sign off wilt laten doen, kun je daarvoor de +git.alwaysSignOff setting op true zetten. (zie +voorbeeld in het OSPO-NL +project)

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/best-practices/GitHub/index.html b/best-practices/GitHub/index.html new file mode 100644 index 0000000..bac8d76 --- /dev/null +++ b/best-practices/GitHub/index.html @@ -0,0 +1,856 @@ + + + + + + + + + + + + + + + + + + + + + + GitHub - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

GitHub

+

Tips voor het gebruik van GitHub en het inrichten van de GitHub organisatie.

+

.github repository

+

De .github repositorynaam in je organisatie is gereserveerd voor organisatiebrede configuraties. +Enkele functionaliteiten die beschikbaar zijn door bestanden toe te voegen aan deze repository:

+ +

Zie bijvoorbeeld de .github repository van GitHub zelf.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/best-practices/index.html b/best-practices/index.html new file mode 100644 index 0000000..8a10e24 --- /dev/null +++ b/best-practices/index.html @@ -0,0 +1,781 @@ + + + + + + + + + + + + + + + + + + + + + + Best practices - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Best practices

+

Hier vind je alle best pratices van de OSPO-NL community.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/best-practices/introductie-oss/index.html b/best-practices/introductie-oss/index.html new file mode 100644 index 0000000..0694d0e --- /dev/null +++ b/best-practices/introductie-oss/index.html @@ -0,0 +1,943 @@ + + + + + + + + + + + + + + + + + + + + + + Introductie Open Source Sofware - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Introductie Open Source Sofware

+

1. Open Source Software

+

1.1 Open Source Software definitie

+

Open source software (OSS) is software die gebouwd is op basis van broncode waaraan een open source +software licentie is verbonden. Die licentie geeft een eindgebruiker van de software het recht op +inzage in de broncode waaruit de software is opgebouwd, daar aanpassingen op te doen en de +aangepaste broncode (en verbeterde software) verder te verspreiden. Wanneer software en/of broncode +waaraan een OSS-licentie is verbonden niet gedeeld wordt buiten de organisatie, dan gelden deze +rechten niet. Broncode kan ook openbaar gemaakt worden zonder er een OSS-licentie aan te verbinden. +In dat geval blijft de broncode auteursrechtelijk beschermd. Dat betekent dat de broncode wel +bekeken en bestudeerd mag worden, maar mag worden niet aangepast of verder verspreid.

+

1.2 Voordelen van Open source Software

+

Over het algemeen is open source een manier van werken waarbij auteurs de broncode vrij beschikbaar +stellen voor anderen die de code willen bekijken, kopiëren, ervan leren, aanpassen of delen. Wat +deze manier van werken betekent voor een organisatie, hangt af van de context van die organisatie.

+

Voor een commerciële sofwareontwikkelaar biedt open source toegang tot state-of-the-art technologie +en kan het diens innovatie- en ontwikkelprocessen versnellen en licentiekosten besparen. Het +vergroot de hulpmiddelen waarover de organisatie kan beschikken. In de context van het openbaar +bestuur zijn de voordelen breder. Open source is een strategisch beleidsinstrument om +maatschappelijke waarde te realiseren.

+

Publieke waarden +- Een belangrijk voordeel van een openbare broncode is dat de werking van de sofware en de functies +die daarmee worden uitgevoerd voor iedereen inzichtelijk zijn. Dat inzicht geef vertrouwen in de +werking en past in het streven naar een transparante overheid. Openbare overheidsinformatie moet +daarnaast zoveel als mogelijkheid herbruikbaar zijn. Dat regel je het makkelijkst door er ook een +OSS-licentie aan te verbinden. +- Open source biedt vele mogelijkheden om op nieuwe manieren samen te werken met ketenpartners en + medeoverheden. Het draagt daarmee ook bij aan efectief en efficiënt openbaar bestuur. +- Open source kan verder de mogelijkheden tot samenwerking met inwoners en ondernemers vergroten. En +daarmee de participatie van de samenleving in het openbaar bestuur versterken, en de legitimiteit en +het draagvlak voor te maken keuzen in beleid en uitvoering vergroten.

+

Veiligheid +- Openbaarheid van de broncode biedt derden de kans om de sofwarekwaliteit te toetsen en op fouten +of risico’s te onderzoeken. Dit kan bijdragen aan de veiligheid en betrouwbaarheid +(veel-ogen-principe) van de sofware. +- Derden kunnen verbetervoorstellen doen.

+

Efficiency en innovatie +- Open source bevordert hergebruik en verlaagt daarmee de ontwikkelkosten van sofware. +- Daarnaast stimuleert open source innovatie en economische groei, vanwege goedkopere toegang tot +sofware en mogelijkheden om deze te vermarkten en te benuten in eigen diensten. Ontwikkelaars kunnen +gebruik maken van elkaars ideeën. +- Open source trekt menselijk kapitaal aan, omdat veel sofwareontwikkelaars bij voorkeur werken met + open source.

+

Flexibiliteit en onafankelijkheid +- Open source verhoogt de fexibiliteit in het gebruik van sofware en verkleint de kans op (kostbare) +migratietrajecten, omdat de afankelijkheid van één leverancier wordt vermeden (vendor lock-in). Het +maakt de overheid soevereiner en minder afankelijk van (grote, machtige, buitenlandse) +marktpartijen.

+

Bronnen

+ + + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/best-practices/open-source-software-licenties/index.html b/best-practices/open-source-software-licenties/index.html new file mode 100644 index 0000000..0ba22d4 --- /dev/null +++ b/best-practices/open-source-software-licenties/index.html @@ -0,0 +1,1028 @@ + + + + + + + + + + + + + + + + + + + + + + Open Source Software licenties - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + + + + + +
+
+ + + + + + + + + + + + + +

Open Source Software licenties

+

Nu we meer en meer gebruik maken van Open Source software, leek het me een goed idee om nog een keer +stil te staan bij Open Source Software (OSS) Licenties en waar je op moet letten. Immers de ene +OSS-licentie is de andere niet.

+

Wat is een Open Source Software Licentie?

+

Alles wat je maakt valt standaard onder het auteursrecht (copyright) als onderdeel van het +intellectueel eigendomsrecht (IE-recht) en mag dus niet zomaar door derden, zonder jouw toestemming, +worden (her)gebruikt of gedeeld. Binnen softwareontwikkeling hebben we het dan vooral over het +ontwikkelen van broncode. Door aan iemand of groepen een gebruikerslicentie af te geven kunnen met +bepaalde voorwaarden de beperkingen van het auteursrecht worden versoepelt. Je kan bijv. specifieke +gebruikers een licentie geven de code te mogen gebruiken, te wijzigingen en/of te verspreiden. Een +open source software (OSS) licentie standaardiseert de belangrijkste aspecten die nodig zijn voor +een vrije omgang met het auteursrecht. Het gebruik van gestandaardiseerde licenties maakt het voor +jezelf makkelijker om niet in juridische valkuilen te stappen bij het opstellen van een licentie en +het geeft gebruikers sneller duidelijkheid wat je precies voor ogen hebt met je broncode. Daar +bovenop worden de kernwaarden van OSS (zoals verwoord door de Open Source Initiative) naar de +buitenwereld gecommuniceerd. Het betreft dan:

+
    +
  • Vrij recht op verdere distributie
  • +
  • Vrijheid tot aanpassingen en afleiden van werk
  • +
  • Verregaande uitsluiting van verantwoordelijkheid van de auteurs op het (her)gebruik van hun werk
  • +
  • Bewaking van de integriteit van de auteurs
  • +
  • Bewaking van digitale rechten.
  • +
+

Een OSS-licentie regelt daarmee (tot zekere hoogte) verschillende aspecten rond IE-rechten en +aansprakelijkheid. Zonder het verbinden van een OSS licentie aan broncode is er van OSS geen sprake. +Broncodes kunnen nog steeds wel ingezien worden t.b.v. transparantie, maar niet gebruikt worden +(door anderen) voor doorontwikkeling.

+

Het effect van OSS is dat de code van software open en vrij beschikbaar is voor iedereen, zodat +iedereen voort kan bouwen op de software, de eventuele bugs in software kan herstellen, de software +kan voorzien van nieuwe features en de software kan integreren in andere applicaties of delen +hergebruiken in compleet andere situaties. In zijn algemeenheid hebben OSS licenties bovenstaande +elementen gemeen.

+

Welke type OSS Licenties zijn er?

+

Vaak worden OSS licenties onderscheiden op het type wederkerigheid dat gehanteerd wordt. Dat +principe wordt ook wel ‘copyleft’ genoemd, om de tegenhang met het protectionistische auteursrecht +aan te geven. We maken dit onderscheid omdat de mate van wederkerigheid een sterk effect heeft op de +regels die moeten worden nageleefd. We onderscheiden dan 3 smaken:

+

Permissive (toegeeflijk)

+

De broncode mag naar eigen inzicht worden aangepast waaarbij de aangepaste broncode niet opnieuw +openbaar gemaakt hoeft te worden. Dit type broncode kan dus vrij gebruikt worden in gesloten +software. In geval van de Apache 2.0 licentie ben je wel verplicht kenbaar te maken welke eventuele +veranderingen er hebben plaatsgevonden op de oorspronkelijke code. In de meeste gevallen ben je ook +verplicht om een verwijzing naar de oorspronkelijk code en auteurs te op te nemen in het +eindproduct. Waarbij de MIT-0 variant die laatste verplichting echter weer niet kent. Bekende +voorbeelden zijn: Apache 2.0, BSD en MIT.

+

Reciprocal / weak copyleft (zwak wederkerig)

+

Deze licentie is iets beperkter dan de permissive licenties. Je bent namelijk verplicht om alle +veranderingen aan de oorspronkelijke code ook weer OSS beschikbaar te maken. Dus niet alleen kenbaar +maken welke verbeteringen er zijn gedaan, maar de letterlijk verbeterde broncode. De software +waarbinnen de betreffende broncode is gebruikt hoeft niet OSS te zijn als geheel. Zo kunnen +broncodes met deze licenties ook zonder problemen in gesloten software gebruikt worden. Bekende +voorbeelden zijn: MPL v2.0, EUPL v1.2

+

Restricted / strong copyleft (sterk wederkerig)

+

Deze broncode brengt bovenop de vorige licentie nog een zogenaamd 'viraal' effect mee. Dat betekent +dat de softwareoplossing waarbinnen dit type broncode wordt gebruikt 'geïnfecteerd' raakt door deze +licentie. Als je dus GPLv3 broncode gebruikt in een groter geheel, dan moet het grotere geheel ook +onder de GPLv3 licentie beschikbaar gesteld worden. Vooorbeeld: Software A bestaat uit component A +(MIT), B (EUPL) en C (GPLv3). Dat betekent dat software A als geheel onder de GPLv3 licentie valt. +Component A en component B kunnen nog steeds wel onafhankelijk hergebruikt worden onder hun +oorspronkelijke licentie. Strong copyleft licenties zijn dus niet verenigbaar met gesloten software. +Het bekendste voorbeeld is: GPLv3.

+

Een variant van de GPLv3 is de LGPLv3. De LGPL vermindert het virale effect door een totale software +oplossing niet te infecteren met de licentie van het hergebruikte component wanneer het als library +(soft-linked) wordt gekoppeld.

+

Noten

+

Een OSS licentie uit de smaak ‘Restricted / strong copyleft’ vergt meer kennis van deze betreffende +OSS licentie om deze juist te kunnen toe te passen. Als je gebruikt maakt van OSS met een OSS +licentie uit deze smaak dien je met meer voorwaarden rekening te houden. Wanneer je onjuist rekening +houd met deze voorwaarden loop je het risico dat je aangesproken / aangeklaagd voor +auteursrechtschending door de oorspronkelijke maker.

+

Met een OSS licentie geef je de controle uit handen op welke manier je broncode gebruikt gaat worden +in nieuwe toepassingen. Je broncode kan dus gebruikt worden voor de ontwikkeling van levensreddende +medicijnen, maar net zo goed in een kernwapen waarmee de mensheid wordt vernietigd.

+

Verder is het goed om te realiseren dat een OSS licentie geen openbaarheid afdwingt. Wat een OSS +licentie afdwingt is het recht van vrije distributie. Dat recht wordt pas actief wanneer er sprake +is van daadwerkelijke distrubitie oftewel verspreiding van de software en/of broncode. Wanneer je +binnen je organisatie aan OSS software werkt die verder niet buiten de organisatie is gedeeld, dan +is er geen sprake van verspreiding. Het recht op vrije distributie geldt dan dus niet. Het voordeel +hiervan is dat je in organisatorisch verband (bijv. in een stichting) toch elkaar de vrijheid kan +geven aan broncode te werken, zonder de plicht de broncode openbaar te moeten maken. Alleen, op het +moment dat de broncode of het eindproduct wel buiten je organisatie bewust is gedeeld, dan heeft +iedereen die aan de broncode heeft gewerkt het recht (die versie van) de broncode ook verder te +verspreiden.

+

Andersom kan broncode ook openbaar worden gemaakt zonder OSS licentie. Daarmee blijft de broncode +auteursrechtelijk beschermd en kan het dus niet worden hergebruikt, aangepast of worden gedeeld. +Openbaarmaking geeft wel inzicht in de broncode.

+

OSPO Reviewed License checklist

+

Om de toetsing en het gebruik van OSS licenties makkelijker te maken, kan een OSPO Reviewed License +checklist helpen. OSPO Reviewed License checklist bevat een overzicht van veel gebruikte OSS +licenties en of deze toegestaan zijn voor gebruik binnen je organisatie. Hiermee kun je een helder +referentiekader neer te zetten voor je organisatie m.b.t. gebruik van OSS licenties.

+

Bronnen:

+ + + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/best-practices/project-launch-checklist/index.html b/best-practices/project-launch-checklist/index.html new file mode 100644 index 0000000..ab097a4 --- /dev/null +++ b/best-practices/project-launch-checklist/index.html @@ -0,0 +1,1000 @@ + + + + + + + + + + + + + + + + + + + + + + Project Launch Checklist - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + + + + + +
+
+ + + + + + + + + + + + + +

Project Launch Checklist

+

Gefeliciteerd! Je leest dit omdat je van plan bent om je project te open sourcen!

+

Deze checklist is gecreëerd om je te helpen om je eigen open source projecten te starten waar dit +strategische relevant is. Hiermee nemen we je mee in de zaken waar je rekening mee moet houden voor +dat je besluit een open source project te starten.

+

Vul voor jezelf deze checklist in en neem contact op met de OSPO om het te bespreken.

+

Deze checklist is bedoeld voor de grotere softwareprojecten. Voor kleine projecten van enkele +honderden regels code - zoals een klein scriptjes - voldoet een beperkte lijst van criteria.

+

Deze checklist afgeleid van de Starting an Open Source +Project +lijst van de Linux Foundation. De GitHub Default Community Health +Files +is ook een goede bron van inspiratie.

+

Stap 1: Overwegingen

+
    +
  1. Evalueer de mogelijkheden om lid te worden van een bestaand open source-project
  2. +
  3. Evalueer hoe reëel het is dat andere bedrijven willen mee ontwikkelen aan dit project
  4. +
+

Stap 2: Business strategie & plan

+
    +
  1. Bepaal en zet open source doelen voor je project
  2. +
  3. Stel vast wie je beoogde doelgroep is
  4. +
  5. Beargumenteer waarom het van toegevoegde waarde is voor onze organisatie om het te open sourcen
  6. +
  7. Bepaal welke deel van je project je wilt open sourcen (welke repositories, inclusief URLs)
  8. +
  9. Bepaal wie de kosten gaat dragen van voor maintainen van open source project (incl. + infrastructuur, open source community support en open source activiteiten)
  10. +
  11. Zorg dat je minimaal 3 jaar commitment hebt om het project te maintainen
  12. +
  13. Stel vast of de OSPO & Enterprise Architecten akkoord zijn met je plan.
  14. +
+

Stap 3: Juridische beoordeling

+
    +
  1. Check of het open sourcen van je project impact heeft op het intellectueel eigendom van de + organisatie
  2. +
  3. Bepaal onder welke open source licentie je de code wilt open sourcen. Zie hiervoor + aanbevelingen over het kiezen van een licentie
  4. +
  5. Zorg er voor dat je de gekozen open source-licenties goed begrijpt en volledige naleeft
  6. +
  7. Overweeg of je ook non-software outputs van de community verwacht, zo ja: bepaal onder welke open + source licentie je dat wilt open sourcen. Dit kan een andere licentie zijn dan waaronder je code + open sourced.
  8. +
  9. Bepaal je nog eventuele handelsmerk gerelateerde besluiten noodzakelijk zijn
  10. +
+

Stap 4: Technische beoordeling

+
    +
  1. Verwijder kritische afhankelijkheden met niet-publieke componenten.
  2. +
  3. Zorg voor een goede README.md met use-case voorbeelden. Zie Make a + Readme.com
  4. +
  5. Zorg voor een goede CONTRIBUTING.md.
  6. +
  7. Zorg voor een CODE_OF_CONDUCT.md.
  8. +
  9. Zorg voor een SUPPORT.md. Zie ons eigen voorbeeld
  10. +
  11. Verwijder interne opmerkingen en referenties
  12. +
  13. Zorg voor voldoende code kwaliteit
  14. +
  15. Zorg ervoor dat coding style is consistent
  16. +
  17. Update de copyright notities in de source code files
  18. +
  19. Voeg een licentie notitie in de source code files
  20. +
  21. Voeg voor een kopie licentie tekst (volgt uit stap 3) toe aan + de root directory (LICENSE). Zie ons eigen voorbeeld
  22. +
+

Stap 5: Governance en processen

+
    +
  1. Zorg voor een PROJECT_GOVERNANCE.md waarin de + governance structuur beschreven is.
  2. +
  3. Bepaal wat de roadmap wordt
  4. +
  5. Zorg voor een code repository, bug reporting en code testing infrastructuur die toegankelijk is + voor de community
  6. +
  7. Creëer ondersteunden communicatie kanalen, zoals mailing list en wiki
  8. +
+

Stap 6: Launch en maintain

+
    +
  1. Open het project en start met open source ontwikkel proces
  2. +
  3. Zorg dat het gebruik van Developer Certificate or Origin (DCO) wordt afgedwongen.
  4. +
  5. Zorg er voor dat veranderingen aan de roadmap of governance helder gecommuniceerd worden.
  6. +
  7. Volg best practices zoveel mogelijk & behaal OpenSSF ( formerly CII ) Best Practices + badge
  8. +
+

Stap 7: Branding en marketing

+
    +
  1. Selecteer wie de rol van community advocate op zich neemt
  2. +
  3. Creëer marketing strategie om een actieve community te promoten
  4. +
  5. Zorg dat het project genoemd wordt op publieke pagina's van de organisatie
  6. +
  7. Moedig en organiseer face-to-face activiteiten voor community building
  8. +
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/best-practices/wetgeving/index.html b/best-practices/wetgeving/index.html new file mode 100644 index 0000000..62bed32 --- /dev/null +++ b/best-practices/wetgeving/index.html @@ -0,0 +1,906 @@ + + + + + + + + + + + + + + + + + + + + + + Wetgeving & Open Source - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Wetgeving & Open Source

+

Open Source is op zichzelf geen doel van een rechtmatige overheid. Open Source kan wel een middel +zijn om als overheid rechtmatig te handelen. De direct betrok wetgeving zijn de Wet open overheid +(Woo), Wet hergebruik overheidsinformatie (Who), Auteurswet en de Wet markt en overheid (Wet M&O).

+

Over het auteursrecht is al voldoende beschreven op de licenties +pagina.

+

Wet open overheid

+

De Wet Open Overheid (Woo) regelt +het recht op informatie over alles wat de overheid doet. Het is de opvolger van de Wet openbaarheid +van bestuur (Wob).

+

Wet hergebruik overheidsinformatie

+

De Wet hergebruik overheidsinformatie (Who) +(zie ook Wikipedia over Who) +geeft burgers het recht om te verzoeken om al openbaar gemaakte informatie van instellingen met een +wettelijke taak te mogen hergebruiken voor andere doeleinden, waaronder commerciële doeleinden.

+

Broncode

+

Er is regelmatig discussie of broncode onderdeel is van het documentbegrip zoals beschreven in de +Woo. In de Memorie van toelichting bij Wet implementatie Open data richtlijn +(pdf) +is hier door Ministerie van Binnenlandse Zaken en Koninkrijksrelaties uitgebreid toelichting op +gegeven in hoofdstuk 7.4:

+
+

Zoals blijkt uit overweging 30 bij de richtlijn, zijn lidstaten niet verplicht om +computerprogramma’s onder de definitie van ‘document’ te brengen, maar dit is wel toegestaan. In +Nederland valt software echter al sinds de implementatie van de eerste richtlijn onder de +hergebruikregels.

+

[...]

+

Kortom, de afgelopen jaren was het dus al mogelijk om op grond van de Wob een verzoek in te dienen +om software openbaar te maken en op grond van de Who een verzoek in te dienen om openbare software +voor hergebruik beschikbaar te maken. Gezamenlijk vallen die verzoeken te kwalificeren als een +verzoek om software open source te maken.

+
+

Aanvullend hierop is in de kamerbrief +(pdf) van +16 januari 2023 over de openbaarmaking van de broncode van DigiD door de staatssecretaris de +volgende toelichting gegeven:

+
+

Transparantie en veiligheid zijn belangrijke waarden van de digitale overheid. Dit geldt ook voor +software die de overheid ontwikkelt, zoals ik heb benoemd in mijn Werkagenda Waardengedreven +Digitalisering en in lijn met eerder ‘open source, tenzij’-beleid. Via deze brief informeer ik uw +Kamer dat de broncode van de DigiD-app na een Woo-verzoek openbaar is gemaakt, na een open en +zorgvuldig proces met de indiener van dit Woo-verzoek.

+
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/bronnen/index.html b/bronnen/index.html new file mode 100644 index 0000000..b7d90da --- /dev/null +++ b/bronnen/index.html @@ -0,0 +1,787 @@ + + + + + + + + + + + + + + + + + + + + + + Bronnen - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Bronnen

+

Diverse externe bronnen, zowel Nederlandse als (voornamelijk) Engelse bronnen die bruikbaar zijn +voor OSPOs en open source in het algemeen.

+ + + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/bronnen/nederlands-overzicht/index.html b/bronnen/nederlands-overzicht/index.html new file mode 100644 index 0000000..de983ff --- /dev/null +++ b/bronnen/nederlands-overzicht/index.html @@ -0,0 +1,989 @@ + + + + + + + + + + + + + + + + + + + + + + Nederlands overzicht - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Nederlands overzicht

+

Overzicht van organisaties actief in Nederland die Open Source op een gestructureerde manier +aanpakken. Dit kan vormgegeven zijn met een Open Source Program Office of op een andere manier +waarbij er controle op is.

+

Publieke sector

+

Zie de Wikipedia pagina Publieke sector voor een +indicatie van de verschillende organisaties die hieronder vallen. Dit beslaat zowel overheid als +semi-overheidsorganisaties.

+

Ministeries

+
    +
  • Ministerie van Algemene Zaken
  • +
  • Ministerie van Binnenlandse Zaken en Koninkrijksrelaties (BZK)
      +
    • BZK +
    • +
    • ICTU +
    • +
    • KOOP (Kennis- en Exploitatiecentrum Officiële Overheidspublicaties) + +
    • +
    +
  • +
  • Ministerie van Buitenlandse Zaken
  • +
  • Ministerie van Defensie
  • +
  • Ministerie van Economische Zaken en Klimaat
      +
    • DICTU
    • +
    +
  • +
  • Ministerie van Financiën
      +
    • Belastingdienst +
    • +
    +
  • +
  • Ministerie van Infrastructuur en Waterstaat
  • +
  • Ministerie van Justitie en Veiligheid
      +
    • Nationale Politie +
    • +
    • Nationaal Cyber Security Center (NCSC) +
    • +
    +
  • +
  • Ministerie van Landbouw, Natuur en Voedselkwaliteit
  • +
  • Ministerie van Onderwijs, Cultuur en Wetenschap
  • +
  • Ministerie van Sociale Zaken en Werkgelegenheid
  • +
  • Ministerie van Volksgezondheid, Welzijn en Sport (VWS)
      +
    • VWS
    • +
    +
  • +
  • Tweede Kamer +
  • +
+

Agentschappen

+
    +
  • Ministerie van Algemene Zaken
  • +
  • Dienst Publiek en Communicatie (DPC) +
  • +
  • Ministerie van Binnenlandse Zaken en Koninkrijksrelaties (BZK)
      +
    • Logius
    • +
    • Logius Standaarden +
    • +
    +
  • +
  • Ministerie van Infrastructuur en Waterstaat
      +
    • Rijkswaterstaat +
    • +
    +
  • +
  • Ministerie van Volksgezondheid, Welzijn en Sport (VWS)
      +
    • RIVM +
    • +
    +
  • +
  • Koninklijk Nederlands Meteorologisch Instituut (KNMI)
      +
    • KNMI
    • +
    +
  • +
+

Zelfstandig bestuursorgaan

+
    +
  • Kadaster +
  • +
  • Centraal Bureau voor de Statistiek +
  • +
  • Koninklijke Bibliotheek +
  • +
  • Nationaal Archief +
  • +
  • Alliander +
  • +
  • Common Ground +
  • +
+

Private sector

+
    +
  • Philips +
  • +
  • TomTom +
  • +
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/bronnen/ondersteunende-organisaties/index.html b/bronnen/ondersteunende-organisaties/index.html new file mode 100644 index 0000000..b176c63 --- /dev/null +++ b/bronnen/ondersteunende-organisaties/index.html @@ -0,0 +1,1093 @@ + + + + + + + + + + + + + + + + + + + + + + Ondersteunende organisaties - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Ondersteunende organisaties

+

Overzicht van organisaties die op specifieke thema's ondersteuning bieden aan OSPO's of de open +source community.

+

Project governance

+

Foundation for Public Code

+

Codebase stewardship en diverse hulpmiddelen.

+

Linux Foundation

+

Leveranciersonafhankelijke organisatie voor project governance. Koepel voor +deelorganisaties met een specifieker aandachtsgebied.

+

Eclipse Foundation

+

Leveranciersonafhankelijke organisatie voor project governance. Koepel voor +werkgroepen met een specifieker +aandachtsgebied.

+

Apache Foundation

+

Leveranciersonafhankelijke organisatie voor project governance, met name webtoepassingen en +databases.

+

OSPO kennis en kunde

+

TODO Group

+

Community met OSPOlogy bijeenkomsten en diverse gemeenschappelijke +hulpmiddelen

+

OSPO.zone

+ +

Joinup

+

Initiatief vanuit de Europese Commissie voor het delen van open source IT-oplossingen en goede +methodieken.

+

Subsidies

+

NLNet

+

Financiële steun voor organisaties en personen die bijdragen de informatiesamenleving via diverse +fondsen. NGI0 projecten hebben toegang tot ondersteunende +diensten om de kwaliteit en organisatie van projecten te +verbeteren.

+

Security

+

Open Source Security Foundation (OpenSSF)

+ + + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/community/CODE_OF_CONDUCT/index.html b/community/CODE_OF_CONDUCT/index.html new file mode 100644 index 0000000..87cf115 --- /dev/null +++ b/community/CODE_OF_CONDUCT/index.html @@ -0,0 +1,968 @@ + + + + + + + + + + + + + + + + + + + + + + Code of Conduct - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Code of Conduct

+

Onze gedragscode in het Nederlands, internationaal bekend als 'Code of Conduct'.

+

Onze belofte

+

In het belang van het bevorderen van een open en gastvrije omgeving, beloven wij als contributors en +maintainers om deelname aan ons project en onze gemeenschap / community een intimidatievrije +ervaring voor iedereen te laten zijn, ongeacht leeftijd, lichaamsgrootte, handicap, etniciteit, +geslachtskenmerken, genderidentiteit en -expressie, ervaringsniveau, opleiding, sociaal-economische +status, nationaliteit, persoonlijk uiterlijk, ras, religie of seksuele identiteit en geaardheid.

+
+

For non-Dutch native readers: In the interest of fostering an open and welcoming environment, +we as contributors and maintainers pledge to make participation in our project and our community a +harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex +characteristics, gender identity and expression, level of experience, education, socio-economic +status, nationality, personal appearance, race, religion, or sexual identity and orientation.

+

BUT because we strive for as much adoption in The Netherlands most content is expressed in +Dutch.

+
+

Onze normen

+

Voorbeelden van gedrag dat bijdraagt aan een positieve leefomgeving voor onze community omvatten:

+
    +
  • Empathie tonen en vriendelijkheid tegenover andere mensen
  • +
  • Respect hebben voor verschillende meningen, standpunten en ervaringen
  • +
  • Constructieve feedback geven en vriendelijk accepteren
  • +
  • Verantwoordelijkheid aanvaarden en excuses aanbieden aan degenen die getroffen zijn door onze + fouten, en leren van de ervaring
  • +
  • Focussen op wat het beste is, niet alleen voor ons als individuen, maar ook voor de algehele + community
  • +
+

Voorbeelden van onaanvaardbaar gedrag zijn:

+
    +
  • Het gebruik van seksueel getinte taal of beelden en seksuele aandacht of benadering
  • +
  • Trollen, beledigende of denigrerende opmerkingen en persoonlijke of politieke aanvallen
  • +
  • Publieke of private intimidatie
  • +
  • Het publiceren van de privégegevens van anderen, zoals een fysieke of e-mail adres, zonder hun + uitdrukkelijke toestemming
  • +
  • Ander gedrag dat redelijkerwijs als ongepast kan worden beschouwd in een professionele instelling
  • +
+

Onze verantwoordelijkheden

+

Projectbeheerders zijn verantwoordelijk voor het verduidelijken en handhaven van onze normen van +acceptabel gedrag en zullen passende en eerlijke corrigerende maatregelen nemen op elk geval van +onaanvaardbaar gedrag.

+

Project maintainers hebben het recht en de verantwoordelijkheid om te verwijderen, te bewerken of af +te wijzen elke opmerking, commits, code, wiki-bewerkingen, problemen en andere bijdragen die niet +afgestemd op deze Gedragscode, of om tijdelijk of permanent bijdragen te weigeren van gedrag dat zij +menen dat ongepast, bedreigend, beledigend of schadelijk is.

+

Scope

+

Deze Gedragscode is van toepassing binnen alle gemeenschapsruimten, en ook wanneer een individu +officieel de gemeenschap vertegenwoordigt in een openbare ruimte. Voorbeelden van het +vertegenwoordigen van onze gemeenschap zijn onder meer het gebruik van een officieel e-mailadres, +posts via een officieel social media-account, of handelen als een aangewezen persoon / +vertegenwoordiger op een online of offline evenement.

+

Handhaving

+

Gevallen van beledigend, intimiderend of anderszins onaanvaardbaar gedrag kunnen worden +gerapporteerd aan de gemeenschapsleiders die verantwoordelijk zijn voor handhaving via een +issue met label Bug. Later volgen nog andere +mogelijkheden. Alle klachten worden snel en eerlijk beoordeeld en onderzocht.

+

Alle community leaders zijn verplicht om de privacy en veiligheid van de melder van elk incident te +respecteren.

+

Attribution

+

This Code of Conduct is adapted from the Contributor Covenant, +version 1.4 +and 2.0, and +was generated by contributing-gen.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/community/CONTRIBUTING/index.html b/community/CONTRIBUTING/index.html new file mode 100644 index 0000000..909e636 --- /dev/null +++ b/community/CONTRIBUTING/index.html @@ -0,0 +1,1366 @@ + + + + + + + + + + + + + + + + + + + + + + Contributing Guide - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+ +
+ + + +
+
+ + + + + + + + + + + + + +

Contributing Guide

+
+

Voor het maken van een eigen CONTRIBUTING kijk onderaan bij Attribution

+
+

Om te beginnen, hartelijk dank voor je interesse om bij te dragen aan dit OSPO-NL initiatief! Door +te delen in kennis en ervaring en samen te werken komen we tot 'best practices' en hulp om Open +Source projecten in Nederland goed te organiseren.

+
+

For non-Dutch native readers: First off, thank you for your interest to contribute to this +OSPO-NL initiative! By sharing knowledge and experiences and collaborate we'll be able to produce +Best Practices and help to set up Open Source projects in The Netherlands. Because the gap between +needs and knowledge in The Netherlands the content of this initiative will be mainly in Dutch.

+

We are very sorry if this creates a feeling of not being inclusive ... which is of course against +our Code of Conduct; We would like to be as inclusive as possible!

+

BUT to choose to write mainly in Dutch we will be more inclusive to the less equiped and Dutch +native readers of our content and those are the primary focus of these practices. Nonetheless, +much content is probably not managed here or produced inside these repositories but will be linked +to or just translated summaries of content elsewhere.

+
+

Door deze richtlijnen te volgen, communiceer je dat je de tijd respecteert van de ontwikkelaars die +dit open source-project beheren en ontwikkelen. In ruil daarvoor moeten ze dat respect beantwoorden +bij het aanpakken van uw melding, het beoordelen van wijzigingen en het helpen afronden van uw pull +requests.

+

Houd een open geest! Het verbeteren van documentatie, melden van fouten, of bijdragen aandragen zijn +voorbeelden van nuttige bijdragen. Veel informatie is mogelijk al ergens beschikbaar, waarschijnlijk +in het Engels, en het verwijzen naar andere documentatie helpt ons allemaal. Helemaal als daar +samenvattingen (of volledige) vertalingen van in het Nederlands toegevoegd worden (daar of in dit +project)!

+

Mochten bijdragen niet voldoen aan deze richtlijnen dan houden wij ons de vrijheid om commentaren te +negeren en bijdragen te sluiten. Daarbij zullen wij verwijzen naar deze richtlijnen / Contributing +Guide.

+
+

En als je het project leuk vindt, maar gewoon geen tijd hebt om bij te dragen, is dat prima. Er +zijn andere eenvoudige manieren om het project te steunen en je waardering te tonen, waar we ook +erg blij mee zijn:

+
    +
  • Geef het project een ster
  • +
  • Tweet erover
  • +
  • Verwijs naar dit project in de readme van uw project
  • +
  • Noem het project op lokale meetups en vertel het aan je vrienden/collega's
  • +
+
+

Basis regels

+

Gedragscode

+

Dit project en iedereen die eraan deelneemt, wordt bestuurd door de OSPO-NL +Gedragscode. Door deel te nemen, wordt van u verwacht dat u zich aan deze code +houdt. Gelieve onaanvaardbaar gedrag te melden volgens de +Gedragscode#Handhaving.

+

Verwachtingen

+

Vrijwel alle content is beschreven in Markdown. Daarbij maken wij gebruik van MkDocs Material om +alle documentatie te publiceren. Bij gebruik van plaatjes is het fijn als de bron daarvan ook +onderdeel is van dit project ... en bij voorkeur in een open formaat. Dat betekent dat deze +aangepast en bijgewerkt kunnen worden zonder kosten te maken voor tools. Nogmaals: bij voorkeur.

+
    +
  • Zorg dat bijdragen cross-platform uitwisselbaar zijn: Windows, Mac, Linux.
  • +
  • Zorg dat code en documentatie compleet is en voldoet aan de styleguides.
  • +
  • Maak issues aan voor elke grote wijziging en verbetering die je graag wilt maken. Bespreek de + dingen transparant en vraag community feedback.
  • +
  • Probeer bijdragen compact en klein te houden; dat draagt bij aan het behoud van overzicht en + wijzigingen.
  • +
  • Wees open naar nieuwe mensen en moedig nieuwe bijdragen aan van alle achtergronden.
  • +
  • Issues behoren van een passend label te zijn voorzien:
  • +
  • Bug betekent een urgent probleem in de community of in de documentatie
  • +
  • Enhancement betekent een bijdrage voor uitbreiding
  • +
  • Question betekent een vraag
  • +
+

Ik heb een vraag

+
+

Als je een vraag wilt stellen, gaan we ervan uit dat je de beschikbare +documentatie hebt gelezen.

+
+

Voordat je een vraag stelt, kun je het beste zoeken naar bestaande +issues die je kunnen helpen. Als u een geschikt +probleem hebt gevonden en nog steeds verduidelijking nodig heeft, kunt u uw vraag in dit nummer +schrijven. Het is ook raadzaam om eerst op internet naar antwoorden te zoeken.

+

Als je dan toch de behoefte voelt om een vraag te stellen en verduidelijking nodig hebt, raden we +het volgende aan:

+
    +
  • Open een issue.
  • +
  • Geef het issue een passend label (zie verwachtingen).
  • +
  • Geef zoveel mogelijk context over waar je tegenaan loopt.
  • +
  • Indien van toepassing: Lever technische afhankelijkheden die relevant lijken.
  • +
+

We zullen het probleem dan zo snel mogelijk in behandeling nemen.

+

Ik wil bijdragen

+
+

Juridische mededeling

+

Wanneer u bijdraagt aan dit project, moet u ermee instemmen dat u 100% van de inhoud hebt +geschreven, dat u over de benodigde rechten op de inhoud beschikt en dat de inhoud die u bijdraagt +onder de projectlicentie mag worden geleverd.

+
+

Issues melden

+

Voordat u een issue indient

+

Een goed issue zou er niet voor moeten zorgen dat anderen u moeten achtervolgen voor meer +informatie. Daarom vragen we u om dit zorgvuldig te onderzoeken, informatie te verzamelen en het +probleem in detail te beschrijven in uw melding.

+
    +
  • Zorg ervoor dat u de nieuwste versie gebruikt.
  • +
  • Lees de documentatie aandachtig door en ontdek of de + functionaliteit al wordt gedekt, misschien door een individuele configuratie.
  • +
  • Voer een zoekopdracht uit om te zien of de + verbetering al is voorgesteld. Als dit het geval is, voeg dan een opmerking toe aan de bestaande + uitgave in plaats van een nieuwe te openen.
  • +
+

Voor dit moment is er alleen documentatie en zijn verdere voorbereidingen niet nodig. Mocht er ooit +tools en software componenten opgeleverd worden, dan is het van belang om de details daarvan ook +duidelijk te melden en te onderzoeken of het daadwerkelijk een probleem met die software is of dat +het wellicht toch een fout in uw omgeving is.

+

Hoe dien ik een goed issue in?

+
+

U mag beveiligingsgerelateerde problemen, kwetsbaarheden of issues, inclusief gevoelige +informatie, nooit melden aan de issue tracker of elders in het openbaar. In plaats daarvan moeten +gevoelige bugs per e-mail naar worden gestuurd.

+
+

We gebruiken GitHub-problemen om issue en fouten op te sporen. Als u een probleem met het project +tegenkomt:

+
    +
  • Open een issue. (Omdat we op dit moment niet + zeker weten of het een fout is of niet, vragen we je om nog niet over een fout te praten en het + probleem niet te labelen.)
  • +
  • Leg zo duidelijk mogelijk uit wat u verwacht of wens en geef suggesties voor invulling daarvan.
  • +
  • Geef de informatie op die u in het vorige gedeelte hebt verzameld.
  • +
+

Zodra het is ingediend:

+
    +
  • Het projectteam zal het probleem dienovereenkomstig labelen.
  • +
  • Een teamlid zal proberen het issue te begrijpen en op te volgen.
  • +
+

Meer hulp

+

Hier zijn een paar vriendelijke (maar Engelse) handleidingen voor meer hulp en achtergronden: First +Timers Only en Make A Pull Request

+

Verbeteringen voorstellen

+

Deze sectie begeleidt u bij het indienen van een verbeteringssuggestie voor OSPO-NL, inclusief +volledig nieuwe functies en kleine verbeteringen aan bestaande functionaliteit. Door deze +richtlijnen te volgen, kunnen beheerders en de community uw suggestie begrijpen en gerelateerde +suggesties vinden.

+

Voordat u een verbetering indient

+
    +
  • Zorg ervoor dat u de nieuwste versie gebruikt.
  • +
  • Lees de documentatie aandachtig door en ontdek of de + functionaliteit al wordt gedekt, misschien door een individuele configuratie.
  • +
  • Voer een zoekopdracht uit om te zien of de + verbetering al is voorgesteld. Als dit het geval is, voeg dan een opmerking toe aan de bestaande + uitgave in plaats van een nieuwe te openen.
  • +
  • Ga na of uw idee past binnen de reikwijdte en doelstellingen van het project. Het is aan u om een + sterk pleidooi te houden om de ontwikkelaars van het project te overtuigen van de voordelen van + deze functie. Houd er rekening mee dat we functies willen die nuttig zijn voor de meerderheid van + onze gebruikers en niet slechts voor een kleine subgroep. Als u zich slechts op een minderheid van + gebruikers richt, overweeg dan om een bibliotheek met add-ons/plug-ins te schrijven.
  • +
+

Hoe dien ik een goede verbeteringssuggestie in?

+

Suggesties voor verbeteringen worden bijgehouden als GitHub +issues.

+
    +
  • Gebruik een duidelijke en beschrijvende titel voor het probleem om de suggestie te + identificeren.
  • +
  • Geef een stapsgewijze beschrijving van de voorgestelde verbetering met zoveel mogelijk details.
  • +
  • Beschrijf het huidige gedrag en leg uit welk gedrag je in plaats daarvan verwachtte te zien en + waarom. Op dit punt kunt u ook zien welke alternatieven niet voor u werken.
  • +
  • Misschien wilt u schermafbeeldingen en geanimeerde GIF's toevoegen die u helpen de stappen te + demonstreren of aan te geven op welk onderdeel de suggestie betrekking heeft. U kunt deze tool + gebruiken om GIF's op macOS en Windows op te nemen, en deze tool of deze tool op Linux.
  • +
  • Leg uit waarom deze verbetering nuttig zou zijn voor de meeste gebruikers van OSPO-NL. Misschien + wil je ook wijzen op de andere projecten die het beter hebben opgelost en die als inspiratie + kunnen dienen.
  • +
+

Review proces

+

Om wijzigingen goed te kunnen beheren, volgen en uit te leggen, volgen we een eenvoudig proces van +review en Pull Requests (PRs).

+
    +
  • Wijzigingen wordt nooit direct op de main branch gedaan, maar altijd in een 'feature' branch.
  • +
  • Maak een Pull Request aan zodra je klaar bent. Of maak gelijk een Draft Pull Request aan nadat u + uw feature branch hebt aangemaakt. Zodra uw wijzigingen klaar zijn voor review, wijzigt u uw Draft + PR naar 'Ready for Review'.
  • +
  • Een teamlid reviewt de wijzigingen in het Pull Request en geeft commentaar en/of goedkeuring + (Approve).
  • +
  • Na goedkeuring kan het Pull Request gemerged worden. Hiervoor wordt standaard 'Squash & Merge' + gebruikt. In geval dat de PR door een teamlid is ingediend, reviewt een ander teamlid de PR maar + wordt de merge overgelaten aan de auteur van de PR.
  • +
  • Na de merge dienen bijbehorende issues bijgewerkt te worden zodat deze niet onnodig open blijven + staan ofwel beantwoord worden.
  • +
+

Styleguides

+

Markdown

+

Alle documentatie moet 'machine-readable' zijn en tegelijk ook makkelijk leesbaar en onderhoudbaar +voor mensen. Daarom maken we gebruik van Markdown. Zie ook GitHub +Markdown +en de algemene Markdown handleiding (EN) (of zelfs de +originele documentatie). De documentatie van +het gebruikte Material for MkDocs thema +benoemt de opmaak die extra wordt ondersteunt door het thema.

+

Alinea's worden op of binnen 100 karakters afgekapt om versiebeheer per regel beheersbaar te +maken. Dit kan automatisch worden afgedwongen in tooling, bijv. Rewrap in +VSCode (keyboard shortcut: alt+Q).

+

Bestandsnamen

+

Alle bestandsnamen, zowel van bestanden (files) als van mappen (folders), komen terug in de URL van +de gepubliceerde documentatie ... en spaties zijn niet zo standaard voor URLs. Daarom worden er GEEN +spaties gebruikt in bestandsnamen. Deze worden vervangen door _, underscores. In het genereren van +de documentatie worden deze netjes vervangen door spaties zodat de layout er wel mooi en netjes uit +ziet! 💪

+

Regeleinden

+

Er zijn meerdere manieren om regeleinden (Engels: line endings) te codificeren in bestanden. Voor +dit project horen die LF te zijn, zoals gebruikelijk voor de meeste projecten. Hiermee is +gegarandeerd dat op Linux, Windows en Mac OSX bestanden op dezelfde wijze worden gepresenteerd en +Pull Requests gemakkelijk zijn. Lokaal uitchecken met CRLF (in Windows) en commits met LF is +uiteraard toegestaan .. als het resultaat maar met LF in GitHub terecht komt 😄

+

Zie ook Blog: Mind the End of Your +Line en GitHub Help on Line +Endings.

+

Community

+

De OSPO-NL Community is nog in oprichting. Voor dit moment zijn er nog geen officiële kanalen en +samenwerkingsverbanden anders dan actief betrokken personen. Zie ook meer in de over +ons.

+

Attribution

+

Een eigen CONTRIBUTING maken is niet echt moeilijk ... en toch ook weer wel. Inspiratie voor deze +variant komt van een +template en +contributing-gen. Genereer zelf (incl. CODE OF +CONDUCT) !

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/community/LICENSE/index.html b/community/LICENSE/index.html new file mode 100644 index 0000000..5661f63 --- /dev/null +++ b/community/LICENSE/index.html @@ -0,0 +1,795 @@ + + + + + + + + + + + + + + + + + + + + + + License - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/community/PROJECT_GOVERNANCE/index.html b/community/PROJECT_GOVERNANCE/index.html new file mode 100644 index 0000000..a8d83b2 --- /dev/null +++ b/community/PROJECT_GOVERNANCE/index.html @@ -0,0 +1,913 @@ + + + + + + + + + + + + + + + + + + + + + + Project Governance - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Project Governance

+

Het basis principe is dat beslissingen zijn gebaseerd op consensus. Als een besluitvormingsproces te +lang duurt of een beslissing is noodzakelijk, dan heeft de 'Technical Steering Committee' de +autoriteit om besluiten te maken.

+

Technical Steering Committee

+

De Technical Steering Committee (TSC) is verantwoordelijk voor:

+
    +
  1. Algemene ambities, doelstellingen en doelstellingen van dit project
  2. +
  3. Richtlijnen en procedures en toolselectie
  4. +
  5. Keuzes op het gebied van architectuur en (ontwikkelings)infrastructuur
  6. +
  7. Onderwerpen/kwesties onder de aandacht brengen die van belang zijn voor de sturing/ontwikkeling + van dit project
  8. +
+

De TSC bestaat uit de volgende leden:

+
    +
  1. Karel Rietveld
  2. +
  3. Nico Rikken
  4. +
  5. Maurice Hendriks
  6. +
  7. Jonas van den Bogaard
  8. +
+

Maintainers

+

Maintainers (onderhouders) zijn verantwoordelijk voor het onderhoud van delen van de codebase. +Beheerders hebben de volgende verantwoordelijkheden:

+
    +
  1. Coördineren van de ontwikkelingsactiviteiten
  2. +
  3. Zorgen dat code-/documentatiebeoordelingen worden uitgevoerd
  4. +
  5. Coördineren van Pull Requests
  6. +
  7. Coördineren van opvolging van bugs
  8. +
  9. Coördineren van vragen
  10. +
  11. Bij lange discussies of ruzies kunnen onder meer maintainers om een besluit van de community raad + vragen.
  12. +
+

De huidige maintainers van dit project zijn:

+
    +
  1. Karel Rietveld
  2. +
  3. Maurice Hendriks
  4. +
  5. Jonas van den Bogaard
  6. +
  7. Nico Rikken
  8. +
  9. Arash Hoseni
  10. +
  11. Marc van Andel
  12. +
+

Elk community lid of contributor kan een vraag stellen of een issue melden door het toevoegen van +een GitHub issue (zie Contribution Guide.

+

Contributors

+

Onder Contributors (bijdragers) valt iedereen van de community die bijdraagt aan code, documentatie +of andere technische artefacten van het project.

+

Iedereen kan contributor worden.

+

Er wordt geen toewijding aan het project verwacht, geen specifieke vaardigheidsvereisten en geen +selectieproces. Om een contributor te worden, hoeft een lid van de community alleen maar een of +meerdere acties uit te voeren die gunstig zijn voor het project.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/community/SUPPORT/index.html b/community/SUPPORT/index.html new file mode 100644 index 0000000..f24be36 --- /dev/null +++ b/community/SUPPORT/index.html @@ -0,0 +1,796 @@ + + + + + + + + + + + + + + + + + + + + + + Support - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Support

+

.. of ondersteuning in het Nederlands.

+

Er zijn een paar manieren hoe je in contact kan komen met OSPO-nl community:

+
    +
  • In de Contributing Guide staat beschreven hoe je een issue kunt aanmaken.
  • +
  • ... (en verder is er nog niks anders 😄 )
  • +
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/community/index.html b/community/index.html new file mode 100644 index 0000000..7d9ea1e --- /dev/null +++ b/community/index.html @@ -0,0 +1,788 @@ + + + + + + + + + + + + + + + + + + + + + + Community - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/community/over-ospo-nl/index.html b/community/over-ospo-nl/index.html new file mode 100644 index 0000000..415579b --- /dev/null +++ b/community/over-ospo-nl/index.html @@ -0,0 +1,814 @@ + + + + + + + + + + + + + + + + + + + + + + Over OSPO-NL - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Over OSPO-NL

+

OSPO-NL
+Logo

+

OSPO staat voor Open Source Program Office. De toevoeging NL doelt op de Nederlandse samenwerking om +kennis en best practices te delen voor het opzetten en uitvoeren van OSPO's (of OSPOs) bij +organisaties in Nederland. Het is niet van belang of deze organisatie commerciële bedrijven zijn of +overheidsinstanties.

+

Het initiatief van deze community en samenwerking is ontstaan naar aanleiding van de +OSPOlogy.live +van januari 2023. Dit event werd georganiseerd door de Linux +Foundation en gehost door +Alliander.

+

OSPO-NL is een open community welke gestart is door +Alliander, +Belastingdienst en Kadaster. We +verwelkomen graag meer deelnemers zodat kennis en uitvoering van OSPOs in organisaties in Nederland +gemakkelijker, sneller en beter wordt. En mogelijk meer gestandaardiseerd. Dat is geen doel op zich +... maar waarom een wiel meerdere keren opnieuw uitvinden 😉

+

Veel inspiratie en inhoud kan al gevonden worden op de community waar we nauw mee verbonden zijn: +TODO Group. We willen daar vooral ook samenwerking mee hebben en gebruik +maken van de resources die daar beschikbaar zijn. MAAR ... Nederlandse invulling, vertalingen en +specifieke samenwerkingen passen beter in een eigen 'NL chapter', een eigen Nederlands initiatief. +Vandaar OSPO-NL 🚀

+

Voor meer informatie over onze community en werkwijze, check onze CONTRIBUTING +GUIDE en CODE OF CONDUCT.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..e8c4a30 --- /dev/null +++ b/index.html @@ -0,0 +1,805 @@ + + + + + + + + + + + + + + + + + + + + OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Home

+
+

De documentatie is nog volop in ontwikkeling. Via Pull Requests en Issues ontvangen we graag +bijdragen. Zie daarvoor onze Contributing Guide.

+
+

OSPO-NL Logo

+

Welkom bij de OSPO-NL Kennisbank!

+

De OSPO-NL kennisbank is een verzameling van kennis en best practices voor het opzetten en uitvoeren +van OSPO's bij organisaties in Nederland.

+

Deze kennisbank dient als startpunt met voornamelijk verwijzingen naar andere bronnen waarbij de +Nederlandse vertalingen hier verzameld kunnen worden als deze elders (nog) niet te vinden. Bijdragen +aan de (overwegend) Engelse bronnen mag natuurlijk ook 😄

+

Kijk bijvoorbeeld eens:

+ +

Uiteraard volgen wij onze eigen suggesties en zijn onze eigen 'voorzieningen' te vinden in +Community.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/nieuw-project/CODE_OF_CONDUCT/index.html b/nieuw-project/CODE_OF_CONDUCT/index.html new file mode 100644 index 0000000..7bd54a1 --- /dev/null +++ b/nieuw-project/CODE_OF_CONDUCT/index.html @@ -0,0 +1,796 @@ + + + + + + + + + + + + + + + + + + + + + + Code of Conduct - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/nieuw-project/CONTRIBUTING/index.html b/nieuw-project/CONTRIBUTING/index.html new file mode 100644 index 0000000..7f46456 --- /dev/null +++ b/nieuw-project/CONTRIBUTING/index.html @@ -0,0 +1,795 @@ + + + + + + + + + + + + + + + + + + + + + + Contributing Guide - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Contributing Guide

+

Een eigen CONTRIBUTING maken is niet echt moeilijk ... en toch ook weer wel. Inspiratie voor onze +eigen CONTRIBUTING komt van een +template en +contributing-gen. Genereer zelf (incl. CODE OF +CONDUCT) !

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/nieuw-project/PROJECT_GOVERNANCE/index.html b/nieuw-project/PROJECT_GOVERNANCE/index.html new file mode 100644 index 0000000..4c611b3 --- /dev/null +++ b/nieuw-project/PROJECT_GOVERNANCE/index.html @@ -0,0 +1,911 @@ + + + + + + + + + + + + + + + + + + + + Project Governance - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + + + + + + + +

Project Governance

+

Het basis principe is dat beslissingen zijn gebaseerd op consensus. Als een besluitvormingsproces te +lang duurt of een beslissing is noodzakelijk, dan heeft de 'Technical Steering Committee' de +autoriteit om besluiten te maken.

+

Technical Steering Committee

+

De Technical Steering Committee (TSC) is verantwoordelijk voor:

+
    +
  1. Algemene ambities, doelstellingen en doelstellingen van dit project
  2. +
  3. Richtlijnen en procedures en toolselectie
  4. +
  5. Keuzes op het gebied van architectuur en (ontwikkelings)infrastructuur
  6. +
  7. Onderwerpen/kwesties onder de aandacht brengen die van belang zijn voor de sturing/ontwikkeling + van dit project
  8. +
+

De TSC bestaat uit de volgende leden:

+
    +
  1. TBD
  2. +
  3. TBD
  4. +
+
+

TBD moet worden ingevuld

+
+

Maintainers

+

Maintainers (onderhouders) zijn verantwoordelijk voor het onderhoud van delen van de codebase. +Beheerders hebben de volgende verantwoordelijkheden:

+
    +
  1. Coördineren van de ontwikkelingsactiviteiten
  2. +
  3. Zorgen dat code-/documentatiebeoordelingen worden uitgevoerd
  4. +
  5. Coördineren van Pull Requests
  6. +
  7. Coördineren van opvolging van bugs
  8. +
  9. Coördineren van vragen
  10. +
  11. Bij lange discussies of ruzies kunnen onder meer maintainers om een besluit van de community raad + vragen.
  12. +
+

De huidige maintainers van dit project zijn:

+
    +
  1. TBD
  2. +
  3. TBD
  4. +
+
+

TBD moet worden ingevuld

+
+

Elk community lid of contributor kan een vraag stellen of een issue melden door het toevoegen van +een GitHub issue (zie Contribution Guide.

+

Contributors

+

Onder Contributors (bijdragers) valt iedereen van de community die bijdraagt aan code, documentatie +of andere technische artefacten van het project.

+

Iedereen kan contributor worden.

+

Er wordt geen toewijding aan het project verwacht, geen specifieke vaardigheidsvereisten en geen +selectieproces. Om een contributor te worden, hoeft een lid van de community alleen maar een of +meerdere acties uit te voeren die gunstig zijn voor het project.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/nieuw-project/index.html b/nieuw-project/index.html new file mode 100644 index 0000000..56f8a35 --- /dev/null +++ b/nieuw-project/index.html @@ -0,0 +1,789 @@ + + + + + + + + + + + + + + + + + + + + + + Nieuw Open Source Project - OSPO-NL Kennisbank + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+ +
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 0000000..55a0a25 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":"

De documentatie is nog volop in ontwikkeling. Via Pull Requests en Issues ontvangen we graag bijdragen. Zie daarvoor onze Contributing Guide.

Welkom bij de OSPO-NL Kennisbank!

De OSPO-NL kennisbank is een verzameling van kennis en best practices voor het opzetten en uitvoeren van OSPO's bij organisaties in Nederland.

Deze kennisbank dient als startpunt met voornamelijk verwijzingen naar andere bronnen waarbij de Nederlandse vertalingen hier verzameld kunnen worden als deze elders (nog) niet te vinden. Bijdragen aan de (overwegend) Engelse bronnen mag natuurlijk ook

Kijk bijvoorbeeld eens:

  • bij onze verzameling best practices
  • bij hoe begin ik een nieuw project
  • bij externe bronnen

Uiteraard volgen wij onze eigen suggesties en zijn onze eigen 'voorzieningen' te vinden in Community.

"},{"location":"best-practices/","title":"Best practices","text":"

Hier vind je alle best pratices van de OSPO-NL community.

"},{"location":"best-practices/DCO/","title":"Developer Certificate of Origin (DCO)","text":"

Veel projecten vereisen tegenwoordig een DCO als juridische zekerheid over de bijdrage. Als ontwikkelaar of organisatie teken je op dat moment o.a. voor dat de code die je bijdraagt een eigen creatie is, of compatible is met de licentie van het projecten.

"},{"location":"best-practices/DCO/#doel","title":"Doel","text":"

Het doel van Developer Certificate or Origin (DCO) is om juridische gevolgen voor OS project te mitigeren wanneer een contributor code toevoegt aan het OS-project dat hij juridisch niet had mogen toevoegen.

"},{"location":"best-practices/DCO/#voorbeeld","title":"Voorbeeld","text":"

(voorbeeld van Developer Certificate of Origin website)

Developer Certificate of Origin\nVersion 1.1\n\nCopyright (C) 2004, 2006 The Linux Foundation and its contributors.\n\nEveryone is permitted to copy and distribute verbatim copies of this\nlicense document, but changing it is not allowed.\n\n\nDeveloper's Certificate of Origin 1.1\n\nBy making a contribution to this project, I certify that:\n\n(a) The contribution was created in whole or in part by me and I\n    have the right to submit it under the open source license\n    indicated in the file; or\n\n(b) The contribution is based upon previous work that, to the best\n    of my knowledge, is covered under an appropriate open source\n    license and I have the right under that license to submit that\n    work with modifications, whether created in whole or in part\n    by me, under the same open source license (unless I am\n    permitted to submit under a different license), as indicated\n    in the file; or\n\n(c) The contribution was provided directly to me by some other\n    person who certified (a), (b) or (c) and I have not modified\n    it.\n\n(d) I understand and agree that this project and the contribution\n    are public and that a record of the contribution (including all\n    personal information I submit with it, including my sign-off) is\n    maintained indefinitely and may be redistributed consistent with\n    this project or the open source license(s) involved.\n

Met Developer Certificate or Origin (DCO) geeft je als contributor bij elke commit expliciet aan dat het je het recht heeft om deze code bij te dragen aan het OS-project en je begrijpt dat je code zal worden gebruikt door het project. Het is dan ook belangrijk dat je als auteur zelf de DCO \u2018ondertekent\u2019.

"},{"location":"best-practices/DCO/#commit-sign-off-door-een-contributor","title":"Commit sign off door een contributor","text":"

Het is de bedoeling dat ieder commit een regel bevat waarin je aangeeft wie de bijdrage doet en dat je ervoor tekent dat de code voor je het recht hebt deze code bij te dragen en je begrijpt dat je code zal worden gebruikt door het OS-project.

Signed-off-by: Username <myname@organization.org>

Op de commandline kan dit worden uitgevoerd met een flag op het commit commando:

git commit --signoff of git commit -s

"},{"location":"best-practices/DCO/#via-de-github-online-interface","title":"Via de GitHub online interface","text":"

Het komt voor dat je een kleine wijziging wilt doorvoeren via de online interface van GitHub. Je kunt dan zelf deze regel toevoegen. Omdat de kans groot is dat je vergeet, heeft Github een feature ge\u00efntroduceerd om dit automatische voor je te doen. Deze github feature is kan in- of uitgeschakeld worden voor de GitHub organisatie.

Voor andere github organisatie waar deze github feautre niet geactiveerd is, zijn er ook browser plugins beschikbaar die dit automatisch voor je doen (zoals GitHub - scottrigby/dco-gh-ui: Browser extension adds DCO Signed-off-by line to commits made with the GitHub browser UI).

"},{"location":"best-practices/DCO/#achteraf-wijzigen","title":"Achteraf wijzigen","text":"

Heb je al een commit gedaan zonder de sign-off, dan kan je dat niet meer zo eenvoudig aanpassen via de GitHub UI. Er zijn een aantal mogelijkheden:

Commit message(s) aanpassen: als je lokaal een git checkout hebt, kan je met dit commando het laatste commit message aanpassen: git commit --amend --signoff

Het is ook mogelijk om meerdere commits te herschrijven: git rebase --interactive --ammend --signoff

Na het herschrijven zal je moeten pushen met de --force optie om de git historie op de remote te overschrijven.

Opnieuw commit maken: soms is het eenvoudiger om opnieuw te beginnen en gewoon de wijziging opnieuw te maken, bijvoorbeeld op een andere branch. Dan kan je op dat moment wel de signoff meenemen.

DCO check override: maintainers kunnen de DCO check overrulen om zo de commits zonder signoff toch te mergen. Het is aan te raden om dan een comment te plaatsen bij het pull-request dat eigenlijk de DCO wel ondertekend is. Het Linkerd project hanteert daarvoor de volgende conventie:

\"I agree to the DCO for all the commits in this PR.\" - see linkerd2/CONTRIBUTING.md

"},{"location":"best-practices/DCO/#editor-ondersteuning","title":"Editor ondersteuning","text":"

Als je VS Code gebruikt en standaard de sign off wilt laten doen, kun je daarvoor de git.alwaysSignOff setting op true zetten. (zie voorbeeld in het OSPO-NL project)

"},{"location":"best-practices/GitHub/","title":"GitHub","text":"

Tips voor het gebruik van GitHub en het inrichten van de GitHub organisatie.

"},{"location":"best-practices/GitHub/#github-repository","title":".github repository","text":"

De .github repositorynaam in je organisatie is gereserveerd voor organisatiebrede configuraties. Enkele functionaliteiten die beschikbaar zijn door bestanden toe te voegen aan deze repository:

  • Organization profile om meer tekst en uitleg te geven bij je organisatie.
  • Default community health files de standaard informatie zoals een CODE_OF_CONDUCT en CONTRIBUTING file die dan geldt voor alle repositories in de organisatie.
  • Issue en Pull Request templates die actief zijn voor alle repositories in de organisatie.
  • Workflow templates als startpunt voor een nieuwe GitHub Actions workflow.

Zie bijvoorbeeld de .github repository van GitHub zelf.

"},{"location":"best-practices/introductie-oss/","title":"Introductie Open Source Sofware","text":""},{"location":"best-practices/introductie-oss/#1-open-source-software","title":"1. Open Source Software","text":""},{"location":"best-practices/introductie-oss/#11-open-source-software-definitie","title":"1.1 Open Source Software definitie","text":"

Open source software (OSS) is software die gebouwd is op basis van broncode waaraan een open source software licentie is verbonden. Die licentie geeft een eindgebruiker van de software het recht op inzage in de broncode waaruit de software is opgebouwd, daar aanpassingen op te doen en de aangepaste broncode (en verbeterde software) verder te verspreiden. Wanneer software en/of broncode waaraan een OSS-licentie is verbonden niet gedeeld wordt buiten de organisatie, dan gelden deze rechten niet. Broncode kan ook openbaar gemaakt worden zonder er een OSS-licentie aan te verbinden. In dat geval blijft de broncode auteursrechtelijk beschermd. Dat betekent dat de broncode wel bekeken en bestudeerd mag worden, maar mag worden niet aangepast of verder verspreid.

"},{"location":"best-practices/introductie-oss/#12-voordelen-van-open-source-software","title":"1.2 Voordelen van Open source Software","text":"

Over het algemeen is open source een manier van werken waarbij auteurs de broncode vrij beschikbaar stellen voor anderen die de code willen bekijken, kopi\u00ebren, ervan leren, aanpassen of delen. Wat deze manier van werken betekent voor een organisatie, hangt af van de context van die organisatie.

Voor een commerci\u00eble sofwareontwikkelaar biedt open source toegang tot state-of-the-art technologie en kan het diens innovatie- en ontwikkelprocessen versnellen en licentiekosten besparen. Het vergroot de hulpmiddelen waarover de organisatie kan beschikken. In de context van het openbaar bestuur zijn de voordelen breder. Open source is een strategisch beleidsinstrument om maatschappelijke waarde te realiseren.

Publieke waarden - Een belangrijk voordeel van een openbare broncode is dat de werking van de sofware en de functies die daarmee worden uitgevoerd voor iedereen inzichtelijk zijn. Dat inzicht geef vertrouwen in de werking en past in het streven naar een transparante overheid. Openbare overheidsinformatie moet daarnaast zoveel als mogelijkheid herbruikbaar zijn. Dat regel je het makkelijkst door er ook een OSS-licentie aan te verbinden. - Open source biedt vele mogelijkheden om op nieuwe manieren samen te werken met ketenpartners en medeoverheden. Het draagt daarmee ook bij aan efectief en effici\u00ebnt openbaar bestuur. - Open source kan verder de mogelijkheden tot samenwerking met inwoners en ondernemers vergroten. En daarmee de participatie van de samenleving in het openbaar bestuur versterken, en de legitimiteit en het draagvlak voor te maken keuzen in beleid en uitvoering vergroten.

Veiligheid - Openbaarheid van de broncode biedt derden de kans om de sofwarekwaliteit te toetsen en op fouten of risico\u2019s te onderzoeken. Dit kan bijdragen aan de veiligheid en betrouwbaarheid (veel-ogen-principe) van de sofware. - Derden kunnen verbetervoorstellen doen.

Efficiency en innovatie - Open source bevordert hergebruik en verlaagt daarmee de ontwikkelkosten van sofware. - Daarnaast stimuleert open source innovatie en economische groei, vanwege goedkopere toegang tot sofware en mogelijkheden om deze te vermarkten en te benuten in eigen diensten. Ontwikkelaars kunnen gebruik maken van elkaars idee\u00ebn. - Open source trekt menselijk kapitaal aan, omdat veel sofwareontwikkelaars bij voorkeur werken met open source.

Flexibiliteit en onafankelijkheid - Open source verhoogt de fexibiliteit in het gebruik van sofware en verkleint de kans op (kostbare) migratietrajecten, omdat de afankelijkheid van \u00e9\u00e9n leverancier wordt vermeden (vendor lock-in). Het maakt de overheid soevereiner en minder afankelijk van (grote, machtige, buitenlandse) marktpartijen.

"},{"location":"best-practices/introductie-oss/#bronnen","title":"Bronnen","text":"
  • Open Overheid - Opensourcewerken (pdf)
"},{"location":"best-practices/open-source-software-licenties/","title":"Open Source Software licenties","text":"

Nu we meer en meer gebruik maken van Open Source software, leek het me een goed idee om nog een keer stil te staan bij Open Source Software (OSS) Licenties en waar je op moet letten. Immers de ene OSS-licentie is de andere niet.

"},{"location":"best-practices/open-source-software-licenties/#wat-is-een-open-source-software-licentie","title":"Wat is een Open Source Software Licentie?","text":"

Alles wat je maakt valt standaard onder het auteursrecht (copyright) als onderdeel van het intellectueel eigendomsrecht (IE-recht) en mag dus niet zomaar door derden, zonder jouw toestemming, worden (her)gebruikt of gedeeld. Binnen softwareontwikkeling hebben we het dan vooral over het ontwikkelen van broncode. Door aan iemand of groepen een gebruikerslicentie af te geven kunnen met bepaalde voorwaarden de beperkingen van het auteursrecht worden versoepelt. Je kan bijv. specifieke gebruikers een licentie geven de code te mogen gebruiken, te wijzigingen en/of te verspreiden. Een open source software (OSS) licentie standaardiseert de belangrijkste aspecten die nodig zijn voor een vrije omgang met het auteursrecht. Het gebruik van gestandaardiseerde licenties maakt het voor jezelf makkelijker om niet in juridische valkuilen te stappen bij het opstellen van een licentie en het geeft gebruikers sneller duidelijkheid wat je precies voor ogen hebt met je broncode. Daar bovenop worden de kernwaarden van OSS (zoals verwoord door de Open Source Initiative) naar de buitenwereld gecommuniceerd. Het betreft dan:

  • Vrij recht op verdere distributie
  • Vrijheid tot aanpassingen en afleiden van werk
  • Verregaande uitsluiting van verantwoordelijkheid van de auteurs op het (her)gebruik van hun werk
  • Bewaking van de integriteit van de auteurs
  • Bewaking van digitale rechten.

Een OSS-licentie regelt daarmee (tot zekere hoogte) verschillende aspecten rond IE-rechten en aansprakelijkheid. Zonder het verbinden van een OSS licentie aan broncode is er van OSS geen sprake. Broncodes kunnen nog steeds wel ingezien worden t.b.v. transparantie, maar niet gebruikt worden (door anderen) voor doorontwikkeling.

Het effect van OSS is dat de code van software open en vrij beschikbaar is voor iedereen, zodat iedereen voort kan bouwen op de software, de eventuele bugs in software kan herstellen, de software kan voorzien van nieuwe features en de software kan integreren in andere applicaties of delen hergebruiken in compleet andere situaties. In zijn algemeenheid hebben OSS licenties bovenstaande elementen gemeen.

"},{"location":"best-practices/open-source-software-licenties/#welke-type-oss-licenties-zijn-er","title":"Welke type OSS Licenties zijn er?","text":"

Vaak worden OSS licenties onderscheiden op het type wederkerigheid dat gehanteerd wordt. Dat principe wordt ook wel \u2018copyleft\u2019 genoemd, om de tegenhang met het protectionistische auteursrecht aan te geven. We maken dit onderscheid omdat de mate van wederkerigheid een sterk effect heeft op de regels die moeten worden nageleefd. We onderscheiden dan 3 smaken:

"},{"location":"best-practices/open-source-software-licenties/#permissive-toegeeflijk","title":"Permissive (toegeeflijk)","text":"

De broncode mag naar eigen inzicht worden aangepast waaarbij de aangepaste broncode niet opnieuw openbaar gemaakt hoeft te worden. Dit type broncode kan dus vrij gebruikt worden in gesloten software. In geval van de Apache 2.0 licentie ben je wel verplicht kenbaar te maken welke eventuele veranderingen er hebben plaatsgevonden op de oorspronkelijke code. In de meeste gevallen ben je ook verplicht om een verwijzing naar de oorspronkelijk code en auteurs te op te nemen in het eindproduct. Waarbij de MIT-0 variant die laatste verplichting echter weer niet kent. Bekende voorbeelden zijn: Apache 2.0, BSD en MIT.

"},{"location":"best-practices/open-source-software-licenties/#reciprocal-weak-copyleft-zwak-wederkerig","title":"Reciprocal / weak copyleft (zwak wederkerig)","text":"

Deze licentie is iets beperkter dan de permissive licenties. Je bent namelijk verplicht om alle veranderingen aan de oorspronkelijke code ook weer OSS beschikbaar te maken. Dus niet alleen kenbaar maken welke verbeteringen er zijn gedaan, maar de letterlijk verbeterde broncode. De software waarbinnen de betreffende broncode is gebruikt hoeft niet OSS te zijn als geheel. Zo kunnen broncodes met deze licenties ook zonder problemen in gesloten software gebruikt worden. Bekende voorbeelden zijn: MPL v2.0, EUPL v1.2

"},{"location":"best-practices/open-source-software-licenties/#restricted-strong-copyleft-sterk-wederkerig","title":"Restricted / strong copyleft (sterk wederkerig)","text":"

Deze broncode brengt bovenop de vorige licentie nog een zogenaamd 'viraal' effect mee. Dat betekent dat de softwareoplossing waarbinnen dit type broncode wordt gebruikt 'ge\u00efnfecteerd' raakt door deze licentie. Als je dus GPLv3 broncode gebruikt in een groter geheel, dan moet het grotere geheel ook onder de GPLv3 licentie beschikbaar gesteld worden. Vooorbeeld: Software A bestaat uit component A (MIT), B (EUPL) en C (GPLv3). Dat betekent dat software A als geheel onder de GPLv3 licentie valt. Component A en component B kunnen nog steeds wel onafhankelijk hergebruikt worden onder hun oorspronkelijke licentie. Strong copyleft licenties zijn dus niet verenigbaar met gesloten software. Het bekendste voorbeeld is: GPLv3.

Een variant van de GPLv3 is de LGPLv3. De LGPL vermindert het virale effect door een totale software oplossing niet te infecteren met de licentie van het hergebruikte component wanneer het als library (soft-linked) wordt gekoppeld.

"},{"location":"best-practices/open-source-software-licenties/#noten","title":"Noten","text":"

Een OSS licentie uit de smaak \u2018Restricted / strong copyleft\u2019 vergt meer kennis van deze betreffende OSS licentie om deze juist te kunnen toe te passen. Als je gebruikt maakt van OSS met een OSS licentie uit deze smaak dien je met meer voorwaarden rekening te houden. Wanneer je onjuist rekening houd met deze voorwaarden loop je het risico dat je aangesproken / aangeklaagd voor auteursrechtschending door de oorspronkelijke maker.

Met een OSS licentie geef je de controle uit handen op welke manier je broncode gebruikt gaat worden in nieuwe toepassingen. Je broncode kan dus gebruikt worden voor de ontwikkeling van levensreddende medicijnen, maar net zo goed in een kernwapen waarmee de mensheid wordt vernietigd.

Verder is het goed om te realiseren dat een OSS licentie geen openbaarheid afdwingt. Wat een OSS licentie afdwingt is het recht van vrije distributie. Dat recht wordt pas actief wanneer er sprake is van daadwerkelijke distrubitie oftewel verspreiding van de software en/of broncode. Wanneer je binnen je organisatie aan OSS software werkt die verder niet buiten de organisatie is gedeeld, dan is er geen sprake van verspreiding. Het recht op vrije distributie geldt dan dus niet. Het voordeel hiervan is dat je in organisatorisch verband (bijv. in een stichting) toch elkaar de vrijheid kan geven aan broncode te werken, zonder de plicht de broncode openbaar te moeten maken. Alleen, op het moment dat de broncode of het eindproduct wel buiten je organisatie bewust is gedeeld, dan heeft iedereen die aan de broncode heeft gewerkt het recht (die versie van) de broncode ook verder te verspreiden.

Andersom kan broncode ook openbaar worden gemaakt zonder OSS licentie. Daarmee blijft de broncode auteursrechtelijk beschermd en kan het dus niet worden hergebruikt, aangepast of worden gedeeld. Openbaarmaking geeft wel inzicht in de broncode.

"},{"location":"best-practices/open-source-software-licenties/#ospo-reviewed-license-checklist","title":"OSPO Reviewed License checklist","text":"

Om de toetsing en het gebruik van OSS licenties makkelijker te maken, kan een OSPO Reviewed License checklist helpen. OSPO Reviewed License checklist bevat een overzicht van veel gebruikte OSS licenties en of deze toegestaan zijn voor gebruik binnen je organisatie. Hiermee kun je een helder referentiekader neer te zetten voor je organisatie m.b.t. gebruik van OSS licenties.

Bronnen:

  • GNU GPL FAQ
  • Mozilla MPL FAQ (Q6)
"},{"location":"best-practices/project-launch-checklist/","title":"Project Launch Checklist","text":"

Gefeliciteerd! Je leest dit omdat je van plan bent om je project te open sourcen!

Deze checklist is gecre\u00eberd om je te helpen om je eigen open source projecten te starten waar dit strategische relevant is. Hiermee nemen we je mee in de zaken waar je rekening mee moet houden voor dat je besluit een open source project te starten.

Vul voor jezelf deze checklist in en neem contact op met de OSPO om het te bespreken.

Deze checklist is bedoeld voor de grotere softwareprojecten. Voor kleine projecten van enkele honderden regels code - zoals een klein scriptjes - voldoet een beperkte lijst van criteria.

Deze checklist afgeleid van de Starting an Open Source Project lijst van de Linux Foundation. De GitHub Default Community Health Files is ook een goede bron van inspiratie.

"},{"location":"best-practices/project-launch-checklist/#stap-1-overwegingen","title":"Stap 1: Overwegingen","text":"
  1. Evalueer de mogelijkheden om lid te worden van een bestaand open source-project
  2. Evalueer hoe re\u00ebel het is dat andere bedrijven willen mee ontwikkelen aan dit project
"},{"location":"best-practices/project-launch-checklist/#stap-2-business-strategie-plan","title":"Stap 2: Business strategie & plan","text":"
  1. Bepaal en zet open source doelen voor je project
  2. Stel vast wie je beoogde doelgroep is
  3. Beargumenteer waarom het van toegevoegde waarde is voor onze organisatie om het te open sourcen
  4. Bepaal welke deel van je project je wilt open sourcen (welke repositories, inclusief URLs)
  5. Bepaal wie de kosten gaat dragen van voor maintainen van open source project (incl. infrastructuur, open source community support en open source activiteiten)
  6. Zorg dat je minimaal 3 jaar commitment hebt om het project te maintainen
  7. Stel vast of de OSPO & Enterprise Architecten akkoord zijn met je plan.
"},{"location":"best-practices/project-launch-checklist/#stap-3-juridische-beoordeling","title":"Stap 3: Juridische beoordeling","text":"
  1. Check of het open sourcen van je project impact heeft op het intellectueel eigendom van de organisatie
  2. Bepaal onder welke open source licentie je de code wilt open sourcen. Zie hiervoor aanbevelingen over het kiezen van een licentie
  3. Zorg er voor dat je de gekozen open source-licenties goed begrijpt en volledige naleeft
  4. Overweeg of je ook non-software outputs van de community verwacht, zo ja: bepaal onder welke open source licentie je dat wilt open sourcen. Dit kan een andere licentie zijn dan waaronder je code open sourced.
  5. Bepaal je nog eventuele handelsmerk gerelateerde besluiten noodzakelijk zijn
"},{"location":"best-practices/project-launch-checklist/#stap-4-technische-beoordeling","title":"Stap 4: Technische beoordeling","text":"
  1. Verwijder kritische afhankelijkheden met niet-publieke componenten.
  2. Zorg voor een goede README.md met use-case voorbeelden. Zie Make a Readme.com
  3. Zorg voor een goede CONTRIBUTING.md.
  4. Zorg voor een CODE_OF_CONDUCT.md.
  5. Zorg voor een SUPPORT.md. Zie ons eigen voorbeeld
  6. Verwijder interne opmerkingen en referenties
  7. Zorg voor voldoende code kwaliteit
  8. Zorg ervoor dat coding style is consistent
  9. Update de copyright notities in de source code files
  10. Voeg een licentie notitie in de source code files
  11. Voeg voor een kopie licentie tekst (volgt uit stap 3) toe aan de root directory (LICENSE). Zie ons eigen voorbeeld
"},{"location":"best-practices/project-launch-checklist/#stap-5-governance-en-processen","title":"Stap 5: Governance en processen","text":"
  1. Zorg voor een PROJECT_GOVERNANCE.md waarin de governance structuur beschreven is.
  2. Bepaal wat de roadmap wordt
  3. Zorg voor een code repository, bug reporting en code testing infrastructuur die toegankelijk is voor de community
  4. Cre\u00eber ondersteunden communicatie kanalen, zoals mailing list en wiki
"},{"location":"best-practices/project-launch-checklist/#stap-6-launch-en-maintain","title":"Stap 6: Launch en maintain","text":"
  1. Open het project en start met open source ontwikkel proces
  2. Zorg dat het gebruik van Developer Certificate or Origin (DCO) wordt afgedwongen.
  3. Zorg er voor dat veranderingen aan de roadmap of governance helder gecommuniceerd worden.
  4. Volg best practices zoveel mogelijk & behaal OpenSSF ( formerly CII ) Best Practices badge
"},{"location":"best-practices/project-launch-checklist/#stap-7-branding-en-marketing","title":"Stap 7: Branding en marketing","text":"
  1. Selecteer wie de rol van community advocate op zich neemt
  2. Cre\u00eber marketing strategie om een actieve community te promoten
  3. Zorg dat het project genoemd wordt op publieke pagina's van de organisatie
  4. Moedig en organiseer face-to-face activiteiten voor community building
"},{"location":"best-practices/wetgeving/","title":"Wetgeving & Open Source","text":"

Open Source is op zichzelf geen doel van een rechtmatige overheid. Open Source kan wel een middel zijn om als overheid rechtmatig te handelen. De direct betrok wetgeving zijn de Wet open overheid (Woo), Wet hergebruik overheidsinformatie (Who), Auteurswet en de Wet markt en overheid (Wet M&O).

Over het auteursrecht is al voldoende beschreven op de licenties pagina.

"},{"location":"best-practices/wetgeving/#wet-open-overheid","title":"Wet open overheid","text":"

De Wet Open Overheid (Woo) regelt het recht op informatie over alles wat de overheid doet. Het is de opvolger van de Wet openbaarheid van bestuur (Wob).

"},{"location":"best-practices/wetgeving/#wet-hergebruik-overheidsinformatie","title":"Wet hergebruik overheidsinformatie","text":"

De Wet hergebruik overheidsinformatie (Who) (zie ook Wikipedia over Who) geeft burgers het recht om te verzoeken om al openbaar gemaakte informatie van instellingen met een wettelijke taak te mogen hergebruiken voor andere doeleinden, waaronder commerci\u00eble doeleinden.

"},{"location":"best-practices/wetgeving/#broncode","title":"Broncode","text":"

Er is regelmatig discussie of broncode onderdeel is van het documentbegrip zoals beschreven in de Woo. In de Memorie van toelichting bij Wet implementatie Open data richtlijn (pdf) is hier door Ministerie van Binnenlandse Zaken en Koninkrijksrelaties uitgebreid toelichting op gegeven in hoofdstuk 7.4:

Zoals blijkt uit overweging 30 bij de richtlijn, zijn lidstaten niet verplicht om computerprogramma\u2019s onder de definitie van \u2018document\u2019 te brengen, maar dit is wel toegestaan. In Nederland valt software echter al sinds de implementatie van de eerste richtlijn onder de hergebruikregels.

[...]

Kortom, de afgelopen jaren was het dus al mogelijk om op grond van de Wob een verzoek in te dienen om software openbaar te maken en op grond van de Who een verzoek in te dienen om openbare software voor hergebruik beschikbaar te maken. Gezamenlijk vallen die verzoeken te kwalificeren als een verzoek om software open source te maken.

Aanvullend hierop is in de kamerbrief (pdf) van 16 januari 2023 over de openbaarmaking van de broncode van DigiD door de staatssecretaris de volgende toelichting gegeven:

Transparantie en veiligheid zijn belangrijke waarden van de digitale overheid. Dit geldt ook voor software die de overheid ontwikkelt, zoals ik heb benoemd in mijn Werkagenda Waardengedreven Digitalisering en in lijn met eerder \u2018open source, tenzij\u2019-beleid. Via deze brief informeer ik uw Kamer dat de broncode van de DigiD-app na een Woo-verzoek openbaar is gemaakt, na een open en zorgvuldig proces met de indiener van dit Woo-verzoek.

"},{"location":"bronnen/","title":"Bronnen","text":"

Diverse externe bronnen, zowel Nederlandse als (voornamelijk) Engelse bronnen die bruikbaar zijn voor OSPOs en open source in het algemeen.

  • het Nederlands overzicht van organisaties met OSPOs
  • diverse ondersteunende organisaties voor OSPOs en open source projecten
"},{"location":"bronnen/nederlands-overzicht/","title":"Nederlands overzicht","text":"

Overzicht van organisaties actief in Nederland die Open Source op een gestructureerde manier aanpakken. Dit kan vormgegeven zijn met een Open Source Program Office of op een andere manier waarbij er controle op is.

"},{"location":"bronnen/nederlands-overzicht/#publieke-sector","title":"Publieke sector","text":"

Zie de Wikipedia pagina Publieke sector voor een indicatie van de verschillende organisaties die hieronder vallen. Dit beslaat zowel overheid als semi-overheidsorganisaties.

"},{"location":"bronnen/nederlands-overzicht/#ministeries","title":"Ministeries","text":"
  • Ministerie van Algemene Zaken
  • Ministerie van Binnenlandse Zaken en Koninkrijksrelaties (BZK)
    • BZK
    • ICTU
    • KOOP (Kennis- en Exploitatiecentrum Offici\u00eble Overheidspublicaties)
  • Ministerie van Buitenlandse Zaken
  • Ministerie van Defensie
  • Ministerie van Economische Zaken en Klimaat
    • DICTU
  • Ministerie van Financi\u00ebn
    • Belastingdienst
  • Ministerie van Infrastructuur en Waterstaat
  • Ministerie van Justitie en Veiligheid
    • Nationale Politie
    • Nationaal Cyber Security Center (NCSC)
  • Ministerie van Landbouw, Natuur en Voedselkwaliteit
  • Ministerie van Onderwijs, Cultuur en Wetenschap
  • Ministerie van Sociale Zaken en Werkgelegenheid
  • Ministerie van Volksgezondheid, Welzijn en Sport (VWS)
    • VWS
  • Tweede Kamer
"},{"location":"bronnen/nederlands-overzicht/#agentschappen","title":"Agentschappen","text":"
  • Ministerie van Algemene Zaken
  • Dienst Publiek en Communicatie (DPC)
  • Ministerie van Binnenlandse Zaken en Koninkrijksrelaties (BZK)
    • Logius
    • Logius Standaarden
  • Ministerie van Infrastructuur en Waterstaat
    • Rijkswaterstaat
  • Ministerie van Volksgezondheid, Welzijn en Sport (VWS)
    • RIVM
  • Koninklijk Nederlands Meteorologisch Instituut (KNMI)
    • KNMI
"},{"location":"bronnen/nederlands-overzicht/#zelfstandig-bestuursorgaan","title":"Zelfstandig bestuursorgaan","text":"
  • Kadaster
  • Centraal Bureau voor de Statistiek
  • Koninklijke Bibliotheek
  • Nationaal Archief
  • Alliander
  • Common Ground
"},{"location":"bronnen/nederlands-overzicht/#private-sector","title":"Private sector","text":"
  • Philips
  • TomTom
"},{"location":"bronnen/ondersteunende-organisaties/","title":"Ondersteunende organisaties","text":"

Overzicht van organisaties die op specifieke thema's ondersteuning bieden aan OSPO's of de open source community.

"},{"location":"bronnen/ondersteunende-organisaties/#project-governance","title":"Project governance","text":""},{"location":"bronnen/ondersteunende-organisaties/#foundation-for-public-code","title":"Foundation for Public Code","text":"

Codebase stewardship en diverse hulpmiddelen.

"},{"location":"bronnen/ondersteunende-organisaties/#linux-foundation","title":"Linux Foundation","text":"

Leveranciersonafhankelijke organisatie voor project governance. Koepel voor deelorganisaties met een specifieker aandachtsgebied.

"},{"location":"bronnen/ondersteunende-organisaties/#eclipse-foundation","title":"Eclipse Foundation","text":"

Leveranciersonafhankelijke organisatie voor project governance. Koepel voor werkgroepen met een specifieker aandachtsgebied.

"},{"location":"bronnen/ondersteunende-organisaties/#apache-foundation","title":"Apache Foundation","text":"

Leveranciersonafhankelijke organisatie voor project governance, met name webtoepassingen en databases.

"},{"location":"bronnen/ondersteunende-organisaties/#ospo-kennis-en-kunde","title":"OSPO kennis en kunde","text":""},{"location":"bronnen/ondersteunende-organisaties/#todo-group","title":"TODO Group","text":"

Community met OSPOlogy bijeenkomsten en diverse gemeenschappelijke hulpmiddelen

"},{"location":"bronnen/ondersteunende-organisaties/#ospozone","title":"OSPO.zone","text":"
  • OSPO OnRamp bijeenkomsten.
  • Good Governance Initiative richtlijnen.
"},{"location":"bronnen/ondersteunende-organisaties/#joinup","title":"Joinup","text":"

Initiatief vanuit de Europese Commissie voor het delen van open source IT-oplossingen en goede methodieken.

"},{"location":"bronnen/ondersteunende-organisaties/#subsidies","title":"Subsidies","text":""},{"location":"bronnen/ondersteunende-organisaties/#nlnet","title":"NLNet","text":"

Financi\u00eble steun voor organisaties en personen die bijdragen de informatiesamenleving via diverse fondsen. NGI0 projecten hebben toegang tot ondersteunende diensten om de kwaliteit en organisatie van projecten te verbeteren.

"},{"location":"bronnen/ondersteunende-organisaties/#security","title":"Security","text":""},{"location":"bronnen/ondersteunende-organisaties/#open-source-security-foundation-openssf","title":"Open Source Security Foundation (OpenSSF)","text":"
  • Diverse Technical Working Groups en projecten.
  • Scoreccard om GitHub projecten op veel punten te beoordelen.
  • Best Practices Badge Program zelf-certificering van securitymaatregelen.
"},{"location":"community/","title":"Community","text":"

Hier vind je alle informatie over de OSPO-NL community. Check:

  • Over OSPO-NL hoe wij zijn ontstaan
  • onze Contributing Guide
  • onze Code of Conduct (gedragscode)
  • waar je meer ondersteuning (support) kunt vinden
  • onze backlog
"},{"location":"community/CODE_OF_CONDUCT/","title":"Code of Conduct","text":"

Onze gedragscode in het Nederlands, internationaal bekend als 'Code of Conduct'.

"},{"location":"community/CODE_OF_CONDUCT/#onze-belofte","title":"Onze belofte","text":"

In het belang van het bevorderen van een open en gastvrije omgeving, beloven wij als contributors en maintainers om deelname aan ons project en onze gemeenschap / community een intimidatievrije ervaring voor iedereen te laten zijn, ongeacht leeftijd, lichaamsgrootte, handicap, etniciteit, geslachtskenmerken, genderidentiteit en -expressie, ervaringsniveau, opleiding, sociaal-economische status, nationaliteit, persoonlijk uiterlijk, ras, religie of seksuele identiteit en geaardheid.

For non-Dutch native readers: In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

BUT because we strive for as much adoption in The Netherlands most content is expressed in Dutch.

"},{"location":"community/CODE_OF_CONDUCT/#onze-normen","title":"Onze normen","text":"

Voorbeelden van gedrag dat bijdraagt aan een positieve leefomgeving voor onze community omvatten:

  • Empathie tonen en vriendelijkheid tegenover andere mensen
  • Respect hebben voor verschillende meningen, standpunten en ervaringen
  • Constructieve feedback geven en vriendelijk accepteren
  • Verantwoordelijkheid aanvaarden en excuses aanbieden aan degenen die getroffen zijn door onze fouten, en leren van de ervaring
  • Focussen op wat het beste is, niet alleen voor ons als individuen, maar ook voor de algehele community

Voorbeelden van onaanvaardbaar gedrag zijn:

  • Het gebruik van seksueel getinte taal of beelden en seksuele aandacht of benadering
  • Trollen, beledigende of denigrerende opmerkingen en persoonlijke of politieke aanvallen
  • Publieke of private intimidatie
  • Het publiceren van de priv\u00e9gegevens van anderen, zoals een fysieke of e-mail adres, zonder hun uitdrukkelijke toestemming
  • Ander gedrag dat redelijkerwijs als ongepast kan worden beschouwd in een professionele instelling
"},{"location":"community/CODE_OF_CONDUCT/#onze-verantwoordelijkheden","title":"Onze verantwoordelijkheden","text":"

Projectbeheerders zijn verantwoordelijk voor het verduidelijken en handhaven van onze normen van acceptabel gedrag en zullen passende en eerlijke corrigerende maatregelen nemen op elk geval van onaanvaardbaar gedrag.

Project maintainers hebben het recht en de verantwoordelijkheid om te verwijderen, te bewerken of af te wijzen elke opmerking, commits, code, wiki-bewerkingen, problemen en andere bijdragen die niet afgestemd op deze Gedragscode, of om tijdelijk of permanent bijdragen te weigeren van gedrag dat zij menen dat ongepast, bedreigend, beledigend of schadelijk is.

"},{"location":"community/CODE_OF_CONDUCT/#scope","title":"Scope","text":"

Deze Gedragscode is van toepassing binnen alle gemeenschapsruimten, en ook wanneer een individu officieel de gemeenschap vertegenwoordigt in een openbare ruimte. Voorbeelden van het vertegenwoordigen van onze gemeenschap zijn onder meer het gebruik van een officieel e-mailadres, posts via een officieel social media-account, of handelen als een aangewezen persoon / vertegenwoordiger op een online of offline evenement.

"},{"location":"community/CODE_OF_CONDUCT/#handhaving","title":"Handhaving","text":"

Gevallen van beledigend, intimiderend of anderszins onaanvaardbaar gedrag kunnen worden gerapporteerd aan de gemeenschapsleiders die verantwoordelijk zijn voor handhaving via een issue met label Bug. Later volgen nog andere mogelijkheden. Alle klachten worden snel en eerlijk beoordeeld en onderzocht.

Alle community leaders zijn verplicht om de privacy en veiligheid van de melder van elk incident te respecteren.

"},{"location":"community/CODE_OF_CONDUCT/#attribution","title":"Attribution","text":"

This Code of Conduct is adapted from the Contributor Covenant, version 1.4 and 2.0, and was generated by contributing-gen.

"},{"location":"community/CONTRIBUTING/","title":"Contributing Guide","text":"

Voor het maken van een eigen CONTRIBUTING kijk onderaan bij Attribution

Om te beginnen, hartelijk dank voor je interesse om bij te dragen aan dit OSPO-NL initiatief! Door te delen in kennis en ervaring en samen te werken komen we tot 'best practices' en hulp om Open Source projecten in Nederland goed te organiseren.

For non-Dutch native readers: First off, thank you for your interest to contribute to this OSPO-NL initiative! By sharing knowledge and experiences and collaborate we'll be able to produce Best Practices and help to set up Open Source projects in The Netherlands. Because the gap between needs and knowledge in The Netherlands the content of this initiative will be mainly in Dutch.

We are very sorry if this creates a feeling of not being inclusive ... which is of course against our Code of Conduct; We would like to be as inclusive as possible!

BUT to choose to write mainly in Dutch we will be more inclusive to the less equiped and Dutch native readers of our content and those are the primary focus of these practices. Nonetheless, much content is probably not managed here or produced inside these repositories but will be linked to or just translated summaries of content elsewhere.

Door deze richtlijnen te volgen, communiceer je dat je de tijd respecteert van de ontwikkelaars die dit open source-project beheren en ontwikkelen. In ruil daarvoor moeten ze dat respect beantwoorden bij het aanpakken van uw melding, het beoordelen van wijzigingen en het helpen afronden van uw pull requests.

Houd een open geest! Het verbeteren van documentatie, melden van fouten, of bijdragen aandragen zijn voorbeelden van nuttige bijdragen. Veel informatie is mogelijk al ergens beschikbaar, waarschijnlijk in het Engels, en het verwijzen naar andere documentatie helpt ons allemaal. Helemaal als daar samenvattingen (of volledige) vertalingen van in het Nederlands toegevoegd worden (daar of in dit project)!

Mochten bijdragen niet voldoen aan deze richtlijnen dan houden wij ons de vrijheid om commentaren te negeren en bijdragen te sluiten. Daarbij zullen wij verwijzen naar deze richtlijnen / Contributing Guide.

En als je het project leuk vindt, maar gewoon geen tijd hebt om bij te dragen, is dat prima. Er zijn andere eenvoudige manieren om het project te steunen en je waardering te tonen, waar we ook erg blij mee zijn:

  • Geef het project een ster
  • Tweet erover
  • Verwijs naar dit project in de readme van uw project
  • Noem het project op lokale meetups en vertel het aan je vrienden/collega's
"},{"location":"community/CONTRIBUTING/#basis-regels","title":"Basis regels","text":""},{"location":"community/CONTRIBUTING/#gedragscode","title":"Gedragscode","text":"

Dit project en iedereen die eraan deelneemt, wordt bestuurd door de OSPO-NL Gedragscode. Door deel te nemen, wordt van u verwacht dat u zich aan deze code houdt. Gelieve onaanvaardbaar gedrag te melden volgens de Gedragscode#Handhaving.

"},{"location":"community/CONTRIBUTING/#verwachtingen","title":"Verwachtingen","text":"

Vrijwel alle content is beschreven in Markdown. Daarbij maken wij gebruik van MkDocs Material om alle documentatie te publiceren. Bij gebruik van plaatjes is het fijn als de bron daarvan ook onderdeel is van dit project ... en bij voorkeur in een open formaat. Dat betekent dat deze aangepast en bijgewerkt kunnen worden zonder kosten te maken voor tools. Nogmaals: bij voorkeur.

  • Zorg dat bijdragen cross-platform uitwisselbaar zijn: Windows, Mac, Linux.
  • Zorg dat code en documentatie compleet is en voldoet aan de styleguides.
  • Maak issues aan voor elke grote wijziging en verbetering die je graag wilt maken. Bespreek de dingen transparant en vraag community feedback.
  • Probeer bijdragen compact en klein te houden; dat draagt bij aan het behoud van overzicht en wijzigingen.
  • Wees open naar nieuwe mensen en moedig nieuwe bijdragen aan van alle achtergronden.
  • Issues behoren van een passend label te zijn voorzien:
  • Bug betekent een urgent probleem in de community of in de documentatie
  • Enhancement betekent een bijdrage voor uitbreiding
  • Question betekent een vraag
"},{"location":"community/CONTRIBUTING/#ik-heb-een-vraag","title":"Ik heb een vraag","text":"

Als je een vraag wilt stellen, gaan we ervan uit dat je de beschikbare documentatie hebt gelezen.

Voordat je een vraag stelt, kun je het beste zoeken naar bestaande issues die je kunnen helpen. Als u een geschikt probleem hebt gevonden en nog steeds verduidelijking nodig heeft, kunt u uw vraag in dit nummer schrijven. Het is ook raadzaam om eerst op internet naar antwoorden te zoeken.

Als je dan toch de behoefte voelt om een vraag te stellen en verduidelijking nodig hebt, raden we het volgende aan:

  • Open een issue.
  • Geef het issue een passend label (zie verwachtingen).
  • Geef zoveel mogelijk context over waar je tegenaan loopt.
  • Indien van toepassing: Lever technische afhankelijkheden die relevant lijken.

We zullen het probleem dan zo snel mogelijk in behandeling nemen.

"},{"location":"community/CONTRIBUTING/#ik-wil-bijdragen","title":"Ik wil bijdragen","text":"

Juridische mededeling

Wanneer u bijdraagt aan dit project, moet u ermee instemmen dat u 100% van de inhoud hebt geschreven, dat u over de benodigde rechten op de inhoud beschikt en dat de inhoud die u bijdraagt onder de projectlicentie mag worden geleverd.

"},{"location":"community/CONTRIBUTING/#issues-melden","title":"Issues melden","text":""},{"location":"community/CONTRIBUTING/#voordat-u-een-issue-indient","title":"Voordat u een issue indient","text":"

Een goed issue zou er niet voor moeten zorgen dat anderen u moeten achtervolgen voor meer informatie. Daarom vragen we u om dit zorgvuldig te onderzoeken, informatie te verzamelen en het probleem in detail te beschrijven in uw melding.

  • Zorg ervoor dat u de nieuwste versie gebruikt.
  • Lees de documentatie aandachtig door en ontdek of de functionaliteit al wordt gedekt, misschien door een individuele configuratie.
  • Voer een zoekopdracht uit om te zien of de verbetering al is voorgesteld. Als dit het geval is, voeg dan een opmerking toe aan de bestaande uitgave in plaats van een nieuwe te openen.

Voor dit moment is er alleen documentatie en zijn verdere voorbereidingen niet nodig. Mocht er ooit tools en software componenten opgeleverd worden, dan is het van belang om de details daarvan ook duidelijk te melden en te onderzoeken of het daadwerkelijk een probleem met die software is of dat het wellicht toch een fout in uw omgeving is.

"},{"location":"community/CONTRIBUTING/#hoe-dien-ik-een-goed-issue-in","title":"Hoe dien ik een goed issue in?","text":"

U mag beveiligingsgerelateerde problemen, kwetsbaarheden of issues, inclusief gevoelige informatie, nooit melden aan de issue tracker of elders in het openbaar. In plaats daarvan moeten gevoelige bugs per e-mail naar worden gestuurd.

We gebruiken GitHub-problemen om issue en fouten op te sporen. Als u een probleem met het project tegenkomt:

  • Open een issue. (Omdat we op dit moment niet zeker weten of het een fout is of niet, vragen we je om nog niet over een fout te praten en het probleem niet te labelen.)
  • Leg zo duidelijk mogelijk uit wat u verwacht of wens en geef suggesties voor invulling daarvan.
  • Geef de informatie op die u in het vorige gedeelte hebt verzameld.

Zodra het is ingediend:

  • Het projectteam zal het probleem dienovereenkomstig labelen.
  • Een teamlid zal proberen het issue te begrijpen en op te volgen.
"},{"location":"community/CONTRIBUTING/#meer-hulp","title":"Meer hulp","text":"

Hier zijn een paar vriendelijke (maar Engelse) handleidingen voor meer hulp en achtergronden: First Timers Only en Make A Pull Request

"},{"location":"community/CONTRIBUTING/#verbeteringen-voorstellen","title":"Verbeteringen voorstellen","text":"

Deze sectie begeleidt u bij het indienen van een verbeteringssuggestie voor OSPO-NL, inclusief volledig nieuwe functies en kleine verbeteringen aan bestaande functionaliteit. Door deze richtlijnen te volgen, kunnen beheerders en de community uw suggestie begrijpen en gerelateerde suggesties vinden.

"},{"location":"community/CONTRIBUTING/#voordat-u-een-verbetering-indient","title":"Voordat u een verbetering indient","text":"
  • Zorg ervoor dat u de nieuwste versie gebruikt.
  • Lees de documentatie aandachtig door en ontdek of de functionaliteit al wordt gedekt, misschien door een individuele configuratie.
  • Voer een zoekopdracht uit om te zien of de verbetering al is voorgesteld. Als dit het geval is, voeg dan een opmerking toe aan de bestaande uitgave in plaats van een nieuwe te openen.
  • Ga na of uw idee past binnen de reikwijdte en doelstellingen van het project. Het is aan u om een sterk pleidooi te houden om de ontwikkelaars van het project te overtuigen van de voordelen van deze functie. Houd er rekening mee dat we functies willen die nuttig zijn voor de meerderheid van onze gebruikers en niet slechts voor een kleine subgroep. Als u zich slechts op een minderheid van gebruikers richt, overweeg dan om een bibliotheek met add-ons/plug-ins te schrijven.
"},{"location":"community/CONTRIBUTING/#hoe-dien-ik-een-goede-verbeteringssuggestie-in","title":"Hoe dien ik een goede verbeteringssuggestie in?","text":"

Suggesties voor verbeteringen worden bijgehouden als GitHub issues.

  • Gebruik een duidelijke en beschrijvende titel voor het probleem om de suggestie te identificeren.
  • Geef een stapsgewijze beschrijving van de voorgestelde verbetering met zoveel mogelijk details.
  • Beschrijf het huidige gedrag en leg uit welk gedrag je in plaats daarvan verwachtte te zien en waarom. Op dit punt kunt u ook zien welke alternatieven niet voor u werken.
  • Misschien wilt u schermafbeeldingen en geanimeerde GIF's toevoegen die u helpen de stappen te demonstreren of aan te geven op welk onderdeel de suggestie betrekking heeft. U kunt deze tool gebruiken om GIF's op macOS en Windows op te nemen, en deze tool of deze tool op Linux.
  • Leg uit waarom deze verbetering nuttig zou zijn voor de meeste gebruikers van OSPO-NL. Misschien wil je ook wijzen op de andere projecten die het beter hebben opgelost en die als inspiratie kunnen dienen.
"},{"location":"community/CONTRIBUTING/#review-proces","title":"Review proces","text":"

Om wijzigingen goed te kunnen beheren, volgen en uit te leggen, volgen we een eenvoudig proces van review en Pull Requests (PRs).

  • Wijzigingen wordt nooit direct op de main branch gedaan, maar altijd in een 'feature' branch.
  • Maak een Pull Request aan zodra je klaar bent. Of maak gelijk een Draft Pull Request aan nadat u uw feature branch hebt aangemaakt. Zodra uw wijzigingen klaar zijn voor review, wijzigt u uw Draft PR naar 'Ready for Review'.
  • Een teamlid reviewt de wijzigingen in het Pull Request en geeft commentaar en/of goedkeuring (Approve).
  • Na goedkeuring kan het Pull Request gemerged worden. Hiervoor wordt standaard 'Squash & Merge' gebruikt. In geval dat de PR door een teamlid is ingediend, reviewt een ander teamlid de PR maar wordt de merge overgelaten aan de auteur van de PR.
  • Na de merge dienen bijbehorende issues bijgewerkt te worden zodat deze niet onnodig open blijven staan ofwel beantwoord worden.
"},{"location":"community/CONTRIBUTING/#styleguides","title":"Styleguides","text":""},{"location":"community/CONTRIBUTING/#markdown","title":"Markdown","text":"

Alle documentatie moet 'machine-readable' zijn en tegelijk ook makkelijk leesbaar en onderhoudbaar voor mensen. Daarom maken we gebruik van Markdown. Zie ook GitHub Markdown en de algemene Markdown handleiding (EN) (of zelfs de originele documentatie). De documentatie van het gebruikte Material for MkDocs thema benoemt de opmaak die extra wordt ondersteunt door het thema.

Alinea's worden op of binnen 100 karakters afgekapt om versiebeheer per regel beheersbaar te maken. Dit kan automatisch worden afgedwongen in tooling, bijv. Rewrap in VSCode (keyboard shortcut: alt+Q).

"},{"location":"community/CONTRIBUTING/#bestandsnamen","title":"Bestandsnamen","text":"

Alle bestandsnamen, zowel van bestanden (files) als van mappen (folders), komen terug in de URL van de gepubliceerde documentatie ... en spaties zijn niet zo standaard voor URLs. Daarom worden er GEEN spaties gebruikt in bestandsnamen. Deze worden vervangen door _, underscores. In het genereren van de documentatie worden deze netjes vervangen door spaties zodat de layout er wel mooi en netjes uit ziet!

"},{"location":"community/CONTRIBUTING/#regeleinden","title":"Regeleinden","text":"

Er zijn meerdere manieren om regeleinden (Engels: line endings) te codificeren in bestanden. Voor dit project horen die LF te zijn, zoals gebruikelijk voor de meeste projecten. Hiermee is gegarandeerd dat op Linux, Windows en Mac OSX bestanden op dezelfde wijze worden gepresenteerd en Pull Requests gemakkelijk zijn. Lokaal uitchecken met CRLF (in Windows) en commits met LF is uiteraard toegestaan .. als het resultaat maar met LF in GitHub terecht komt

Zie ook Blog: Mind the End of Your Line en GitHub Help on Line Endings.

"},{"location":"community/CONTRIBUTING/#community","title":"Community","text":"

De OSPO-NL Community is nog in oprichting. Voor dit moment zijn er nog geen offici\u00eble kanalen en samenwerkingsverbanden anders dan actief betrokken personen. Zie ook meer in de over ons.

"},{"location":"community/CONTRIBUTING/#attribution","title":"Attribution","text":"

Een eigen CONTRIBUTING maken is niet echt moeilijk ... en toch ook weer wel. Inspiratie voor deze variant komt van een template en contributing-gen. Genereer zelf (incl. CODE OF CONDUCT) !

"},{"location":"community/LICENSE/","title":"License","text":"

De licentie van het OSPO-NL project staat in de 'root' van de GitHub repo: GitHub.com/ospo-nl/kennisbank

We hebben gekozen voor een 'Creative Commons Attribution 4.0 International' aangezien dit geen code betreft maar alleen documentatie. Zie ook onze best practice over types open source software licenties.

"},{"location":"community/PROJECT_GOVERNANCE/","title":"Project Governance","text":"

Het basis principe is dat beslissingen zijn gebaseerd op consensus. Als een besluitvormingsproces te lang duurt of een beslissing is noodzakelijk, dan heeft de 'Technical Steering Committee' de autoriteit om besluiten te maken.

"},{"location":"community/PROJECT_GOVERNANCE/#technical-steering-committee","title":"Technical Steering Committee","text":"

De Technical Steering Committee (TSC) is verantwoordelijk voor:

  1. Algemene ambities, doelstellingen en doelstellingen van dit project
  2. Richtlijnen en procedures en toolselectie
  3. Keuzes op het gebied van architectuur en (ontwikkelings)infrastructuur
  4. Onderwerpen/kwesties onder de aandacht brengen die van belang zijn voor de sturing/ontwikkeling van dit project

De TSC bestaat uit de volgende leden:

  1. Karel Rietveld
  2. Nico Rikken
  3. Maurice Hendriks
  4. Jonas van den Bogaard
"},{"location":"community/PROJECT_GOVERNANCE/#maintainers","title":"Maintainers","text":"

Maintainers (onderhouders) zijn verantwoordelijk voor het onderhoud van delen van de codebase. Beheerders hebben de volgende verantwoordelijkheden:

  1. Co\u00f6rdineren van de ontwikkelingsactiviteiten
  2. Zorgen dat code-/documentatiebeoordelingen worden uitgevoerd
  3. Co\u00f6rdineren van Pull Requests
  4. Co\u00f6rdineren van opvolging van bugs
  5. Co\u00f6rdineren van vragen
  6. Bij lange discussies of ruzies kunnen onder meer maintainers om een besluit van de community raad vragen.

De huidige maintainers van dit project zijn:

  1. Karel Rietveld
  2. Maurice Hendriks
  3. Jonas van den Bogaard
  4. Nico Rikken
  5. Arash Hoseni
  6. Marc van Andel

Elk community lid of contributor kan een vraag stellen of een issue melden door het toevoegen van een GitHub issue (zie Contribution Guide.

"},{"location":"community/PROJECT_GOVERNANCE/#contributors","title":"Contributors","text":"

Onder Contributors (bijdragers) valt iedereen van de community die bijdraagt aan code, documentatie of andere technische artefacten van het project.

Iedereen kan contributor worden.

Er wordt geen toewijding aan het project verwacht, geen specifieke vaardigheidsvereisten en geen selectieproces. Om een contributor te worden, hoeft een lid van de community alleen maar een of meerdere acties uit te voeren die gunstig zijn voor het project.

"},{"location":"community/SUPPORT/","title":"Support","text":"

.. of ondersteuning in het Nederlands.

Er zijn een paar manieren hoe je in contact kan komen met OSPO-nl community:

  • In de Contributing Guide staat beschreven hoe je een issue kunt aanmaken.
  • ... (en verder is er nog niks anders )
"},{"location":"community/over-ospo-nl/","title":"Over OSPO-NL","text":"

OSPO staat voor Open Source Program Office. De toevoeging NL doelt op de Nederlandse samenwerking om kennis en best practices te delen voor het opzetten en uitvoeren van OSPO's (of OSPOs) bij organisaties in Nederland. Het is niet van belang of deze organisatie commerci\u00eble bedrijven zijn of overheidsinstanties.

Het initiatief van deze community en samenwerking is ontstaan naar aanleiding van de OSPOlogy.live van januari 2023. Dit event werd georganiseerd door de Linux Foundation en gehost door Alliander.

OSPO-NL is een open community welke gestart is door Alliander, Belastingdienst en Kadaster. We verwelkomen graag meer deelnemers zodat kennis en uitvoering van OSPOs in organisaties in Nederland gemakkelijker, sneller en beter wordt. En mogelijk meer gestandaardiseerd. Dat is geen doel op zich ... maar waarom een wiel meerdere keren opnieuw uitvinden

Veel inspiratie en inhoud kan al gevonden worden op de community waar we nauw mee verbonden zijn: TODO Group. We willen daar vooral ook samenwerking mee hebben en gebruik maken van de resources die daar beschikbaar zijn. MAAR ... Nederlandse invulling, vertalingen en specifieke samenwerkingen passen beter in een eigen 'NL chapter', een eigen Nederlands initiatief. Vandaar OSPO-NL

Voor meer informatie over onze community en werkwijze, check onze CONTRIBUTING GUIDE en CODE OF CONDUCT.

"},{"location":"nieuw-project/","title":"Nieuw Open Source Project","text":"

Een nieuw open source project .. wat komt daar allemaal bij kijken?

Start met onze best practice Project Launch Checklist.

Suggesties en tips voor:

  • CODE_OF_CONDUCT.md
  • CONTRIBUTING.md
  • PROJECT_GOVERNANCE.md
"},{"location":"nieuw-project/CODE_OF_CONDUCT/","title":"Code of Conduct","text":"

Een gedragscode in het Nederlands .. maar toch meer bekend als 'Code of Conduct'.

Onze eigen Code of Conduct is gemaakt met behulp van de Contributor Covenant, version 1.4 en 2.0, en is (mede) gegenereerd met contributing-gen.

"},{"location":"nieuw-project/CONTRIBUTING/","title":"Contributing Guide","text":"

Een eigen CONTRIBUTING maken is niet echt moeilijk ... en toch ook weer wel. Inspiratie voor onze eigen CONTRIBUTING komt van een template en contributing-gen. Genereer zelf (incl. CODE OF CONDUCT) !

"},{"location":"nieuw-project/PROJECT_GOVERNANCE/","title":"Project Governance","text":"

Het basis principe is dat beslissingen zijn gebaseerd op consensus. Als een besluitvormingsproces te lang duurt of een beslissing is noodzakelijk, dan heeft de 'Technical Steering Committee' de autoriteit om besluiten te maken.

"},{"location":"nieuw-project/PROJECT_GOVERNANCE/#technical-steering-committee","title":"Technical Steering Committee","text":"

De Technical Steering Committee (TSC) is verantwoordelijk voor:

  1. Algemene ambities, doelstellingen en doelstellingen van dit project
  2. Richtlijnen en procedures en toolselectie
  3. Keuzes op het gebied van architectuur en (ontwikkelings)infrastructuur
  4. Onderwerpen/kwesties onder de aandacht brengen die van belang zijn voor de sturing/ontwikkeling van dit project

De TSC bestaat uit de volgende leden:

  1. TBD
  2. TBD

TBD moet worden ingevuld

"},{"location":"nieuw-project/PROJECT_GOVERNANCE/#maintainers","title":"Maintainers","text":"

Maintainers (onderhouders) zijn verantwoordelijk voor het onderhoud van delen van de codebase. Beheerders hebben de volgende verantwoordelijkheden:

  1. Co\u00f6rdineren van de ontwikkelingsactiviteiten
  2. Zorgen dat code-/documentatiebeoordelingen worden uitgevoerd
  3. Co\u00f6rdineren van Pull Requests
  4. Co\u00f6rdineren van opvolging van bugs
  5. Co\u00f6rdineren van vragen
  6. Bij lange discussies of ruzies kunnen onder meer maintainers om een besluit van de community raad vragen.

De huidige maintainers van dit project zijn:

  1. TBD
  2. TBD

TBD moet worden ingevuld

Elk community lid of contributor kan een vraag stellen of een issue melden door het toevoegen van een GitHub issue (zie Contribution Guide.

"},{"location":"nieuw-project/PROJECT_GOVERNANCE/#contributors","title":"Contributors","text":"

Onder Contributors (bijdragers) valt iedereen van de community die bijdraagt aan code, documentatie of andere technische artefacten van het project.

Iedereen kan contributor worden.

Er wordt geen toewijding aan het project verwacht, geen specifieke vaardigheidsvereisten en geen selectieproces. Om een contributor te worden, hoeft een lid van de community alleen maar een of meerdere acties uit te voeren die gunstig zijn voor het project.

"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..af9f0df --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,113 @@ + + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + + None + 2023-07-20 + daily + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..05fd85ab6a05e5f27abdb710818e7328c9d3e099 GIT binary patch literal 212 zcmV;_04x6=iwFo>-?(G~|8r?{Wo=<_E_iKh0PWU062c%52H@UPF!TY8g^wYmv$WC! zFa#535{Q6CZ!dX_lhOn1HY`6o`?c`$-L>eYeK5`zcuN>Y+A3EWTNn6tJ!c18iVc7I zHt2}bunh%nV(d?p4#Pl#iMo@0AkNn`s3u(kT|&yp5sM8S$XUM2*gnfy8doUW2tq(2gHzySvwaKHfv9B{z@#-}6w OeZ?1fg{x~T3jhFi{9y6` literal 0 HcmV?d00001